피보나치 수 내 색인, 그러나 당신의

도전

정수 입력이 주어지면, 피보나치 수의 색인과 함께 그 안에 입력을 포함하는 첫 번째 피보나치 수를 반환하십시오 (0 또는 1에서 시작하는 색인, 그러나 당신의 대답에서 언급하십시오). 예를 들어, 12의 입력이 주어진 경우, 프로그램은 26: 12139312가 숫자 ( 12 1393) 내에 있고 피보나치 수의 색인 26에있는 대로 리턴 합니다.

주어진 입력 :

45

프로그램은 다음을 출력해야합니다 :

33: 3524578

입력:

72

산출:

54: 86267571272

입력:

0

산출:

0: 0

입력:

144

산출:

12: 144

채점

이것은 이므로 각 언어에서 가장 짧은 답변이 이깁니다.



답변

젤리 , 10 바이트

0ÆḞ©w¥1#;®

온라인으로 사용해보십시오!

작동 원리

0ÆḞ©w¥1#;®  Main link. Argument: n

0           Set the return value to 0.
       #    Call the second link to the left with arguments k = 0, 1, 2, ... until
      1     one match has been found.
     ¥        Combine the two links to the left into a dyadich chain.
 ÆḞ             Compute the k-th Fibonacci number...
   ©              and copy it to the register.
    w           Yield 1 if n occurs inside the Fibonacci number, 0 otherwise.
         ®  Yield the value stored in the register.
        ;   Concatenate the index and the Fibonacci number.

답변

파이썬 2 , 56 바이트

f=lambda n,i=0,a=0,b=1:`n`in`a`and(i,a)or f(n,i+1,b,a+b)

온라인으로 사용해보십시오!


답변

펄 6 , 30 바이트

{first :kv,/$_/,(0,1,*+*...*)}

온라인으로 사용해보십시오!

first는 테스트를 통과 한 시퀀스의 첫 번째 요소를 반환하는 함수이며 :kv키 (인덱스)와 일치하는 값을 모두 반환하도록 지시 하는 부사를 편리하게 사용 합니다.


답변

배치, 104 바이트

@set/an=x=0,y=1
:l
@call set t=%%x:%1=%%
@if "%t%"=="%x%" set/an+=1,x+=y,y=x-y&goto l
@echo %n%: %x%

n=0..45배치의 정수 산술의 제한된 범위로 인해 작동합니다 . 설명 : Batch에는 내장 일치 테스트가 없지만 리터럴 문자열을 다른 리터럴 문자열로 바꿀 수있는 연산자가 있으므로 비어 있지 않지만 포함하지 않은 if "%s:l=%"=="%s%"경우 true 입니다. 그런 다음 사용은 대체 연산자로 입력 을 대체하는 트릭 이지만 제어 흐름 명령문에서는 작동하지 않으므로 중간 임시 할당이 필요합니다.%s%lcall%1call


답변

젤리 , 15 바이트

³DẇÆḞ¬
0‘Ç¿µ,ÆḞ

온라인으로 사용해보십시오!


답변

자바 스크립트 ES6, 68 자

n=>eval('for(q=x=0,y=1;!`${x}`.match(n);++q)[x,y]=[y,x+y];q+": "+x')

테스트:

f=n=>eval('for(q=x=0,y=1;!`${x}`.match(n);++q)[x,y]=[y,x+y];q+": "+x')
console.log([45,72,0,144].map(f).join`
`)

답변

파이썬 3, 76 바이트

f=lambda n,l=[1,0]:str(n)in str(l[1])and(len(l)-2,l[1])or f(n,[l[0]+l[1]]+l)