Loading...

Във форума е въведено ограничение, което позволява на потребителите единствено да разглеждат публикуваните въпроси.

The most powerful word - Help!

Мили хора, помогнете с тази задача :)

 

За Лора думите притежават голяма сила. Тя те моли да измислиш алгоритъм, с който да откриеш коя е "най-силната" дума.До получаване на команда "End of words"ще се четат от конзолата думи. За да се открие силата на всяка една, трябва да се намери сборът от ASCII стойностите на символите, от които се състои думата. Ако започва с гласна буква-'a', 'e', 'i', 'o', 'u', 'y'(или техните еквивалентни главни букви),полученият сбор трябва да се умножи по дължината на думата, в противен случай, да се разделина дължинатаи да се закръгли до най-близкото цяло число надолу.

Вход

До получаване на команда "End of words"се чете по един редот конзолата:думатекст

Изход

След приключване на програмата се печата на един ред думата с "най-голяма сила":"The most powerful word is {думата с най-голяма сила}-{силата на думата}"

Тагове:
0
IrenaRy avatar IrenaRy 5 Точки

Здравей, а някакъв примерен вход и изход има ли? Просто за да знам - аз и други хора, които биха се опитали да я решат - дали сме на прав път преди да даваме решения. .. :)

0
IrenaRy avatar IrenaRy 5 Точки

Опитай този код... на конзолата мисля, че излиза с прости примери. Тези задачи са от най-трудните (поне мен мн ме безпокоят), така че ще е полезно за всички да се види решение :) Както казах, обаче, добре е да има примерен вход и изход. (Разгледай задачите "Coding" - вложени цикли, упражнение и "Name Wars" - вложени цикли, лекция - те са на такъв принцип)

import math

word: str = input()
biggest_sum = 0
the_most_powerful_word = ''

while word != 'End of words':
    first_letter = str( word[0] )
    current_ascii_sum = 0
    current_ascii_sum_after_multiplication_or_division_by_length = 0

    for char in word:
        letter_ascii_value = ord( char )
        current_ascii_sum += letter_ascii_value
        if first_letter == 'a' \
        or first_letter == 'e' \
        or first_letter == 'i' \
        or first_letter == 'o' \
        or first_letter == 'u' \
        or first_letter == 'y' \
        or first_letter == 'A' \
        or first_letter == 'E' \
        or first_letter == 'I' \
        or first_letter == 'O' \
        or first_letter == 'U' \
        or first_letter == 'Y':
            current_ascii_sum_after_multiplication_or_division_by_length = current_ascii_sum * len(word)

        else:
            current_ascii_sum_after_multiplication_or_division_by_length = current_ascii_sum / len(word)

    if current_ascii_sum_after_multiplication_or_division_by_length > biggest_sum:
        biggest_sum = current_ascii_sum_after_multiplication_or_division_by_length
        the_most_powerful_word = word

    word = input()

biggest_sum = math.floor(biggest_sum)
print(f'The most powerful word is {the_most_powerful_word} - {biggest_sum}')
0

Браво :) работи на 100%!

Уж я решавах кажи - речи по същият начин, но нещо не се получаваше.

Не се сетих да сложа вход/изход, тъй като задачата е в джъдж и мислех че лесно може да се открие (изпит 6-7 юли 2019).

Една друга колежка даде много хитро решение:

 

import math

 

word = input()

 

list_of_vowels = ['a', 'e', 'i', 'o', 'u', 'y', 'A', 'E', 'O', 'Y', 'I']

sum = 0

max_sum = 0

powerful_word = ''

 

while word != 'End of words':

#while not word == 'End of words':

    for letter in word:

        sum += ord(letter)

 

    if word[0] in list_of_vowels:

        sum = sum * len(word)

    elif word[0] not in  list_of_vowels:

        sum = math.floor(sum / len(word))

 

    if sum > max_sum:

        #max_sum = max(sum, max_sum)

        max_sum = sum

        powerful_word = word

 

    sum = 0

 

    word = input()

 

if word == 'End of words':

    print(f'The most powerful word is {powerful_word} - {max_sum}')

 

 

 

 

0
29/10/2019 23:12:38

Също така, не разбирам защо ги упоменаваш тези стрингове, те са си стринг по условие.

Ако има някаква друга цел, която не схващам се извинявам.

И така си работи:

 

word = input()
biggest_sum = 0
the_most_powerful_word = ''

while word != 'End of words':
    first_letter = word[0]
0
IrenaRy avatar IrenaRy 5 Точки

Радвам се :) Аз уж погледнах в задачите, ама не съм я мернала.. oops. Даа.. това решение с list_of_vowels ще спести мн време.. :) Стринговете ги упоменавам просто докато търся решение и Пайчарм ме подканя да дефинирам по-добре някои неща (в опит да ми помогне явно)... и понякога просто му цъкам да го направи и той си ги слага; нямат цел. (така стана с първия поне, втория аз си го сложих за всеки случай, още малко ми бягат индексите)

0
30/10/2019 09:40:19
Aleksandar146 avatar Aleksandar146 5 Точки

Ето моето решение на python

from math import floor

word = input()
sum_word = 0
final_sum = 0
most_powerful_word = ""
important_letters = ['a', 'e', 'i', 'o', 'u', 'y', "A", "E", "I", "O", "U", "Y"]

while True:
    if word == "End of words":
        break

    while word != "End of words":
        for letter in word:
            sum_word += ord(letter)

        if word[0] in important_letters:
            sum_word = sum_word * len(word)
        elif word[0] not in important_letters:
            sum_word = floor(sum_word / len(word))

        if sum_word > final_sum:
            final_sum = sum_word
            most_powerful_word = word
        sum_word = 0
        word = input()
if word == "End of words":
    print(f"The most powerful word is {most_powerful_word} - {final_sum}")
1
08/07/2023 21:31:50
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.