Решение на Да си приготвим нещо за хапване от Орлин Христов

Обратно към всички решения

Към профила на Орлин Христов

Резултати

  • 6 точки от тестове
  • 0 бонус точки
  • 6 точки общо
  • 10 успешни тест(а)
  • 0 неуспешни тест(а)

Код

def prepare_meal(number):
return add_if(number, meal=prepare_spam(number, base=3, filler='spam'),
condition=lambda x: x % 5 == 0, addition='eggs')
def prepare_spam(number, base=2, filler='spam'):
return ('{} '.format(filler) * power_in(number, base)).strip()
def power_in(number, base=2):
for power in range(0, round(1 + log(number, base))):
if number % base ** (power + 1):
return power
def add_if(number, meal='', condition=lambda x: True, addition='something'):
if not condition(number):
return meal
elif meal == '':
return addition
else:
return '{} and {}'.format(meal, addition)
from math import log

Лог от изпълнението

..........
----------------------------------------------------------------------
Ran 10 tests in 0.001s

OK

История (1 версия и 3 коментара)

Орлин обнови решението на 07.03.2012 02:23 (преди над 8 години)

+def prepare_meal(number):
+ return add_if(number, meal=prepare_spam(number, base=3, filler='spam'),
+ condition=lambda x: x % 5 == 0, addition='eggs')
+
+
+def prepare_spam(number, base=2, filler='spam'):
+ return ('{} '.format(filler) * power_in(number, base)).strip()
+
+
+def power_in(number, base=2):
+ for power in range(0, round(1 + log(number, base))):
+ if number % base ** (power + 1):
+ return power
+
+
+def add_if(number, meal='', condition=lambda x: True, addition='something'):
+ if not condition(number):
+ return meal
+ elif meal == '':
+ return addition
+ else:
+ return '{} and {}'.format(meal, addition)
+
+
+from math import log
+

заради отговора ти на въпроса "Какво трябва да става, ако подадем 0?"

В оригиналния вариант я нямаше,

в малко преработения - я имаше във сегашната power_in под формата:

    if number % base or not number:
        return 0

, за да не върти безкрайна рекурсия. Но тогава add_eggs(0) връщаше яйца и вместо '' при prepare_meal(0) получавах 'eggs'