Я делаю Beautiful Strings challenge. Я уже знаю, как это сделать, и разработал решение в моей голове. Все правильно, и если я могу заставить метод добавлять и умножать правильно, это должно работать так, как ожидалось, однако у меня есть трудное время, чтобы его добавить и умножить правильно. Что мне нужно, это:Алгоритм красивой строки не умножается правильно
- сосчитать, сколько из тех же букв в строке
- Сохранить этот номер
- Умножить количество чисел, которые находятся в строке по значению буквы
- Возвращает общее
Что я сделал до сих пор:
import string
BEAUTIFICATION = {
"a": 24, "b": 25, "c": 26,
"d": 1, "e": 2, "f": 3,
"g": 4, "h": 5, "i": 6,
"j": 7, "k": 8, "l": 9,
"m": 10, "n": 11, "o": 12,
"p": 13, "q": 14, "r": 15,
"s": 16, "t": 17, "u": 18,
"v": 19, "w": 20, "x": 21,
"y": 22, "z": 23,
}
def strip_string(start_string):
exclude = set(string.punctuation)
new_string = ''.join(ch for ch in start_string if ch not in exclude)
return new_string.replace(" ", "")
def calculate_sum(beautiful_string):
total = []
for c in beautiful_string.lower():
total.append(BEAUTIFICATION[c])
return reduce(lambda x, y: x*y, total)
if __name__ == '__main__':
use_string = strip_string("Good luck in the Facebook Hacker Cup this year!")
print(calculate_sum(use_string)) # Output: 13826822726371628751954609438720000000
# Expected output: 754
Как я могу выполнить вышеизложенное в эффективной питонической манере? То, что у меня до сих пор, будет только умножать совокупность вместе, оно не будет подсчитывать количество символов в строке. Например:
Actualy algorithm: ABbCcc == 1*24 + 2*25 + 3*36 = 152
My algorithm: ABbCcc == 24 * 25 * 25 * 26 * 26 * 26 = 263640000
@RadLexus является то, что лучше? – papasmurf