В традиционном FizzBuzz вас просят напечатать числа от 1 до 100, но замените каждое кратное 3 на «Fizz», каждое кратное 5 на «Buzz», а каждое кратное 3 и 5 (т.е. 15) на « FizzBuzz».
Тем не менее, как злой интервьюер, я изобрел свою собственную искаженную версию FizzBuzz, которую я решил назвать BizzFuzz и дать вам в интервью по кодированию.
Правила игры:
Напечатайте каждое число от 1 до 100, кроме случаев, когда число соответствует одному из следующих условий.
- Если число делится на 4, выведите «Fizz».
Если число делится на 5, выведите «Buzz».
Если число делится на 4, а число сразу после него делится на 5, выведите «FizzBuzz» вместо «Fizz» и регулярно печатайте следующее число.
Если число делится на 5, а число сразу после него делится на 4, выведите «BuzzFizz» вместо «Buzz» и регулярно печатайте следующее число.
Если число находится непосредственно перед числом, кратным 4 и 5, выведите «Bizz».
Если число идет сразу после числа, делимого на 4 и 5, выведите «Fuzz».
Если число делится на 4 и 5, выведите «BizzFuzz».
Самый короткий код для реализации всех этих правил на любом языке выигрывает.
Python, 114
Исходное решение ( 131 ):
источник
Python 2, 131
источник
r
чтобы вычислить его в меньшем количестве символов, в) размещение всего в одной строке:r,F,B,Z,I=1,'Fizz','Buzz','Fuzz','Bizz'\nfor i in range(1,101):a,b=i%4,i%5*4;print~-r and i or{5:Z,19:I,a:B,b:F,3:B+F,16:F+B,0:I+Z}.get(a+b,i);r=3!=a+b!=16
print 1!=a+b!=4
это дьявольское!exec
/eval
Комбо дьявольский;)print{5:Z,19:I,a:B,b:F,3:B+F,16:F+B,0:I+Z,1:i,4:i}.get(a+b,i)
Реализованная ссылочная реализация в Python, которая реализует каждое правило буквально (420 символов):
источник
Питон, 150
Это производная от ответов на мини-версии (ранее), но я выжал из этого достаточно, чтобы сделать свой собственный:
Версия для разглаживания не намного более читабельна, но то,
r
что использовала Minitech, срабатывает только в том случае, если на следующей итерации сумма, еслиa,b
была,1,0
или0,4
, что эквивалентно,i%4 or i%5 == 0
так что она собиралась появиться только в этих обстоятельствах. Таким образом, было возможно удалить назначение и вычислениеr
и вывести его из текущей стоимостиi
использованияa
иb
:Это также включает в себя предложения @ WolframH.
источник
[1,4]
(и используйте(1,4)
или{1,4}
помимо) и до{
.[]
расстоянии. Мне было интересно, почему вы использовали{}
в своем первоначальном ответе.R: 170 символов
источник
Tcl, 185 символов
источник
while
циклы могут быть замененыtime
конструкциями для сохранения байтов