도전
정수 입력이 주어지면, 피보나치 수의 색인과 함께 그 안에 입력을 포함하는 첫 번째 피보나치 수를 반환하십시오 (0 또는 1에서 시작하는 색인, 그러나 당신의 대답에서 언급하십시오). 예를 들어, 12의 입력이 주어진 경우, 프로그램은 26: 121393
12가 숫자 ( 12 1393) 내에 있고 피보나치 수의 색인 26에있는 대로 리턴 합니다.
예
주어진 입력 :
45
프로그램은 다음을 출력해야합니다 :
33: 3524578
입력:
72
산출:
54: 86267571272
입력:
0
산출:
0: 0
입력:
144
산출:
12: 144
채점
이것은 code-golf 이므로 각 언어에서 가장 짧은 답변이 이깁니다.
답변
젤리 , 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.
답변
답변
펄 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%
l
call
%1
call
답변
답변
자바 스크립트 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)