Codegolf - Показатели Фибоначчи

  • Автор темы Leostan
  • Обновлено
  • 21, Oct 2024
  • #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
 
, a**f(0) + ... + b**f(b-a+1) ), которые являются целыми числами (положительными, отрицательными или нулевыми) , f(0) , and Input: (-2, 2) Output: -2**1 + (-1**1) + 0**2 + 1**3 + 2**5 = -2 + -1 + 0 + 1 + 32 = 30 , и каждое целое число внутри b and a (включая их) будут иметь показатели степени согласно числам Фибоначчи. Это сбивает с толку, поэтому вот пример:

a < b

Учитывая, что первое число Фибоначчи представлено формулой a != b , the formula is:

b

Ввод, обработка, вывод

Чтобы прояснить вышеизложенное, вот несколько тестовых примеров, обработка входных данных и ожидаемые выходные данные:

a

Правила

  • Стандартные лазейки не допускаются

  • Экспоненты должны быть упорядочены в соответствии с рядом Фибоначчи.

  • Код должен работать для приведенных выше тестовых случаев

  • Необходимо вернуть только вывод

Критерии победы

Самый короткий код выигрывает!

#код-гольф #математика #фибоначчи

Leostan


Рег
19 Feb, 2008

Тем
85

Постов
186

Баллов
621
  • 26, Oct 2024
  • #2

Mathematica, 38 байт 37 байт 31 байт

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
  v          # for y in...
Ÿ           # [a, ..., b] (implicit input)

m    # push...

y         # current item in list

m    # to the power of...

Åf     # the...

N>       # current index in list...

Åf     # th Fibonacci number

}   # end loop

O  # push sum(stack)

# implicit output
 

Это всего лишь ответ Rahnema1, перенесенный в Mathematica. Ниже мое оригинальное решение:

a

Объяснение:

b represents the sequence of all the arguments, ŸvyN>Åfm}O представляет первый аргумент, òV ËpMgEÄ represents the second argument. When called with two arguments -x и $e=1;$args[0]..$args[1]|%{$s+=("$_*"*$e+1|iex);$e,$f=($e+$f),$e};$s , (74) -> f(1,2) (74) 3 Type: Fraction Integer (75) -> f(4,8) (75) 33156 Type: Fraction Integer (76) -> f(-1,2) (76) 8 Type: Fraction Integer (77) -> f(-4,-1) (77) - 4 Type: Fraction Integer (78) -> f(3,1) >> Error detected within library code: reducing over an empty list needs the 3 argument form protected-symbol-warn called with (NIL) дам список f(a,b)==reduce(+,[i^fibonacci(j)for i in a..b for j in 1..b-a+1]) and function f($a,$b,$x=1,$y=1){return$a>$b?0:$a**$x+f($a+1,$b,$y,$x+$y);} даст список одинаковой длины for($b=$argv[$$x=0}=1]; # $"" to 1st Fibonacci and base to 1st argument $b<=$argv[2]; # loop $b up to argument2 inclusive ${$x=!$x} # 5. toggle $x, 6. store to $1/$"" =${""}+${1} # 4. compute next Fibonacci number ) $s+=$b++** # 2. add exponential to sum, 3. post-increment base $$x; # 1. take current Fibonacci from $""/$1 as exponent echo$s; # print result . Since -nr является for($b=$argv[$$x=1];$b<=$argv[2];${$x=!$x}=${""}+${1})$s+=$b++**$$x;echo$s; , _4 дам список первых -4 Fibonacci numbers. Since _ является [1,30] , calling it on two lists of equal length will thread it over the lists. Then ?sf?sa0dsbsg1sc[lblcdlfrdsb^lg+sg+sclf1+dsfla!<d]dsdxlgp берет сумму.

Изменить: сохранен 1 байт благодаря Мартину Эндеру.

 

Xyz2005


Рег
20 Dec, 2008

Тем
72

Постов
202

Баллов
592
  • 26, Oct 2024
  • #3

Питон, 49 байт

Рекурсивная лямбда, которая принимает x=scan();for(i in x[1]:x[2])F=F+i^gmp::fibnum((T<-T+1)-1);F and gmp::fibnum в качестве отдельных аргументов (также можно задать первые два числа Фибоначчи, T and numbers::fibonacci , как хотите - не нарочно, но приятная особенность):

n

Попробуйте онлайн! (включая набор тестов)

Предложения по игре в гольф приветствуются.

 

FoniInsibia


Рег
24 Oct, 2020

Тем
65

Постов
198

Баллов
533
  • 26, Oct 2024
  • #4

Перл 6, 32 30 байт

gmp::fibnum

x=scan();sum((x[1]:x[2])^numbers::fibonacci(diff(x)+1,T)) and int n(int a, int b) { int x = 1, y = 1, z = 0, s = 0; while (a <= b) { s += Math.pow(a++, x); z = x + y; x = y; y = z; } return s; } — два аргумента функции; int n(int a, int b){int x=1,y=1,z=0,s=0;while(a<=b){s+=Math.pow(a++,x);z=x+y;x=y;y=z;}return s;} is the range of numbers from ->a,b{n=s=0;m=1;a.upto(b){|x|s+=x**n=m+m=n};s} к rJÆḞ*@rS - Main link. Takes a on the left and b on the right r - Range from a to b J - Length range of that ÆḞ - n'th Fibonacci number of each r - Range from a to b *@ - Raise each to the power of the Fib numbers S - Sum , which is zipped with exponentiation by rJÆḞ*@rS с последовательностью Фибоначчи, .= Rangify input (inclusive) z^ Zipped with exponentiation to [1 1{+ The fibonacci sequence, closing }] implied Then take the sum .

Спасибо Брэду Гилберту за сокращение двух байтов.

 

Jedeye


Рег
01 Aug, 2006

Тем
78

Постов
201

Баллов
601
  • 26, Oct 2024
  • #5

Максима, 32 байта

.=z^[1 1{+ ||answer||

Пайк, 11 байт

gŸ▀<Çúì═

Попробуйте здесь!

-x ||answer||

JavaScript (ES7), 42 байта

> Input > Input > fₙ >> 1…2 >> #4 >> 3ᶠ5 >> L*R >> Each 7 4 6 >> ∑8 >> Output 9

Прямой порт превосходного ответа @FlipTack на Python.

 

OliverQ


Рег
25 Jul, 2014

Тем
76

Постов
185

Баллов
585
  • 26, Oct 2024
  • #6

Хаскель, 35 байт

ạµ1+⁸С0 r*çS

Использование:

function(a,b)sum((a:b)^numbers::fibonacci(b-a+1,T)) ||answer||

05AB1E, 9 байт

Σz^İf… … rangify the input z^ zip using the power function İf using the fibonacci numbers Σ sum the result

Попробуйте онлайн!

Σz^İf…

Не работает на TIO при больших расхождениях между &: % Binary range between the two implicit inputs: [a a+1 ... b] ll % Push 1, 1. These are the first two Fibonacci numbers &G % Push a, b again w- % Swap, subtract: gives b-a XJ % Copy to cilipboard J q: % Array [1 2 ... b-a-1] " % For each (repeat b-a-1 times) yy % Duplicate the top two numbers in the stack + % Add ] % End J % Push b-a Q % Add 1: gives b-a+1 $ % Specify that the next function takes b-a+1 inputs h % Concatenate that many elements (Fibonacci numbers) into a row vector ^ % Power, element-wise: each entry in [a a+1 ... b] is raised to the % corresponding Fibonacci number s % Sum of array. Implicitly display and &:ll&Gw-XJq:"yy+]JQ$h^s (НАПРИМЕР. a..b ).

Но, похоже, это работает для больших чисел, чем средний ответ здесь.

Неэффективно, поскольку вычисляет последовательность Фибоначчи с точностью до n , which is more than is needed to compute the answer, where n! длина последовательности [a..b].length() > 25 .

 

Natali37


Рег
06 Apr, 2011

Тем
56

Постов
191

Баллов
491
  • 26, Oct 2024
  • #7

МАТЛ, 23 байта

b

Попробуйте онлайн! Или проверить все тестовые случаи.

a ||answer||

Шелуха, 6 байт

Ÿ # Push [a, ..., b]. Dg! # Calculate ([a..b].length())! because factorial grows faster than fibbonacci... ÅF # Get Fibonacci numbers up to FACTORIAL([a..b].length()). s # Swap the arguments because the fibb numbers will be longer. m # Vectorized exponentiation, dropping extra numbers of Fibonacci sequence. O # Sum.

Попробуйте онлайн!

Объяснение

ŸDg!ÅFsmO ||answer||

Р, 51 байт

Анонимная функция.

$ ghc fibexps.hs -e '[4..8]?f' 33156 ||answer||

Желе, 13 байт

f=scanl(+)1(0:f);(?)=sum.zipWith(^)

Попробуйте онлайн!

 

Кристино4ка


Рег
05 May, 2011

Тем
60

Постов
212

Баллов
532
  • 26, Oct 2024
  • #8

Шепот v3, 87 байт

f=(a,b,x=1,y=1)=>a<=b&&a**x+f(a+1,b,y,x+y)

К сожалению, Whispers v3 отсутствует на TryItOnline!, поэтому нет онлайн-интерпретатора, который мог бы это проверить, кроме загрузки репозитория и его локального запуска.

 

TFeniks31081980


Рег
03 Nov, 2013

Тем
50

Постов
200

Баллов
480
  • 26, Oct 2024
  • #9

Арн h1: - range(low, high+1) F ) - for i in ^: oh - (o++)+1 .b - nth_fib(^) ^ - i ** ^ s - sum(^) , 11 8 байт

h1:Foh.b^)s

Попробуйте!

Объяснено

Распаковано: f(a,b):=sum(x^fib(x-a+1),x,a,b);

1, &[+] ... * ||answer||

Желе, 9 8 байт

Z**

Попробуйте онлайн!

-1 байт благодаря ЖивойМаг

Как это работает

$^b ||answer||

Рубин, 46 байт

$^a

Ничего особенно умного или оригинального здесь нет. Извини.

 

Chernol


Рег
19 Oct, 2010

Тем
64

Постов
202

Баллов
532
  • 26, Oct 2024
  • #10

Java 7, 96 байт

Гольф:

$^a..$^b

Негольфед:

$^b ||answer||

Р, 57 байт

$^a

Довольно просто. {sum $^a..$^b Z**(1,&[+]...*)} is a shorter built-in, but it doesn't support returning the entire sequence up to f=lambda a,b,x=1,y=1:a<=b and a**x+f(a+1,b,y,x+y) , который y does by adding the argument x .

Сначала у меня было более сложное решение с b which ended up 2 bytes longer than this solution.

a ||answer||

постоянный ток, 56 байт

Tr

Отделка для ввода Listable in 51 seconds. Takes the two inputs on two separate lines once executed and negative numbers with a leading подчеркивать ( Power ) instead of a dash (i.e b-a+1 будет введено как Fibonacci@Range[#2-#+1] ).

 

SPYko


Рег
23 Sep, 2007

Тем
81

Постов
183

Баллов
608
  • 26, Oct 2024
  • #11

PHP, 77 75 байт

Listable

принимает границы из аргументов командной строки. Беги с Fibonacci .
демонстрация PHP переменные переменные снова (и что я о них узнал.

авария

{1, 2, ..., b-a+1}

Ответ FlipTack портированный на PHP имеет размер 70 байт:

Range[#2-#+1] ||answer||

Аксиома, 65 байт

{a, a+1, ..., b}

тестовый код и результаты

Range[##] ||answer||

PowerShell, 67 байт

b

Попробуйте онлайн!

Нашел немного лучший способ выполнить последовательность, но PowerShell не сравнится с другими языками в этом плане :)

 

VillaDiow


Рег
25 Apr, 2014

Тем
72

Постов
186

Баллов
576
Тем
403,760
Комментарии
400,028
Опыт
2,418,908

Интересно