Определение
- а (1) = 1
- а (2) = 1
- a (n) = a (na (n-1)) + a (na (n-2)) для n> 2, где n - целое число
задача
Учитывая положительное целое число n
, генерировать a(n)
.
Testcases
n a(n)
1 1
2 1
3 2
4 3
5 3
6 4
7 5
8 5
9 6
10 6
11 6
12 8
13 8
14 8
15 10
16 9
17 10
18 11
19 11
20 12
Ссылка
- Обязательный OEIS A005185
code-golf
sequence
arithmetic
Дрянная Монахиня
источник
источник
Ответы:
Сетчатка ,
84837974 байтаЧисло байтов предполагает кодировку ISO 8859-1.
Попробуйте онлайн! (Первая строка включает набор тестов, разделенных переводом строки.)
Я буду играть в гольф еще немного позже.
источник
Haskell,
3533 байтаОпределяет функцию
a
.источник
(b.b)1+(b.b)2
будет короче суммы?Юлия, 29 байт
Попробуйте онлайн!
Как это работает
Мы переопределяем унарный оператор
!
для наших целей.Если n равно 1 или 2 ,
n<3
возвращает true, и это наше возвращаемое значение.Если n больше 2 ,
n<3
возвращает false и || ветвь исполняется. Это прямая реализация определения, где~-n
приводит к n - 1 и~-~-n
приводит к n - 2 .источник
Sesos, 54 байта
Попробуйте онлайн
разобранный
Или в обозначении Brainfuck:
источник
C,
4342 байтаСохранено 1 байт благодаря @Dennis
Каждый ответ один и тот же, я должен сделать что-то другое!
Попробуйте онлайн!
Пояснение: это в основном,
a(n-a(n-2))+a(n-a(n-1))
но с нестабильным неопределенным поведением (работает на моем телефоне (gcc) и ideone).источник
1
между?
и:
.$b+=$b[$_-$b[$_-2]]+$b[$_---$b[$_]]
Mathematica, 36 байт
Количество байт принимает ISO 8859-1 кодирование и Mathematica в
$CharacterEncoding
набор дляWindowsANSI
(по умолчанию на Windows; другие параметры могут работать хорошо, но некоторые , как ,UTF-8
безусловно , не делают).Определяет
±
как унарный оператор.Я попытался избавиться от дублирования, но получилось с тем же количеством байтов:
источник
Желе ,
1514 байтПопробуйте онлайн! или проверьте все контрольные примеры (занимает несколько секунд).
Как это работает
источник
Желе ,
141211 байтЭто итеративный подход.
Попробуйте онлайн! или проверьте все контрольные примеры .
Как это работает
источник
Python,
4540 байтПростое наивное толкование задачи.
Сохранено 5 байтов благодаря @LeakyNun!
источник
Haskell,
3937 байтточно так же, как описано в вызове, с использованием охранников
источник
n<3
для того,h 2
чтобы быть1
.R, 50 байтов
Использование:
источник
CJam,
1918 байтовПопробуйте онлайн!
Использует итеративный подход.
источник
C #,
5144 байтаИнтересно, можно ли это сократить, сделав это анонимнымблагодаря pinkfloydx33!источник
int a(int n)=>n<3?1:a(n-a(n-a))+a(n-a(n-2));
-a
в первом наборе паренов должно быть-1
JavaScript (ES6),
45 байт,34 байтаРекурсивное решение в ES6. Любые советы по гольфу очень ценятся.
Спасибо / u / ismillo за сокращение еще больше.
источник
Гольфскрипт, 29 байт
Попробуйте онлайн!
источник
05AB1E, 29 байт
Итеративное решение.
Попробуйте онлайн
источник
APL, 20 байт
Объяснение:
источник
VBA Excel 87 байт
Не рекурсивный, так как я хочу, чтобы это работало для n = 100000, скажем:
... и нажмите
return
(байт # 87) в конце строки, чтобы получитьEnd Function
утверждение "бесплатно". Обратите внимание, что значения B смещены на -1, чтобы избежать инициализации для n = 1 и 2.Вызвать в таблице как обычно, например,
=A(100000)
чтобы получить48157
Рекурсивная версия, 61 байт ,
начинает становиться неоправданно медленным для n> 30, и нельзя сказать, что он работает вообще для n> 40.
источник
Рубин, 36 байт
Прямая реализация. Любые предложения по игре в гольф приветствуются.
источник
a[n-1]
и тому подобное, функция должна быть названа.Java 7,
686151 байт17 спасен благодаря Лики Монахиня.
источник
int a(int n){return n<3?1:a(n-a(n-2))+a(n---a(n));}
но, к сожалению, она использует то же количество байтов, что и у ответа, который у вас уже есть. Также я хотел бы указать, что ваш ответ на Java 7, так как ответ на Java 8 будет короче:n->return n<3?1:a(n-a(n-1))+a(n-a(n-2))
( 39 байт ) ,Оазис ,
975 байт (неконкурирующий)Не конкурирует , так как язык задним числом. Спасибо Кенни Лау за сохранение 4 байта. Код:
Расширенная форма (
V
сокращенно11
):Код:
Попробуйте онлайн! , Вычисляет n = 1000 за 0,1 секунды.
источник
PowerShell v2 +,
857969 байтПринимает ввод
$n
, устанавливает$b
в массив@(1, 1)
, затем входит в цикл из2 .. $n
. Каждую итерацию мы привязываем$b
к последнему вычислению в последовательности с простым+=
и определением последовательности. Затем мы выводим соответствующее число из$b
(с помощью-1
массива в PowerShell с нулевым индексированием). Это работает, если$n
есть1
или2
потому что оба эти значения предварительно заполняются в более низкие индексы$b
с самого начала, поэтому, даже если цикл привязывается к мусору, он все равно игнорируется.Рекурсивное решение
7876 байтВ первый раз я использовал эквивалент лямбды в качестве ответа, так как обычно итеративное решение короче (как вы можете видеть из всех вложенных паренов).
Но в этом случае вложенные парены почти дублируются в итеративном решении вызовами вложенного массива, поэтому рекурсивное решение короче.Нет, итеративное решение действительно короче (см. Выше).Назовите это через оператор выполнения, как
&$a 20
. Просто прямой рекурсивный вызов.источник
JavaScript (ES6), 66 байт
Нерекурсивная версия для скорости; рекурсивная версия, вероятно, короче, но я оставлю это кому-то другому, чтобы написать. Мне всегда нравится, когда я использую
reduce
. Примечание: 1 байт сохраняется путем возвратаtrue
(который1
используется при использовании в целочисленном контексте) для ofa(1)
иa(2)
.источник
Pyth, 16 байт
Определяет функцию
y
.Попробуйте онлайн (добавлено,
yMS20
чтобы напечатать первые 20 значений)источник
Далее 76 байт
Я наконец получил это работает!
Попробуйте онлайн
Объяснение:
Попробуйте онлайн (слегка не в гольф сверху)
К сожалению, взаимная рекурсия немного слишком многословный , чтобы использовать для игры в гольф.
источник
Клен,
4341 байтИспользование:
Эта проблема, безусловно, хороший кандидат на запоминание. Используя кеш опций , время выполнения значительно сокращается:
Это можно увидеть с помощью:
источник
J,
2928 байтИспользует рекурсивное определение.
использование
Дополнительные команды используются для форматирования нескольких входов / выходов.
объяснение
источник
постоянный ток, 62 байта
Это решение использует массивы и рекурсию.
источник
dc
, дайте мне знать!Эрланг, 46 байт
источник
Луа, 59 байт
источник