트럼프는 스타 맨을 멈추기 위해 당신의 도움이 필요합니다!


33

별에서 사람이 지구에 온! 운 좋게도 미국 대통령 도널드 트럼프는 무한대 주사위를 가지고 있습니다. 이 주사위를 사용하여, 당신Podunk 의 시장 이 침략자를 막기 위해 누구를 보내야하는지 결정하기 위해 사용해야 하는 숫자를 쓸 수 있습니다! 그러나 개구리 뒷면에는 제한된 양의 바이트 만 보낼 수 있습니다 .

사용자 입력 (양의 정수가 됨)이 주어지면 숫자가 속한 범주에 따라 문자열을 반환해야합니다.

  • 숫자가 피보나치 수 이면 Ness 를 출력해야합니다 .
  • 숫자가 Lucas 숫자 이면 Lucas 를 출력해야합니다 .
  • 숫자 인 경우 모두 루카스 수피보나치 수는 , 당신은 출력해야 트래비스 .
  • 숫자 인 경우 AA 루카스 번호 도 아니고 피보나치 수는 , 당신은 출력해야 삐삐가 .

테스트 사례는 다음과 같습니다.

1 => 트래비스
2 => 트래비스
3 => 트래비스
4 => 루카스
5 => 네스
6 => 피피
7 => 루카스
8 => 네스
610 => 네스
722 => 피피
843 => 루카스

규칙

  • 이것은 이며 바이트 단위로 가장 짧은 답변입니다.
  • 프로그램은 전체 프로그램이거나 (익명) 기능 일 수 있습니다.

보너스

개구리가 트럼프 대통령에게 데이터를 더 빨리 얻는 데 도움이되는 몇 가지 보너스가 있습니다.

  • 대한 -15바이트 : 입력 한 숫자 인 경우 2016, 당신이해야 출력 Trump, 그가 대통령의 절정에있다.

29
기록상, 나는 스타 맨 중 하나가 아닙니다.
El'endia Starman


@DavidCarraher 일부 정의가 Fibonacci 시리즈를 시작하는 0, 1반면 다른 정의는로 시작하는 것과 마찬가지로 1, 1이것이 사용하는 정의에 달려 있다고 생각합니다. Lucas 번호가로 시작하는 것은 드문 일이 아닙니다 2, 1. 예를 들어 OEIS에는 두 버전 ( 1 , 2 )이 있지만 2로 시작하는 것은 정의 단계가 끝났습니다.
Sp3000

2
투표는 숨길 수로되어있다,하지만 난 아직도 내가 정말로 정치처럼 그것이 그렇게 말할 것이다 있다 이 질문에 내 투표에 영향을 미쳤다. 질문에서 정치를 제거하거나 적어도 내가 놓친 말장난을 설명해 줄 수 있습니까? 정치적 언급은 좋은 것으로 스펙에 포함되어 있지만 제목에서 제거 할 수 있습니다.
John Dvorak

3
@ JanDvorak : 나는 그것이 매우 혀에 있다고 생각합니다. 예를 들어, 대선 기간 4 년, 그리고 다음 선거 11 월 2016에 있는지 트럼프가 ... 2016 년 그의 대통령의 절정에있는 경우 있음을 고려
El'endia Starman

답변:


4

Pyth, 59-15 = 44 바이트

또는 버그가 수정 된 후 42 바이트

&Qr@c."av�a�(s��kW���"\b?q2016Q4/hMst*2.uL,eNsNQ_BS2Q4

16 진 덤프 :

0000000: 2651 7240 632e 2261 7601 c061 15dc 2873  &Qr@c."av..a..(s
0000010: fde0 6b57 8bd0 a1ed ed0f 225c 623f 7132  ..kW......"\b?q2
0000020: 3031 3651 342f 684d 7374 2a32 2e75 4c2c  016Q4/hMst*2.uL,
0000030: 654e 734e 515f 4253 3251 34              eNsNQ_BS2Q4

첫 두 문자 ( &Q)는 실패 Q후 Pyth 구문 분석 버그로 인해 필요 ."합니다. 수정 사항이 적용되었습니다. 버그 수정 후 인터프리터가 허용되면 -2 바이트입니다.


읽을 수없는 문자열 압축이없는 경우 :

Pyth, 63-15 = 48 바이트

트럼프없는 49 바이트

@c"Pippi Ness Lucas Travis Trump")?nQ2016/hMst*2.uL,eNsNQ_BS2Q4

테스트 스위트

매우 간단합니다. 시퀀스를 생성하고 복제하고 멤버쉽을 확인하십시오.

시퀀스로 시작하여 생성 [1, 2]하고 [2, 1], 다음 피보나치 규칙을 적용.


9

줄리아 146 142 121 120 바이트

n->split("Pippi Lucas Ness Travis")[2any(isinteger,sqrt([5n^2+4,5n^2-4]))+(n∈[2;[(g=golden)^i+(-g)^-i for i=1:n]])+1]

부울을 반환하는 명명되지 않은 함수를 만듭니다. 호출하려면 이름을 지정하십시오 (예 :) f=n->....

언 골프 드 :

function trump(n::Integer)
    # Determine if n is a Fibonacci number by checking whether
    # 5n^2 ± 4 is a perfect square
    F = any(isinteger, sqrt([5n^2 + 4, 5n^2 - 4]))

    # Determine if n is a Lucas number by generating Lucas
    # numbers and testing for membership
    # golden is a built-in constant containing the golden ratio
    L = n  [2; [golden^i + (-golden)^-i for i = 1:n]]

    # Select the appropriate Earthbound charater using array
    # indexing on a string split into an array on spaces
    return split("Pippi Lucas Ness Travis")[2F+L+1]
end

Glen O! 덕분에 문제를 해결하고 7 바이트를 절약했습니다.


7

Mathematica 143156-15 (보너스) = 141 바이트

LegionMammal978 덕분에 2 바이트가 절약되었습니다.

t_~g~l_:=(r=1<0;n=1;While[(z=l@n)<=t,If[z==t,r=1>0];n++];r);a=g[k=Input[],LucasL];
b=k~g~Fibonacci;Which[k==2016,Trump,a&&b,Travis,a,Lucas,b,Ness,2<3,Pippi]

1
FalseTrue교체 할 수 있습니다 1<01>0respecively.
LegionMammal978


5

파이썬 2, 107

f=lambda i,n=input():abs(5*n*n+i)**.5%1>0
print["Travis","Lucas","Ness","Pippi"][f(4)*f(-4)+2*f(20)*f(-20)]

열쇠는 피보나치와 루카스 숫자에 대한 순전히 산술 점검입니다.

  • n피보나치 수 5*n*n+4이거나 정확히 5*n*n-4제곱 인 경우
  • n5*n*n+20또는 정확히 5*n*n-20제곱 이면 루카스 숫자 입니다.

이 사이트에는 증거 스케치가 있습니다.

따라서, 출력의 값에 따라 달라집니다 5*n*n+i위한 i에서 {4,-4,20,-20}. 함수 f의 값을 테스트 i대응하는 값이있는 경우 선택하여, 하지 (가) 전체 번호 제곱근이 abs단지 용 음의 루트를 취하는 오류를 피하기 위해도이다 n=1, i=-20.

이 함수 fnSTDIN에서 테스트 할 숫자 값을 가져옵니다 . 파이썬은 함수 호출 당 한 번이 아니라 한 번만 평가합니다.

숫자가 피보나치가 아닌지 여부는 f(4)*f(-4)암시 적 부울에서 숫자로의 변환을 사용하고 루카스가 아닌 것으로 유사하게 평가되며 해당 문자열이 사용됩니다. 후행 공백이 허용되면 문자열 인터리빙이 더 짧아집니다.


증명 스케치는 연결이 끊어졌습니다.
SQB

@SQB 페이지가 다운 된 것 같습니다. 다시 찾을 수 없습니다.
xnor

4

파이썬 2, 117 바이트

F=[1]
L=[2,1]
n=input()
exec 2*n*"F,L=L+[sum(L[-2:])],F;"
print["Pippi","Lucas","Ness","Travis"][(n in F)*2+(n in L)]

문자열 목록의 "Pippi Lucas Ness Travis".split()길이는 같습니다.


3

CJam, 58 55 54 바이트

ri5Zbe!f{1${_-2>:++}*&!}2b"Travis Ness Lucas Pippi"S/=

피보나치 수와 루카스 수를 생성 한 후 이진으로 변환하고 적절한 문자열을 선택하여 발생 횟수를 세는 순진한 접근 방식.

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


3

정말 69 바이트

,;;r`;F@2+F+`M2@q@#"%d="%£MΣ@f0≤2*+["Pippi","Lucas","Ness","Travis"]E

이 도전에 앞서, 진지하게 내장 f(피보나치 수의 색인, 피보나치 수가 아닌 경우 -1)을 가지지 만 목록에 색인화되지 않았거나 "목록에 있습니다"! (그 이후로 추가되었습니다 í.)

결과적으로 입력이 피보나치 수인지 확인하는 데 소비합니다.

,                              f0≤

이것이 내가 Lucas 번호 목록을 생성하는 데 소비하는 것입니다.

  ;r`;F@2+F+`M2@q

그리고 이것은 입력이 Lucas 숫자 목록에 있는지 찾는 데 소비하는 것입니다.

 ;                @#":%d:="%£MΣ

그것은 파이썬의 % 표기법을 사용하여 형식화되고 :610:=함수로 변환 된 다음 배열에 매핑되고 합산되는 문자열입니다. (루카스 숫자는 고유하므로 합계는 항상 0 또는 1입니다.)

문자열 형식의 마지막 비트에 대해 @Mego에게 감사드립니다.


3

Perl, 133 (146-15 =) 131 (144-15 =) 129 (136-15 =) 121 바이트

-n플래그의 경우 +1 바이트

$a=$d=1;$b=$c=2;$f+=$_==$a,$l+=$_==$c,($a,$b,$c,$d)=($b,$a+$b,$d,$c+$d)while$a<$_*9;say$_-2016?(Pippi,Ness,Lucas,Travis)[$f+$l*2]:Trump

가독성을 위해 세미콜론 다음에 줄 바꿈을 사용하십시오.

$a=$d=1;$b=$c=2;
$f+=$_==$a,$l+=$_==$c,($a,$b,$c,$d)=($b,$a+$b,$d,$c+$d)while$a<$_*9;
say$_-2016?(Pippi,Ness,Lucas,Travis)[$f+$l*2]:Trump

데모:

llama@llama:...code/perl/ppcg64476trump$ for x in 1 2 3 4 5 6 7 8 610 722 843 2016; do echo -n "$x => "; echo $x | perl -n trump.pl; done
1 => Travis
2 => Travis
3 => Travis
4 => Lucas
5 => Ness
6 => Pippi
7 => Lucas
8 => Ness
610 => Ness
722 => Pippi
843 => Lucas
2016 => Trump

트릭 :

  • 내 변수의 이름을 지정하는 이유를 궁금 할 것이다 $a, $b, $%,와 $d. 훌륭한 질문입니다! 사실, 그것은 바이트를 저장할 수있게합니다.

    (stuff) ... ,$l+=$_==$%while$a<$_

    1 바이트보다 짧다

    (stuff) ... ,$l+=$_==$c while $a<$_

    변수를 다시 정렬하여 코드를 골프화하여 변수 이름이 더 이상 바이트를 저장하지 않기 때문에 더 이상 적용되지 않습니다. 변수 이름이 다시 이해되도록 다시 변경했습니다.

  • $_-2?$f+$l*2:3약간 흥미 롭습니다. 기본적으로 필자는 2프로그램 에서 피보나치 및 루카스 번호를 "업데이트" 한 후 번호가 루카스 번호인지 확인하기 때문에 루카스 번호 를 특수하게 처리해야했습니다 . 그래서 2하지 않은 루카스 번호 여겨졌다. $_-2?foo:bar보다 짧은 문자 $_==2?bar:foo입니다. 2016테스트에도 같은 것이 사용됩니다 .

    특수 케이스가 필요하지 않도록 프로그램을 재구성 할 수 있었기 때문에 더 이상 사실이 아닙니다 2. 그러나 여전히 1 바이트 더 긴 $_-2016?stuff:Trump대신을 사용 합니다 $_==2016?Trump:stuff.

  • 내가 말하면, 당신은 내가 어떻게이 구조 조정을했는지 궁금 할 것입니다. 방금 프로그램이 필요한 것보다 9 배 더 많은 반복을 수행하도록 만들었습니다.이 바이트는 2 바이트 ( *9)이지만 골프 물건을 줄이는 데 도움이되는 다른 곳을 가정 할 수 있습니다.

  • 변수의 기본값은 0이므로

    $f+=$_==$a

    보다 짧다

    $f=1if$_==$a
  • Perl은 베어 워드를 지원하므로 문자열 (\ o /)을 인용 할 필요가 없습니다.


2 바이트가 짧지 않습니까?
코너 O'Brien 1

@ CᴏɴᴏʀO'Bʀɪᴇɴ 프로그램 자체는 132 바이트이며, -n플래그 로 호출해야하기 때문에 하나를 추가했습니다 (답변에 나와 있음).
도어

아, 알겠습니다 뭐라고합니까 -n플래그는 무엇입니까?
코너 O'Brien 1

1
@ CᴏɴᴏʀO'Bʀɪᴇɴ 그것은 while(<>) { ... }당신의 프로그램 주위 에 루프를 가정합니다 . Perl docs를 참조하십시오 .
Doorknob

1
@DomHastings 그는 아니었지만, 나는 <s> 전환 </ s>하여 펄을 시험하도록 설득했다.
스파게티

2

줄리아, 101100 바이트

n->split("Pippi Lucas Ness Travis")[[2;1]⋅(sum(i->[i[];trace(i)].==n,Any[[1 1;1 0]].^(0:n)).>0)+1]

언 골프 드 :

function f(n)
  k=Any[[1 1;1 0]].^(0:n) # Produces characteristic matrices of Fibonacci
                          # numbers from 0 to n
  F=sum(i->i[]==n,k)      # Check if n is a Fibonacci number by checking
                          # the first value in each matrix for n
  L=sum(i->trace(i)==n,k) # Check if n is a Lucas number by checking
                          # the trace of each matrix for n
  I=[2;1]⋅[F;L]+1         # Calculate 2F+L+1, which is the index for the next step
  S=split("Pippi Lucas Ness Travis") # Creates array with four strings
                          # saves a byte compared with directly creating array
  return S[I]
      # This uses the above calculations to determine which of the four to return
end

멋진 해결책! 매트릭스와 트레이스 접근법은 천재입니다. 그것은 너무 나쁘다 {}대체 문법 Any[]되지 않습니다; 몇 바이트를 절약 할 수 있습니다.
Alex A.

2

옥타브, 93 바이트

@(n){'Pippi','Lucas','Ness','Travis'}{(1:2)*any(~rem(real(sqrt(5*n^2+[-20,-4;20,4])),1)).'+1}

이 방법은 Octave를 사용하여 새로운 배열로 직접 색인을 생성 할 수 있다는 점을 제외하면 MATLAB 답변 과 유사합니다 .

{'a', 'b', 'c'}{2}    %// b

2

MATL (비경쟁), 57 55 54 (67-15) = 52 바이트

20Kht_vi2^5*+X^Xj1\~a2:*sG2016=-'Lucas Ness Travis Trump Pippi'Ybw)

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

설명

다시, 여기여기 에 내 다른 답변과 유사한 논리 .

20      % Number literal
K       % Retrieve the number 4 from the K clipboard (the default value)
h       % Horizontal concatenation to produce [20 4]
t       % Duplicate elements
_v      % Negate and vertically append elements (yields [20, 4; -20 -4])
i2^     % Explicitly grab the input and square it
5*      % Multiply by 5
+       % Add this to the matrix ([20, 4; -20 -4])
X^      % Take the square root
Xj      % Ensure that the result is a real number
1\      % Get the decimal component
~       % Create a logical arrays where we have TRUE when no remainder
a       % For each column determine if any element is TRUE
2:      % Create the array 1:2
*       % Perform element-wise multiplication with boolean
s       % Sum the result to yield an index
G       % Explicitly grab the input (again)
2016=   % Check to see if it is 2016 (yields TRUE (1) if equal)
-       % Then subtract the boolean from the index. Since 2016 is NOT a
        % Fibonacci or Lucas number, the original index is 0. Subtracting
        % this boolean, will make this index now -1. For all other non-2016
        % numbers this will have no effect on the index.
'Lucas Ness Travis Trump Pippi' % Create the possible strings values 
        % Note: the 0 index wraps around to the end hence Pippi being at the end.
        % The next to last entry ('Trump') is ONLY accessible via a -1 index as
        % discussed above
Yb      % Split at the spaces to create a cell array
w       % Flip the top two stack elements
)       % Retrieve the desired value from the cell array

1

C ++ 11, 176 + 15 (#include) = 191

#include<mutex>
[](int n){std::function<int(int,int)>c=[&](int f,int s){return f-s>n?0:s-n?c(s,f+s):1;};int l=c(2,1),f=c(1,1);l&f?puts("Travis"):l?puts("Lucas"):f?puts("Ness"):puts("Pippi");}

사용법에 구애받지 않았습니다. 내일 요청하면 설명을 추가 할 수 있습니다.

#include <functional>
#include <cstdio>
int main()
{
    auto r = [](int n)
    {
        std::function<int(int, int)> c = [&](int f, int s)
        {
            return f - s > n ? 0 : f - n ? c(s, f + s) : 1;
        };
        int l = c(2, 1), f = c(1, 1);
        l & f ? puts("Travis") : l ? puts("Lucas") : f ? puts("Ness") : puts("Pippi");
    };

    for (int i : { 1, 2, 3, 4, 5, 6, 7, 8, 610, 722, 843 })
    {
        printf("%i - ", i); r(i);
    }
}

1
@sysreq 그게 보너스가 아니라 include 문이라고 생각합니다.
Phase

@ phase 나는 전체 프로그램이 아닌 함수 만 게시 할 때 바이트 크기를 두 부분 (코드 + 포함)으로 나눕니다.
Zereges

1

자바 스크립트 (ES6), 108 바이트

x=>(f=(a,x,y)=>a==y||a==x?1:a<y?0:f(a,y,x+y),b=f(x,0,1),c=f(x,2,1),b&&c?'Travis':b?'Ness':c?'Lucas':'Pippi')

피보나치와 루카스에 대해 동일한 기능. 처음 두 값을 초기화하는 재귀 함수입니다.


1

자바, 151 바이트

트럼프가이 중요한 결정을 아웃소싱하지 않을 것이라고 주장 할 수 있으므로이 방법을 공개하지 않아도되므로 7 바이트를 더 절약 할 수 있습니다.

public String t(int n){return"Pippi,Lucas,Ness,Travis".split(",")[2*f(n,1,1)+f(n,2,1)];}int f(int a,int x,int y){return a==x||a==y?1:a<y?0:f(a,y,x+y);}

테스트 메인 호출을 포함하여 언 골프

public class Trump {

    //Test Invokation
    public static void main(String[] args) {
        int[] n = {1, 2, 3, 4, 5, 6, 7, 8, 610, 722, 843, 2016 };
        for(int i = 0; i < n.length; ++i) {
            System.out.println(""+ n[i] + " => " + new Trump().t(n[i]));
        }
    }


    public String t(int n) {        
        return "Pippi,Lucas,Ness,Travis".split(",")[2*f(n,1,1)+f(n,2,1)];               
    }
    int f(int a,int x,int y) {             
        return a==x||a==y?1:a<y?0:f(a,y,x+y);           
    }

}

지금까지 2016 년을 테스트하고 코드에서 15 바이트 미만의 코드에서 "Trump"를 반환하는 방법을 찾지 못했습니다.


설명의 첫 줄을 사랑하십시오!
Scott

1

C (GCC) ,  128   (120)   116  110 바이트

a;b;o;f(n){for(o=b=0,a=1;a<=n;b=a+b,a=b-a)o|=(b==n)+2*(2*a+b==n);n=o?o-1?o-2?"Travis":"Lucas":"Ness":"Pippi";}

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

설명

F(n)n 번째 피보나치 수와 L(n)n 번째 루카스 수 의 이름을 지정합시다 .
a, b되어 F(n-1), F(n)각각.
그런 다음 계산할 수 있습니다. L(n) == F(n-1)+F(n+1) == 2*F(n-1) + F(n) == 2*a+b
이 함수는 피보나치 수와 루카스 수를 연속적으로 계산하고 그 중 하나가 n있는지 확인 n합니다.
경우 n피보나치 숫자가의 1 비트 o에 설정됩니다 1
경우 n루카스 수의 2 비트입니다 o으로 설정됩니다1
o 후 출력되는 이름을 결정하는데 이용 될 것이다

편집하다

  • 에 대한 루프의 상태를 골프로 8 바이트를 저장 : 두 번째 반복에서 시작, 우리가 a<b<c하고 a<a+c=L(n)그래서 ( b<=n || a+c<=n ) => a<n. 실제로 a<=n제대로 처리해야했습니다n=1
  • ceilingcat 덕분에 4 바이트를 절약했습니다! (또한 실수를 수정했습니다. 내 코드는 "2 => Ness"를 출력했습니다)
  • 6 바이트 저장 :
    • 다시 ceilingcat 덕분에 2
    • 4 변수를 제거함으로써 c, 동일한 F(n+1)이미 계산할 수 있기 때문에, 쓸모 있던, F(n+1)함께 ab

b+=a대신 추천b=a+b
ceilingcat

0

Perl 5.10, 119-15 (보너스) = 104 바이트

$_=<>;$j=1;($i,$j)=($j,$i+$j)while$_>$i;say$_-2016?(Pippi,Lucas,Ness,Travis)[($_==$i)*2|$_==3*$j-4*$i|$_-1>>1==0]:Trump

언 골프 드 :

# Read line from stdin
$_ = <>;

# Find first Fibonacci number greater than or equal to input.
# Store this number in $i and the next Fibonacci number in $j.
$j = 1;
($i, $j) = ($j, $i + $j) while $_ > $i;

say $_ - 2016
  ? (Pippi,Lucas,Ness,Travis)[
      ($_ == $i) * 2 |          # Bitwise OR with 2 if Fibonacci number
      $_ == 3 * $j - 4 * $i |   # Bitwise OR with 1 if Lucas number >= 3
      $_ - 1 >> 1 == 0          # Bitwise OR with 1 if Lucas number <= 2
    ]
  : Trump

이것은 사실을 이용합니다

L(n-2) = 3 * F(n+1) - 4 * F(n)

F (n) 이하의 가장 큰 루카스 수입니다.


0

그루비, 149 바이트

f={i->g={m,s->while(s[-2]<=m)s<<s[-2]+s[-1];s}
println(["Pippi","Ness","Lucas","Travis"][(g(i,[1,1]).contains(i)?1:0)+(g(i,[2,1]).contains(i)?2:0)])}

테스트 코드 :

[1,2,3,4,5,6,7,8,610,722,843].each {
    print "$it => "
    f(it)
}

g시드 ( s) 및 최대 값 ( m)을 기반으로 숫자 목록을 생성하는 클로저입니다 . (g(i,[1,1]).contains(i)?1:0)+(g(i,[2,1]).contains(i)?2:0)lucas 또는 피보나치 수를 기반으로 사용할 인덱스를 찾습니다.


0

MATLAB, (122) 119 바이트

@(n)subsref({'Pippi','Lucas','Ness','Travis'},substruct('{}',{(1:2)*any(~rem(real(sqrt(5*n^2+[-20,-4;20,4])),1)).'+1}))

간단한 설명

먼저 인쇄 할 값이 포함 된 셀형 배열을 만듭니다 {'Pippi', 'Lucas', 'Ness', 'Travis'}. 그런 다음 표시 할 값을 n찾기 위해 피보나치인지 루카스 숫자 인지 확인합니다 .

Fibonnaci의 경우 다음 공식을 사용합니다.

any(~rem(sqrt(5*n^2 + [-4 4]), 1))

이것은 완벽한 사각형 인지 5*n^2 + 4또는 5*n^2 - 4완벽한 사각형 인지 확인합니다 . 만약any 입니다 그 중, 다음은 피보나치 수이다.

Lucas 숫자의 공식 은 4 대신 +/- 20을 사용한다는 점을 제외하면 매우 유사합니다.

any(~rem(sqrt(5*n^2 + [-20 20]), 1))

이 솔루션에서는 매트릭스를 사용하여이 두 경우를 하나로 결합했습니다.

M = [-20 -4
      20  4]

위와 동일한 방정식을 적용하지만 any첫 번째 차원 만 고려하면 첫 번째 요소가 true이면 루카스 숫자이고 두 번째 요소가 true이면 피보나치 수인 두 요소 논리 배열을 얻습니다. .

any(~rem(sqrt(5*n^2 + [-20 -4;20 4]), 1))

그런 다음 초기 셀 배열에 대한 인덱스를 계산하기 위해이 부울의 요소 별 곱셈을 [2^0, 2^1]또는로 간단히 이진 시퀀스로 처리합니다 [1,2]. 그리고 요소를 합산하십시오. MATLAB의 단일 기반 인덱싱으로 인해 1을 추가해야합니다.

index = (1:2) * any(~rem(real(sqrt(5*n^2+[-20,-4;20,4])),1)).' + 1;

그럼 사용해야 subsref하고 substruct최종 결과를 획득하기 위해 초기 셀 어레이에 인덱스한다.


0

JavaScript (ES6), 97 바이트

x=>[['Pippi','Lucas'],['Ness','Travis'],f=(a,x,y=1)=>a>x?f(a,y,x+y):a==x||a==1][+f(x,0)][+f(x,2)]

a==1체크 그렇지 않으면 내가 1은 루카스 번호가 통지하지 않습니다 필요합니다.



0

05AB1E , 39 37 ( 52-15 보너스) 바이트

2016Qi.•ªb‚•ë>ÅG¹å_¹ÅF¹åi.•F_ïk|»9•ë.•?®B'5n•}2äsè}™

온라인으로 시도 하거나 모든 테스트 사례를 확인하십시오 .

설명:

2016Qi                # If the input equals 2016:
      .•ªb‚•          #  Push "trump" to the stack
ë                     # Else:
 >ÅG                  #  List of Lucas numbers up to and including the input+1
    ¹å                #  Check if the input is in this list (1 if truthy; 0 if falsey)
      _               #  Invert the boolean (0→1 and 1→0)
 ¹ÅF                  #  List of Fibonacci numbers up to and including the input
    ¹åi               #  If the input is in this list:
       .•F_ïk|»9•     #   Push string "travisnessi" to the stack
    ë                 #  Else:
     .•?®B'5n•        #   Push string "pippilucas" to the stack
    }                 #  Close the inner if-else
     2ä               #  Split the string into two parts
                      #   i.e. "travisnessi" → ["travis","nessi"]
                      #   i.e. "pippilucas" → ["pippi","lucas"]
       sè             #  Index the Lucas result into the list of two strings
}                     # Close the outer if-else
 ™                    # And output the top of the stack in title-case
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.