Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

KUB another solution #13

Closed
fagci opened this issue Oct 14, 2021 · 4 comments
Closed

KUB another solution #13

fagci opened this issue Oct 14, 2021 · 4 comments

Comments

@fagci
Copy link

fagci commented Oct 14, 2021

for k in range(10):

for num in range(100, 1000):
    kub = set(str(num))
    if len(kub) == 3 and sum(map(int, kub))**3 == num:
        print(f'({"+".join(kub)})^3 = {num}')
@gil9red
Copy link
Owner

gil9red commented Oct 14, 2021

@fagci, спасибо за предложение решения, но оно не проходит тест :)
изображение

Причины, думаю 2:

  • Пробелы вокруг =, из-за чего не был соблюден формат вывода
  • Значение переменных K, U, B неправильные. Да, результат одинаковый, но тут еще порядок нужен.
    В условии дано уравнение (K+U+B)^3=KUB, каждая буква - отдельная цифра.
    Ваш код выдает: (2+5+1)^3=512, что не сходится, т.к. слева у вас K = 2, а справа K = 5
    Правильное решение:
    (5+1+2)^3=512
    

@fagci
Copy link
Author

fagci commented Oct 14, 2021

Ещё пару раз запустить без пробелов вокруг = и пройдёт =D
Да, не учёл что набор передаю в join. Тогда так:

for num in range(100, 1000):
    kub = set(str(num))
    if len(kub) == 3 and sum(map(int, kub))**3 == num:
        print(f'({"+".join(str(num))})^3={num}')

Ваш код конечно понятнее и быстрее, но есть 2 момента:

  1. первый цикл можно делать с 1, тогда не нужна будет проверка < 100
  2. > 999 лишнее, т.к. максимальное число с учётом range 999

// кстати, на https://www.codewars.com/ есть система оценки вариантов решений. Можно увидеть самое "крутое" по оценкам.

@gil9red
Copy link
Owner

gil9red commented Oct 14, 2021

@fagci, спасибо за замечания, подправил :)
Кст, если придираться, то можно прийти к таком условию перебора:

for num in range(102, 987+1):

Ведь цифры в K, U, B должны быть разные, поэтому начинаться с 100 и заканчиваться на 999 точно не может :D

@fagci fagci closed this as completed Oct 14, 2021
@gil9red
Copy link
Owner

gil9red commented Oct 14, 2021

Предложенный алгоритм добавил в (K+U+B)^3=KUB v2.py

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants