Последовательность Sumac начинается с двух целых чисел: t 1 и t 2 .
Следующий член, t 3 , = t 1 - t 2
В более общем смысле, t n = t n-2 - t n-1
Последовательность заканчивается, когда t n <0.
Ваша задача: написать программу или функцию, которая печатает длину последовательности Sumac, начиная с t 1 и t 2 .
- t 1 и t 2 - целые числа в диапазоне вашего языка.
- Применяются стандартные лазейки.
Контрольные примеры
t1 t2 sumac_len(t1,t2)
120 71 5
101 42 3
500 499 4
387 1 3
Бонус уличный кредит:
3 -128 1
-314 73 2
Это код-гольф, поэтому выигрывает самый короткий ответ в байтах.
code-golf
sequence
arithmetic
SIGSTACKFAULT
источник
источник
t1
иt2
как вклад? А чтоi
в тестовых примерах?t_1 = t_2 = 0
? Означает ли "бонусный уличный кредит", что мы не должны справитьсяt_1 < 0
илиt_2 < 0
?Ответы:
Шелуха , 8 байт
Принимает ввод в виде списка из 2 элементов. Попробуйте онлайн!
объяснение
источник
Haskell , 22 байта
Попробуйте онлайн!
Мне бы очень хотелось, чтобы был способ сопоставления с образцом для отрицательного числа ...
объяснение
источник
Шелуха ,
1211 байтПопробуйте онлайн!
Получает бонусный уличный кредит за все, что стоит.
объяснение
источник
Рубин , 29 байт
Попробуйте онлайн!
источник
a<b=a-a=b
... Как Руби разбирает это ..?MATL , 13 байт
Это обрабатывает отрицательные входные данные (последние два теста).
Попробуйте онлайн! Или проверьте все тестовые случаи .
объяснение
источник
Brain-Flak ,
14290 байтПопробуйте онлайн!
Не очень коротко Принимает ввод назад.
объяснение
источник
05AB1E , 11 байт
Попробуйте онлайн!
объяснение
Принимает вход как
t2, t1
источник
Mathematica, 55 байт
Попробуйте онлайн!
а теперь обычный скучный подход @totallyhuman
Mathematica, 25 байт
Попробуйте онлайн!
источник
#1
в#
J , 22 байта
Как это работает:
Попробуйте онлайн!
источник
C (gcc) ,
322726 байтов-5 байт благодаря использованию человеком полностью gcc (похоже, работает и на tcc)
-1 байт благодаря PrincePolka
Попробуйте онлайн!
источник
Python 2 , 29 байт
Попробуйте онлайн!
Возвращает True вместо 1 .
источник
JavaScript (ES6), 24 байта
Возвращает истину вместо 1 .
Контрольные примеры
Показать фрагмент кода
источник
f(b)(a-b)
экономить.a<0
? (Pyth , 11 байт
Это рекурсивная функция, которая принимает два аргумента
G
иH
. Ссылка немного изменена для того, чтобы фактически вызвать функцию на заданном входе.Тестирование.
источник
APL (Dyalog) , 23 байта
Попробуйте онлайн!
Как?
2∘
- с начальным аккумулятором 2,-/⍵
- если следующий срок0>
- ниже 0,⍺
- вернуть аккумулятор. в противном случае,(⍺+1)
- увеличить аккумулятор∇
- и рекурсировать с-⍨\⌽⍵
- последние два пункта поменялись местами.источник
Java (OpenJDK 8) , 44 байта
Попробуйте онлайн!
Самая короткая итерация, которую я нашел (50 байт)
Попробуйте онлайн!
источник
постоянный ток , 24 байта
Попробуйте онлайн!
объяснение
источник
Сборка Z80, 10 байт
В этой версии делается попытка сделать «уличную кредитную» версию задачи. Однако для предложенного тестового случая, когда t1 = -314, t2 = 73, эта программа выдает ответ «0», что, честно говоря, имеет немного больше смысла, чем «2».
Тестовую программу для ZX Spectrum 48K, написанную на ассемблере Sjasmplus, можно скачать здесь . Скомпилированный снимок также доступен .
источник
Loop: ret c
вместо этого используется не бонусная версия ?2
результат действительно просто вещь с моей программой.0
это приемлемый ответ для этого теста? Или вы имеете в виду, что было бы лучше изменить мою программу для вывода2
?Java (OpenJDK 8) ,
8575 байтПопробуйте онлайн!
ungolfed:
источник
Common Lisp,
5942 байтаПопробуйте онлайн!
источник
Perl 6 ,
2419 байт-5 байт благодаря Брэду Гилберту b2gills.
Попробуйте онлайн!
Объяснение : Все, что в скобках - это именно та последовательность, о которой идет речь (
|@_
это первые 2 слагаемых (= два параметра),*-*
это функция, которая принимает два аргумента и возвращает их разность, и* <0
является условием остановки (слагаемое меньше 0) Мы опускаем последний член с^
после...
). Затем мы форсируем числовой контекст+
оператором, который определяет длину последовательности.источник
{+(|@_,*-*...^0>*)}
* <0*, but why you don't need it in
0> * `...%h<a>