Для этого задания вы должны вывести результат суммы некоторых чисел. Что это за цифры? Итак, вам даны входные данные, ( a
, b
), которые являются целыми числами (положительными, отрицательными или нулевыми) a != b
, и a < b
, и каждое целое число в пределах a
и b
(включая их) будет иметь показатели степени в соответствии с числами Фибоначчи. Это сбивает с толку, вот пример:
Input: (-2, 2)
Output: -2**1 + (-1**1) + 0**2 + 1**3 + 2**5 =
-2 + -1 + 0 + 1 + 32 = 30
Учитывая, что первое число Фибоначчи представлено f(0)
формулой:
a**f(0) + ... + b**f(b-a+1)
Ввод, обработка, вывод
Чтобы прояснить вышесказанное, вот несколько тестов, обработка ввода и ожидаемые результаты:
Input: (1, 2)
Processing: 1**1 + 2**1
Output: 3
Input: (4, 8)
Processing: 4**1 + 5**1 + 6**2 + 7**3 + 8**5
Output: 33156
Input: (-1, 2)
Processing: -1**1 + 0**1 + 1**2 + 2**3
Output: 8
Input: (-4, -1)
Processing: -4**1 + -3**1 + -2**2 + -1**3
Output: -4
правила
Стандартные лазейки не допускаются
Экспоненты должны быть в порядке согласно серии Фибоначчи
Код должен работать для вышеуказанных тестов
Только результат должен быть возвращен
Критерии победы
Самый короткий код выигрывает!
0
не входит ли здесь число Фибоначчи?Ответы:
05AB1E , 9 байт
Попробуйте онлайн!
Не работает на TIO для больших расхождений между
a
иb
(EG[a..b].length() > 25
).Но это, кажется, работает для больших чисел, чем средний ответ здесь.
Неэффективно, потому что он вычисляет последовательность Фибоначчи до
n!
, что больше, чем необходимо для вычисления ответа, гдеn
длина последовательностиa..b
.источник
Mathematica,
38 байт37 байт31 байтЭто просто ответ rahnema1, перенесенный на Mathematica. Ниже мое оригинальное решение:
Объяснение:
##
представляет последовательность всех аргументов,#
представляет первый аргумент,#2
представляет второй аргумент. При вызове с двумя аргументамиa
иb
,Range[##]
выдаст список{a, a+1, ..., b}
иRange[#2-#+1]
выдаст список одинаковой длины{1, 2, ..., b-a+1}
. ТакFibonacci
какListable
,Fibonacci@Range[#2-#+1]
даст список первыхb-a+1
чисел Фибоначчи. ТакPower
какListable
, вызов его в двух списках одинаковой длины приведет к его наложению на списки. ЗатемTr
берет сумму.Редактировать: 1 байт благодаря Мартину Эндеру.
источник
Range@##
.Tr[(r=Range@##)^Fibonacci[r-#+1]]&
.Range
дважды должно было быть красным флагом. Благодаря!Python , 49 байт
Рекурсивная лямбда, которая принимает
a
и вb
качестве отдельных аргументов (вы также можете установить первые два числа Фибоначчи,x
иy
, что вы хотите - не преднамеренно, но хорошая функция):Попробуйте онлайн! (включает тестовый набор)
Предложения по игре в гольф приветствуются.
источник
-~a
и не простоa+1
? Я думаю,-~a
это зависит от машины.Perl 6 ,
3230 байт$^a
и$^b
являются двумя аргументами функции;$^a..$^b
это диапазон чисел от$^a
до$^b
, что молнии с экспоненциации путемZ**
с последовательностью Фибоначчи,1, &[+] ... *
.Спасибо Брэду Гилберту за то, что он сбрил два байта.
источник
(1,&[+]...*)
на один байт короче, а пробел послеZ**
не нужен.&infix:<+>
может принимать 0,1 или 2 аргумента. (&[+]
это короткий способ написания&infix:<+>
). WhwhatCode* + *
принимает ровно 2 аргумента. (&[0]() == 0
так что вы должны иметь1
там, чтобы начать последовательность)Максима, 32 байта
источник
Пайк, 11 байт
Попробуй это здесь!
источник
JavaScript (ES7), 42 байта
Прямой порт превосходного ответа Python от @ FlipTack.
источник
Haskell, 35 байт
Использование:
источник
o
в инфиксный оператор, напримерa#b=sum...
.(a,b)
какa?b
то почему бы нам не позволили подготовить его как немедленным[a..b]?f
на(?)=sum.zipWith(^)
?MATL , 23 байта
Попробуйте онлайн! Или проверьте все тестовые случаи .
источник
R, 51 байт
Анонимная функция.
источник
Желе , 13 байт
Попробуйте онлайн!
источник
f(1,25)
работ;). +1Рубин, 46 байт
Ничего особенно умного или оригинального, чтобы увидеть здесь. Сожалею.
источник
ℤ.upto(ℤ)
метод является хорошим напоминанием о красоте поведения всех объектов в Ruby. Дальнейшая игра в гольф оставлена в качестве упражнения для носителей языка Ruby. Вы уже отсканировали codegolf.stackexchange.com/questions/363/… еще?Java 7, 96 байт
Golfed:
Ungolfed:
источник
R, 57 байт
Довольно просто.
gmp::fibnum
это более короткая встроенная функция, но она не поддерживает возврат всей последовательности доn
, чтоnumbers::fibonacci
происходит путем добавления аргументаT
.Сначала у меня было более хитрое решение,
gmp::fibnum
которое оказалось на 2 байта длиннее, чем это решение.источник
scan()
сохранения 6 байт; см. мое опубликованное решение.постоянный ток , 56 байт
Заканчивается для ввода
[1,30]
в течение 51 секунды. Принимает два ввода в две отдельные строки после выполнения и отрицательные числа с начальным подчеркиванием (_
) вместо тире (т.е.-4
будет вводиться как_4
).источник
PHP,
7775 байтберет границы из аргументов командной строки. Беги с
-nr
. сновапоказывать переменные PHP (и то, что я узнал о них) .
сломать
Ответ FlipTack, портированный на PHP, имеет 70 байтов:
источник
Аксиома, 65 байт
код теста и результаты
источник
PowerShell , 67 байт
Попробуйте онлайн!
Нашел немного лучший способ сделать последовательность, но powershell не сравнится с другими языками для этого :)
источник