Фибоначчи + FizzBuzz = Фибоначчи!
Ваша задача - создать программу Fibo Nacci!
- Программа Фибоначчи выводит первые 100 чисел Фибоначчи (начиная с 1).
- Если число Фибоначчи делится на 2 и 3 (т.е. оно делится на 6), то вместо числа выведите FiboNacci.
- В противном случае, если число Фибоначчи делится на 2, выведите число Фибоначчи вместо числа.
- В противном случае, если число Фибоначчи делится на 3, выведите Nacci вместо числа.
правила
- Программа не должна принимать никаких данных.
- Программа должна выводить новую строку (
\n
) после каждой записи. - Программа не должна ничего печатать в STDERR.
- Программа должна вывести первые 100 записей Фибоначчи (начиная с 1).
- Стандартные лазейки не разрешены (по умолчанию).
- Это код-гольф, поэтому выигрывает самый короткий код в байтах!
Вот ожидаемый результат:
1
1
Fibo
Nacci
5
Fibo
13
Nacci
Fibo
55
89
FiboNacci
233
377
Fibo
Nacci
1597
Fibo
4181
Nacci
Fibo
17711
28657
FiboNacci
75025
121393
Fibo
Nacci
514229
Fibo
1346269
Nacci
Fibo
5702887
9227465
FiboNacci
24157817
39088169
Fibo
Nacci
165580141
Fibo
433494437
Nacci
Fibo
1836311903
2971215073
FiboNacci
7778742049
12586269025
Fibo
Nacci
53316291173
Fibo
139583862445
Nacci
Fibo
591286729879
956722026041
FiboNacci
2504730781961
4052739537881
Fibo
Nacci
17167680177565
Fibo
44945570212853
Nacci
Fibo
190392490709135
308061521170129
FiboNacci
806515533049393
1304969544928657
Fibo
Nacci
5527939700884757
Fibo
14472334024676221
Nacci
Fibo
61305790721611591
99194853094755497
FiboNacci
259695496911122585
420196140727489673
Fibo
Nacci
1779979416004714189
Fibo
4660046610375530309
Nacci
Fibo
19740274219868223167
31940434634990099905
FiboNacci
83621143489848422977
135301852344706746049
Fibo
Nacci
Каталог
Закуска Стек Сниппает в нижней части этого поста генерирует каталог из ответов а) в виде списка кратчайшего раствора на язык и б) в качестве общих лидеров.
Чтобы убедиться, что ваш ответ обнаружен, начните его с заголовка, используя следующий шаблон уценки:
## Language Name, N bytes
где N
размер вашего представления. Если вы улучшите свой счет, вы можете сохранить старые результаты в заголовке, вычеркнув их. Например:
## Ruby, <s>104</s> <s>101</s> 96 bytes
Если вы хотите включить в заголовок несколько чисел (например, потому что ваш результат равен сумме двух файлов или вы хотите перечислить штрафы за флаг интерпретатора отдельно), убедитесь, что фактический результат является последним числом в заголовке:
## Perl, 43 + 2 (-p flag) = 45 bytes
Вы также можете сделать имя языка ссылкой, которая будет отображаться во фрагменте кода:
## [><>](http://esolangs.org/wiki/Fish), 121 bytes
источник
Ответы:
Pyth, 37 байт
Я перебираю числа Фибоначчи вместо того, чтобы генерировать их заранее, так как это действительно мало.
Попробуйте онлайн.
источник
Python 2, 62 байта
Не сильно отличается от стандартного FizzBuzz, правда.
источник
C ++ 11 метапрограммирование, 348 байт
Потому что, почему бы и нет. Он компилируется
warning C4307: '+': integral constant overflow
, работает нормально, но 93+ числа Фибоначчи не отображаются правильно (из-за переполнения), поэтому это недопустимая запись (но я не смог выиграть с таким количеством байтов)Ungolfed
источник
template <char H, char ...T>
) в ваших шаблонах для (теоретически) обработки значений произвольной длины. Тогда нужно просто изучить последние 2 символа в каждой строке, чтобы определить делимость на 2 и / или 3.__uint128_t
, возможно.C #,
175 171 152145 байтовнесжатый:
источник
==0
s на>0
и инвертируя троичные:class c{static void Main(){for(System.Numerics.BigInteger a=1,b=1,c=0;c++<100;b=a+(a=b))System.Console.WriteLine(a%6>0?a%2>0?a%3>0?a:(object)"Nacci":"Fibo":"FiboNacci");}}
decimal a=1,b=1
наdynamic a=1m,b=a
и затем вы можете потерять(object)
:)Oracle SQL, 212 байт
Не язык игры в гольф, но я должен был попробовать ...
Объединение всех строк с помощью
\n
:SQLFIDDLE
Или с одной записью из последовательности на строку (162 байта):
источник
The program should output a new line (\n) after every entry
я оставлю его как более длинный код, но более короткий код можно сделать совместимым (без использования CLI), добавив||CHR(13)
перед финальнымFROM
для 171 персонажа."\n"
? Кажется, работает на MySQL. («Бег»select length("\n")
возвращает 1, а «Бег»select "\n"
не возвращаетсяn
, как и в случае «select "\p"
возврата»p
из-за недопустимого побега)SELECT LENGTH('\n') FROM DUAL
выводит2
в Oracle как'\n'
не конвертируется вCHR(13)
.ShapeScript , 83 байта
Попробуйте онлайн!
источник
Java,
407398351308 байтИгра в гольф с помощью @Geobits и @SamYonnou
Распространить слово:
Verbose == Java
Безголовая версия:
источник
java.math.*
вместо всего этого. Используйте константы для BigIntegersONE
иZERO
вместо нихnew
. Удалитьpublic
из класса. Упакуйте все, кромеprintln
утверждения вfor
теле внутри объявления цикла и т. Д. Я рекомендую просмотреть советы по игре в гольф на Java в целом.BigInteger
его различными техниками игры в гольф.import java.math.*;class A{public static void main(String[]w){BigInteger a=BigInteger.ZERO,b=a.flipBit(0),c,z=a,t=a.flipBit(1),h=t.flipBit(0),s=t.flipBit(2);for(int i=0;i<100;i++){System.out.println(b.mod(s).equals(z)?"FiboNacci":b.mod(t).equals(z)?"Fibo":b.mod(h).equals(z)?"Nacci":b);c=a;a=b;b=c.add(b);}}}
BigInteger
всегда возвращается,BigInteger.ZERO
когда какая-то операция типаadd(...)
оценивается как ноль, так что вы можете использовать==
вместо.equals(z)
, также вы можете покончить с сохранениемs=t.flipBit(2)
(6) и вместо этого выполнить какое-то умное внутреннее назначение, например, так:import java.math.*;class A{public static void main(String[]w){BigInteger a=BigInteger.ZERO,b=a.flipBit(0),c,d,z=a,t=a.flipBit(1),h=t.flipBit(0);for(int i=0;i<100;i++){System.out.println((c=b.mod(t)).add(d=b.mod(h))==z?"FiboNacci":c==z?"Fibo":d==z?"Nacci":b);c=a;a=b;b=c.add(b);}}}
эти изменения уменьшают его до 280Verbose.isEqualTo(Java)
Mathematica, 80 байт
Адаптация моего старого решения FizzBuzz.
источник
Echo
наPrint
.Рубин,
7166 байтungolfed:
источник
f,n=%w[Fibo Nacci]
,f,n='Fibbo','Nacci'
Иf='Fibbo';n='Nacci'
все они имеют один и тот же количество символов. +1[b,f='Fibo',n='Nacci',f,b,f+n][~b%6]
, и еще два, удалив скобки вa=b+b=a
.~
оператором. Никогда раньше не видел. И теперь я знаю, почему отрицательные индексы являются частью рубина :)puts [
вместоputs[
?> <> , 116 байт
Попробуйте онлайн!
источник
3%
разделаПиф, 39
Очень похоже на стандартное решение fizzbuzz, только с генератором для чисел Фибоначчи.
Попробуй здесь
источник
C #,
498392320 байтЯ просто очень хотел сделать это с помощью linq, очень жаль, что мне пришлось написать собственную функцию суммирования для BigInteger, которая действительно убила его :-(
Ungolfed:
Редактирование: до 320 байт благодаря LegionMammal978 за совокупное предложение и благодаря ответу olegz на C # за сокращение x% 6 для X% 2 && x% 3, а также использованию троичных операторов в одном операторе WriteLine.
источник
Aggregate
функции LINQ?Python 2,
171121 байт«Грубая сила подхода».
источник
Javascript,
93 9086 байтисточник
a=[b,b=a+b][0]
наb=a+b,a=b-a
. Кроме того, в совершенно несвязанной заметке мне нравится, как ты отвечаешь очень быстро в Stack Overflow, хе-хе,Python 2, 100 байт
Для больших чисел, добавляет
L
в конец, показывая, что это длинное число.Если это проблема, вот 104-байтовое решение
источник
for
цикл, используя этот совет: codegolf.stackexchange.com/a/5047/42736 . В частности,exec
совет выглядит хорошо.exec <program_string>*n
трюк. Приятно!Javascript (ES6),
137134 байтаРекурсивная функция, которая вычисляет fibonnacci, помещает его в массив, затем выводит Fibo, Nacci или число и вызывает себя для вычисления следующего до 100.
Это ломается в 73 из-за точности числа JavaScript. Единственный способ обойти это - добавить свой собственный расчет битов.
источник
5527939700884757 + 8944394323791464 = 14472334024676220
как это должно быть,14472334024676221
потому что JavaScript использует 16-битную точность с плавающей точкой, а это требует 17-битной точности. Вы также должны напечатать1
дважды.QBasic,
144141 байтНе особенно маленький, но он превосходит C ++ и C #
Нет объявлений, используется
:
везде, где это возможно, потому что это на 1 байт дешевле, чемCRLF
. К счетчику цикла добавляется 0: Basic будет переполнен на 47-м символе Фибоначчи, поэтому будет компенсирован дополнительный байт, который должен быть там.РЕДАКТИРОВАТЬ: Нил спас меня 3 байта: 141 байт.
источник
a$+
так как на данный момент известно, что это пустая строка.Wolfram Language, 84 байта
Вид обмана конечно, из-за встроенного
Fibonacci
.Пример команды для запуска скрипта
источник
Perl, 74 байта
Требуется следующая опция командной строки:,
-lMbigint
считается 8.Образец использования
Perl, 79 байт
То же, что и выше, не требуя никаких параметров командной строки.
источник
GolfScript, 47 байт
объяснение
источник
PARI / GP,
7673 байтаСохраненные три байта любезно предоставлены Митчем Шварцем .
Образец использования
источник
for(i=b=!a=1,99,b=a+a=b; ...
fibo
;)> <>,
128119 байтЯ
бесстыдно укралзаимствованную существующую программу FizzBuzz и модифицировал ее так, чтобы она работала для последовательности Фибоначчи.Это выводит числа навсегда.Теперь это исправлено, т.е. выводит только 100 номеров. Попробуй это здесь .источник
Pyth, 51 байт
Создает последовательность Фибоначчи, а затем решает, что печатать.
Чтобы проверить, попробуйте это (только первые 20 чисел)
источник
Clojure, 127 байт
Ungolfed:
Некоторые хитрости используются:
def
что дает саму последовательность Фибоначчи, бесстыдно украдено у Конрада Гаруса .str
может принимать символы в качестве входных данных. Сумасшедший, верно?if
в некоторых случаях.источник
lazy-cat
?[1 1]
) с результатом суммирования каждого элемента в последовательности Фибоначчи с последующим элементом.fibs = 0 : 1 : zipWith (+) fibs (tail fibs)
?CJam, 44 байта
Попробуйте онлайн в интерпретаторе CJam .
источник
постоянный ток,
1008979 байтВдохновленный http://c2.com/cgi/wiki?DeeCee
источник
Javascript (ES2015), 99 байт
Ungolfed:
источник
alert
вместоconsole.log
; сбривает несколько байтов.F #,
202 163149 байтЭто файл FSX (F # script)
источник
PHP, 75 байт
Удивительно конкурентоспособный. Требует PHP v5.5 или выше. Я предполагаю настройки по умолчанию, так как они без .ini (вы можете отключить локальный .ini с помощью
-n
опции).Образец использования
источник
-n
bcadd
не работает даже когдаbcmath
установлен. Без-n
большого количества материала выводится на stderr.Пролог, 182 байта
Попробуйте онлайн здесь.
Чтобы запустить программу, используйте запрос:
источник