| |||
![]()
|
![]() ![]() |
![]()
[Перевод] Решение Fizzbuzz при помощи теоремы Эйлера ![]() FizzBuzz — это известная задачка на программирование, которую обычно дают в технической части собеседований. Она формулируется примерно так: Напишите функцию, выводящую список целых чисел от 1 до 100, но вместо каждого числа, кратного 3, она должна выводить «Fizz», а вместо каждого числа, кратного 5, выводить «Buzz». Вместо чисел, кратных и 3, 5, программа должна выводить «FizzBuzz»; все остальные числа должны выводиться без изменений. Можно написать функцию, вообще не использующую условную логику и вместо этого разделяющую целые числа на 4 возможные категории (обычное решение оставим в качестве упражнения заинтересованному читателю):
Нам нужна функция, которая будет возвращать:
Рассмотрим реализацию такой функции на Python:
Та же функция на Ruby:
Как мы и ожидали, каждая из этих функций возвращает список целых чисел от 1 до 100 с подставленными в нужные места «Fizz», «Buzz» и «FizzBuzz». Но почему? Откуда взялись постоянные значения 0, 6, 10 и 1? Почему возвращает 6 для чисел, кратных 3, но не 5, 10 для чисел, кратных 5, но не 3, 0 для чисел, кратных 5 и 3 и 1 во всех остальных случаях? И самое важное — справедливо ли это для любого , которое мы выберем? Читать дальше → |
||||||||||||||
![]() |
![]() |