Учитывая N (2 <= N ), выведите N строк буквенного ряда Фибоначчи следующим образом (т.е. N = 5). Сначала начните с a
и b
:
a
b
Затем добавьте две строки.
a
b
ab
Продолжайте добавлять последние две строки.
a
b
ab
bab
Продолжай идти...
a
b
ab
bab
abbab
И мы сделали.
Remmeber, это код-гольф , поэтому выигрывает код с наименьшим количеством байтов.
Ответы:
Python 2, 41 байт
Сохранено 3 байта благодаря @xnor
Тест на идеоне
Просто следует рекурсивному определению.
источник
a,b="ab";exec"print a;a,b=b,a+b;"*input()
.Haskell,
293532 байтаПростая рекурсия.
Для справки: старая версия (адаптация этого ответа ) соединяла строки в неправильном порядке, поэтому мне пришлось добавить строку,
flip(...)
которая делала ее слишком длинной (35 байт).источник
["b","a","ab","aba","abaab"]
05AB1E ,
1211 байтСпасибо Emigna за сохранение байта!
Использует кодировку CP-1252 . Попробуйте онлайн!
источник
̓
может быть так же,G
как вы не используетеN
:)Желе ,
1110 байтПопробуйте онлайн!
Как это работает
источник
”a”b;@Ṅ
часть вниз, но я не мог понять, куда идти дальше ... теперь я знаю :-)Java 7, 69 байт
ungolfed
источник
a
иb
. Я не уверен , что если"a"
и"b"
параметры должны быть засчитаны байт-счетчик , хотя, так как этот вопрос конкретно указывается , что следует использоватьa
иb
. Не то чтобы Java когда-нибудь победила. ;)"a"
и"b"
) вместо 69, потому что в запросе специально запрашиваетсяa
иb
, и в настоящее время используется метод snip-code / метод переменный ввод. Не уверен, каковы правила в отношении чего-то подобного, но я лично считаю, что это следует учитывать. В противном случае вы могли бы в некоторых языках иметь функцию, которая выполняет функцию параметра, а затем просто передать всю функцию вызова в параметре, не считая его байты. Походит на стандартную лазейку типа правила.Emacs,
26, 25-и клавишные нажатияпрограмма
#nбыть прочитанным как ключ с цифрой (ами) n :
ARETBRETF3UPUPC-SPACEC-EM-WDOWNDOWNC-Y UPC-AC-SPACEC-EM-WDOWNC-EC-YRETF4C-#(n-2)F4
объяснение
С n = 10
источник
JavaScript (ES6),
4342 байтаСохраненный байт благодаря @Arnauld
источник
CJam,
1917 байтобъяснение
источник
p
должен быть;
. Вы можете избавиться от кавычек вокруг вывода, если вы используетеn
вместоp
. Наконец,'a'b
сохраняет два байта"a""b"
.V , 18 байт
Попробуйте онлайн!
Или более читаемая версия:
Объяснение:
источник
MATL , 14 байтов
Попробуйте онлайн!
источник
Python 2, 55 байт
источник
Сетчатка , 33 байта
Попробуйте онлайн!
Сохранено 10 (!) Байтов благодаря @ MartinEnder !
объяснение
Преобразует входные данные в унарные, вычитает
2
и добавляетa
иb
, а затем рекурсивно заменяет оставшиеся1
s конкатенацией двух предыдущих строк.источник
$%`
! и этот другой захват был просто плохим планированием ... Удивительно, спасибо!Пакетная,
10293 байтаК счастью, переменные раскрываются для каждой строки до того, как назначения вступят в силу, поэтому я могу установить оба
a
иb
использовать их старые значения, не требуя временных. Изменить: Сохранено 9 байтов благодаря @ nephi12.источник
for /l %%i in (2,1,%1) etc..
@set a=a&set b=b
как вы делали с последней. хотя технически они все могли бы быть на одной линии ... но это было бы ужасно ... хм ...Stack my Golf, 63 байта
Получите мой язык здесь: https://github.com/cheertarts/Stack-My-Golf .
Существует, вероятно, более короткий путь, но это наиболее очевидный.
источник
Perl,
3635 байтВключает +3 для
-n
Дайте рассчитывать на STDIN
fibo.pl
источник
Perl, 45 +1 = 46 байт
+1 байт для флага -n
Небольшое улучшение по сравнению с существующим 49-байтовым решением, но разработанное отдельно. Скобки
say($a)
необходимы, потому что в противном случае он интерпретируется$a,($a,$b)=($b,$a.$b)
как аргумент,say
который выводит больше мусора, чем нам нужно.Perl, 42 байта
Отдельный подход от вышеуказанного решения:
Я еще не уверен, что не смогу объединить транслитерацию и замену в одну более короткую операцию. Если я найду один, я отправлю это.
источник
Swift 3, 76 байт
источник
Perl, 48 байт
47 байт код + 1 для
-n
.Простой подход Попробуйте сначала использовать фрагмент массива,
$a[@a]="@a[-2,-1]"
но в этом есть необходимость$"=""
или что-то подобное :(. Сохраните 1 байт благодаря @ Dada !использование
источник
@;
вместо,@a
чтобы опустить последнюю точку с запятой (понимаете, что я имею в виду?). (Я знаю, один байт довольно дешев, но у меня не было лучшей идеи ..)perl -pe '@;=(a,b);$;[@;]=$;[-2].$;[-1]for 3..$_;say for@' <<< 5 syntax error at -e line 1, at EOF Execution of -e aborted due to compilation errors.
но не думал, что было бы справедливо добавить ответ, если я не смогу заставить его работать!-pe
вместо-nE
? В любом случае, это работает на моем, так что, вероятно, это связано с вашей версией Perl или системой ... Но поверьте мне, я проверил это, и это работает! ;)-nE
(не знаю, откуда-pe
пришел! Должно быть, в пятницу ...) Я обновлю это, когда получу мо! Спасибо, что поделился!SOML , 8 байт (не конкурирует)
объяснение:
Причина, по которой это не конкурирует, заключается в том, что этот язык все еще находится в разработке, и я добавил несколько новых функций при написании этого.
Кроме того, 1-й пост на PPCG!
источник
05AB1E, 15 байтов
источник
C 156 байт (без отступа)
Два буфера (u & v) хранят последние две строки. Самая новая строка (отслеживаемая двумя указателями: start = c, end = d) добавляется к самой старой (start = a, end = b). Поменяйте местами (a, b) и (c, d) и выполните цикл. Обратите внимание на размер буфера, прежде чем запрашивать слишком много строк. Не так коротко (как и ожидалось от языка низкого уровня), но было весело писать код.
источник
5
но это должен быть пользовательский вводGiven N (2 <= N), print N lines of the letter Fibonacci series like this (i.e. N = 5)
N
и не фиксированный. Или пользователь может быть кем-то, кто использует вашу функцию / программу.PHP,
6362 байтаРекурсивная версия:
источник
return
Pyth , 17 байт
Программа, которая принимает ввод целого числа и печатает результат.
Попробуйте онлайн!
Как это работает
источник
Pyth -
1615 байтПопробуйте это онлайн здесь .
источник
APL, 30 байт.
⎕IO
должно быть1
.источник
Mathematica, 49 байтов
Определяет функцию,
g
принимающую один числовой ввод; возвращает список строк. Простая рекурсивная реализация с использованием оператора объединения строк<>
.Mathematica, 56 байт
Безымянная функция, тот же формат ввода / вывода, что и выше. Это решение использует альтернативный способ генерации строк: каждая строка в списке является результатом одновременной замены в предыдущей строке всех вхождений «a» на «b» и всех вхождений «b» на «ab».
источник
Groovy, 79 байт
источник
PHP, 53 байта
источник
$b
строку.C ++ 11,
8998 байт+7 байт для всех строк, а не только для последней. +2 байта больше за
N
количество напечатанных строк, а не за 0.Использование:
источник
Рубин (1,9+) 46 байт
источник