স্টারম্যানকে থামাতে ট্রাম্পের আপনার সহায়তা দরকার!


33

তারকাদের একজন মানুষ পৃথিবীতে এসেছেন! ভাগ্যক্রমে মার্কিন যুক্তরাষ্ট্রের প্রেসিডেন্ট ডোনাল্ড ট্রাম্পের এক অনন্ত পক্ষের মৃত্যু হয়েছে। এই ডাই ব্যবহার করে, তিনি এমন একটি সংখ্যা আপত্তি করতে পারেন যা আপনাকে , পডাঙ্কের মেয়র , অবশ্যই আক্রমণকারীকে থামানোর জন্য কাকে প্রেরণ করা উচিত তা নির্ধারণ করার জন্য ব্যবহার করতে হবে! তবে সাবধান থাকুন, আপনি কেবল আপনার ব্যাঙের পিছনে সীমিত পরিমাণে বাইট পাঠাতে পারবেন !

কোনও ব্যবহারকারী ইনপুট দেওয়া হয়েছে (যা ইতিবাচক পূর্ণসংখ্যার হবে), সংখ্যাটি কোন শ্রেণিতে রয়েছে তার উপর নির্ভর করে আপনাকে অবশ্যই একটি স্ট্রিং ফেরত দিতে হবে।

  • যদি নম্বরটি একটি ফিবোনাচি নম্বর হয় তবে আপনাকে নেস আউটপুট করতে হবে ।
  • যদি নম্বরটি লুকাস নম্বর হয় তবে আপনাকে অবশ্যই লুকাস আউটপুট দিতে হবে ।
  • যদি নম্বরটি একটি লুকাস নম্বর এবং একটি ফিবোনাচি নম্বর উভয় হয় তবে আপনাকে অবশ্যই ট্র্যাভিস আউটপুট দিতে হবে ।
  • সংখ্যা হয়, তাহলে তন্ন তন্ন এএ লুকাস সংখ্যা অথবা একটি ফিবানচি সংখ্যা , আপনি আউটপুট অবশ্যই Pippi

উদাহরণ

এখানে একগুচ্ছ পরীক্ষার মামলা রয়েছে:

1 => ট্র্যাভিস
2 => ট্র্যাভিস
3 => ট্র্যাভিস
4 => লুকাস
5 => নেস
6 => পিপ্পি
7 => লুকাস
8 => নেস
610 => নেস
722 => পিপ্পি
843 => লুকাস

বিধি

  • এটি , বাইট জেতে সংক্ষিপ্ত উত্তর।
  • আপনার প্রোগ্রামটি একটি সম্পূর্ণ প্রোগ্রাম বা একটি (এন নামবিহীন) ফাংশন হতে পারে।

বোনাসেস

এমন একটি দম্পতি বোনাস রয়েছে যা আপনি আপনার ব্যাঙকে প্রেসিডেন্ট ট্রাম্পের ডেটা দ্রুত পেতে সহায়তা করতে ব্যবহার করতে পারেন:

  • জন্য -15বাইট: ইনপুট সংখ্যা হয়, তাহলে 2016, আপনাকে অবশ্যই আউটপুট Trump, তিনি তার রাষ্ট্রপতি মেয়াদকালের শিখর হয়।

29
রেকর্ডের জন্য, আমি সেই স্টারম্যানদের একজন নই ।
এল'েন্ডিয়া স্টারম্যান


@ ডেভিডকারারহর যেমন কিছু সংজ্ঞা 0, 1অন্যরা শুরু করার সাথে সাথে ফিবোনাচি সিরিজটি শুরু করে 1, 1, তেমনি আমি বিশ্বাস করি এটি আপনার ব্যবহৃত সংজ্ঞাটির উপর নির্ভর করে। লুকাসের সংখ্যাগুলি শুরু হওয়া অস্বাভাবিক নয় 2, 1, যেমন ওইআইএসের উভয় সংস্করণ রয়েছে ( 1 , 2 ), তবে 2 দিয়ে শুরু হওয়া সংজ্ঞা পর্বটি দিয়ে গেছে।
Sp3000

2
ভোটগুলি লুকিয়ে থাকার কথা, তবে আমি এখনও বলব যে আমি রাজনীতি সত্যই পছন্দ করি না এবং এটি এই প্রশ্নে আমার ভোটকে প্রভাবিত করেছে । প্রশ্নকর্তা মন প্রশ্ন থেকে রাজনীতি সরিয়ে ফেলবেন বা কমপক্ষে আমার যে কোনও ঘাটতি মিস হয়েছে তা আমাকে ব্যাখ্যা করবেন? একটি রাজনৈতিক রেফারেন্স ভাল জন্য অনুমিত মধ্যে বেকড হয়, কিন্তু এটি এখনও শিরোনাম থেকে সরানো যেতে পারে।
জন ডিভোরাক

3
@ জনডভোরাক: আমি মনে করি এটি খুব জিভ-ইন-গাল। উদাহরণস্বরূপ, বিবেচনা করুন যে রাষ্ট্রপতি পদ 4 বছর হয়, এবং যে আগামী নির্বাচনে নভেম্বর 2016. হয় ভেরী 2016 সালে তার রাষ্ট্রপতি মেয়াদকালের শিখর হয় তাহলে ...
El'endia Starman

উত্তর:


4

পাইথ, 59 - 15 = 44 বাইট

বা বাগ স্থির হওয়ার পরে 42 বাইট

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

Hexdump:

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কারণে ."ব্যর্থ হওয়ার পরে প্রথম দুটি অক্ষর ( ) প্রয়োজনীয় । ফিক্স প্রয়োগ করা হয়েছে। পোস্ট-বাগফিক্স ইন্টারপ্রেটারকে অনুমতি দেওয়া হলে, -2 বাইট


অপঠনযোগ্য স্ট্রিং সংক্ষেপণ ছাড়াই:

পাইথ, 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->...

Ungolfed:

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

একটি সমস্যা স্থির করেছে এবং গ্লেন ওকে ধন্যবাদ 7 বাইট সংরক্ষণ করেছে!


7

গণিত 143 156 - 15 (বোনাস) = 141 বাইট

2 বাইট সহ সংরক্ষিত লেজিওনম্যামাল 978 ধন্যবাদ।

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
Falseএবং Trueসঙ্গে 1<0এবং 1>0সম্মানজনকভাবে প্রতিস্থাপন করা যেতে পারে ।
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একটি নিখুঁত বর্গাকার হয়
  • nএকটি লুকাস সংখ্যা ঠিক যদি 5*n*n+20বা 5*n*n-20একটি নিখুঁত বর্গাকার হয়

এই সাইটে প্রমাণ স্কেচ আছে

সুতরাং, আউটপুট মান উপর নির্ভর করে 5*n*n+iজন্য iমধ্যে {4,-4,20,-20}। সংশ্লিষ্ট মানটির একটি পুরো সংখ্যা বর্গমূল নেই কিনা তা যাচাই করে ফাংশনটি fএকটি মান পরীক্ষা করে i, কেবলমাত্র নেগেটিভের মূল গ্রহণের ত্রুটি এড়াতে কেবল সেখানে রয়েছে ।absn=1, i=-20

ফাংশনটি STDIN থেকে পরীক্ষার fজন্য সংখ্যার মান নেয় n। পাইথন কেবল একবার ফাংশন কলের জন্য নয়, একবার এটি মূল্যায়ন করে।

সংখ্যাটি ফিবোনাকির নয় কিনা তা সংখ্যার f(4)*f(-4)রূপান্তরকরণের জন্য অন্তর্নিহিত বুলিয়ান ব্যবহার করে এবং একইভাবে লুকাসের জন্য নয়, এবং সংশ্লিষ্ট স্ট্রিংটি নেওয়া হয়। যদি চলার জায়গাগুলির অনুমতি দেওয়া হয় তবে স্ট্রিং ইন্টারলিভিং খাটো হবে।


প্রুফ স্কেচগুলি একটি মৃত লিঙ্ক।
এসকিউবি

@ এসকিউবি পৃষ্ঠাটি মনে হচ্ছে নিচে নেমে গেছে, আমি এটি আর খুঁজে পাচ্ছি না।
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

সিজেম, 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≤

লুকাস সংখ্যার একটি তালিকা তৈরি করতে আমি এটি ব্যয় করি:

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

এবং ইনপুটটি লুকাস সংখ্যার তালিকায় থাকলে এটি অনুসন্ধান করতে আমি ব্যয় করি:

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

এটি একটি স্ট্রিংটি পাইথনের% স্বরলিপি ব্যবহার করে ফর্ম্যাট করা হচ্ছে এর মতো কিছুতে :610:=এবং কোনও ফাংশনে রূপান্তরিত হয়েছে, যা পরে অ্যারের উপরে ম্যাপ করে সংক্ষিপ্ত করা হয়। (লুকাসের সংখ্যাগুলি স্বতন্ত্র, সুতরাং যোগফল সর্বদা 0 বা 1 হয়))

স্ট্রিং ফর্ম্যাটিং সহ শেষ বিটের জন্য @ মেগোকে ধন্যবাদ to


3

পার্ল, 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<$_

    এর চেয়ে এক বাইট ছোট

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

    এটি আর প্রযোজ্য না কারণ আমি জিনিসগুলি পুনর্বিন্যাস করে আমার কোডটি গল্ফ করেছি, ভেরিয়েবলের নাম পরিবর্তন করে আর বাইটগুলি সংরক্ষণ করে না। আমি এটিকে আবার পরিবর্তন করেছি যাতে পরিবর্তনশীল নামগুলি আবার বোঝা যায়।

  • $_-2?$f+$l*2:3মৃদু আকর্ষণীয়। মূলত, আমাকে 2লুকাস সংখ্যার জন্য বিশেষ-মামলা করতে হয়েছিল কারণ আমার প্রোগ্রামটি ফাইওনাচি এবং লুকাস নম্বরগুলি "আপডেট করার" পরে লুকাশের নম্বর কিনা তা পরীক্ষা করে । সুতরাং 2একটি নন-লুকাস নম্বর হিসাবে বিবেচিত হয়েছিল। $_-2?foo:barতার চেয়ে কম খাটো $_==2?bar:foo2016পরীক্ষার জন্য একই জিনিস ব্যবহার করা হয় ।

    এটি আর সত্য নয় কারণ আমি বিশেষ ক্যাসিংয়ের প্রয়োজন না হওয়ার জন্য প্রোগ্রামটি পুনর্গঠন করতে সক্ষম হয়েছি 2। তবে আমি তার $_-2016?stuff:Trumpপরিবর্তে এখনও ব্যবহার করি $_==2016?Trump:stuffযা এক বাইট দীর্ঘ।

  • যার কথা বললে আপনি ভাবতে পারেন যে আমি কীভাবে এই পুনর্গঠনটি করেছি। আমি প্রোগ্রামটি কেবল প্রয়োজনের তুলনায় 9 গুণ বেশি পুনরাবৃত্তি করতে পেরেছি, যার জন্য কেবল 2 বাইট ( *9) ব্যয় হয় তবে আমাকে অন্য কোথাও অনুমান করার অনুমতি দেয় যা গল্ফ স্টাফকে হ্রাস করতে সহায়তা করে।

  • কারণ ভেরিয়েবলগুলি ডিফল্ট শূন্য হয়,

    $f+=$_==$a

    এর চেয়ে কম

    $f=1if$_==$a
  • পার্ল খালি শব্দগুলিকে সমর্থন করে, সুতরাং আমার কোনও স্ট্রিং (\ o /) উদ্ধৃত করতে হবে না।


এটি কি দুটি বাইট খাটো নয়?
কনর ও'ব্রায়েন

@ সিও'বিʀɪᴇɴ প্রোগ্রামটি নিজেই ১৩২ বাইট, এবং আমি একটি যুক্ত করেছি কারণ এটি -nপতাকা সহ বলা প্রয়োজন (উত্তরে বর্ণিত হয়েছে)
Doorknob

আচ্ছা বুঝলাম. কী -nপতাকা না?
কনর ও'ব্রায়েন

1
@ CᴏɴᴏʀO'Bʀɪᴇɴ এটি while(<>) { ... }আপনার প্রোগ্রামের চারপাশে একটি লুপ ধরেছে । দেখুন: পার্ল ডক্স
ডুরকনব

1
@ ডোমহাস্টিংস তিনি ছিলেন না, তবে আমি <s> রূপান্তরিত </ s> তাকে পার্ল চেষ্টা করার জন্য নিশ্চিত করেছিলাম।
একটি স্প্যাগেটো

2

জুলিয়া, 101 100 বাইট

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

Ungolfed:

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[]অবচিত; এটি একটি দম্পতি বাইট সংরক্ষণ করতে হবে।
অ্যালেক্স এ

2

অষ্টাভে, 93 বাইট

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

এই পদ্ধতির ব্যতিক্রমের সাথে আমার ম্যাটল্যাব উত্তরের অনুরূপ যে অক্টাভা আপনাকে সরাসরি তাজা অ্যারেতে সূচি দেওয়ার অনুমতি দেয়:

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

2

এমএটিএল (প্রতিযোগিতা না করা), 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

সি ++ 11, 176 + 15 (# অন্তর্ভুক্ত) = 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
@ সিসেরিক আমি বোনাসের জন্য মনে করি না, কেবল বিবৃতি অন্তর্ভুক্ত করুন।
ফেজ

@ ফেজ আমি জানি, আমি বাইট সাইজটি দুটি অংশে ভাগ করছি (কোড + অন্তর্ভুক্ত), যখন আমি পোস্ট করি না শুধুমাত্র পুরো প্রোগ্রামটি না।
জেরেজেস

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')

ফিবোনাচি এবং লুকাসের জন্য একই কাজ। এটি একটি পুনরাবৃত্ত ফাংশন যা প্রথম দুটি মানকে init হিসাবে গ্রহণ করে।


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);           
    }

}

২০১ for সালের জন্য পরীক্ষা করার জন্য এবং কোডে "বাম্প" এর চেয়ে কম 15 বাইটের চেয়ে কম কোডটিতে "ট্রাম্প" ফিরিয়ে দেওয়ার কোনও উপায় আমি খুঁজে পাইনি।


আপনার ব্যাখ্যা প্রথম পংক্তি প্রেম!
স্কট

1

সি (জিসিসি) ,  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)এন-থাই ফিবোনাচি নাম্বার এবং এন-থ্রি লুকাশাস নামটির নাম দিন L(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একটি ফিবোনাচি নম্বর হয় তবে প্রথম বিটটি oসেট করা হবে 1
যদি nলুকাস নম্বর হয় তবে দ্বিতীয় বিটের oসেট 1
oহবে কোনটি আউটপুট দিতে হবে তা নির্ধারণের জন্য ব্যবহৃত হবে

সম্পাদন করা

  • ফর-লুপের শর্তটি গল্ফ করে 8 বাইট সংরক্ষণ করা হয়েছে: দ্বিতীয় পুনরাবৃত্তি থেকে শুরু করে, আমাদের আছে a<b<cএবং a<a+c=L(n)তাই ( b<=n || a+c<=n ) => a<n। আমি আসলে a<=nসঠিকভাবে পরিচালনা করা প্রয়োজনn=1
  • সিলিংক্যাটের জন্য 4 টি বাইট সংরক্ষণ করা হয়েছে! (একটি ভুলও সংশোধন করে, আমার কোড "2 => নেস" আউটপুট দিচ্ছিল)
  • 6 টি বাইট সংরক্ষণ করা:
    • 2 আবার সিলিংক্যাট ধন্যবাদ
    • 4 ভেরিয়েবলটি cসমান করে মুছে ফেলা F(n+1)যা অকেজো ছিল কারণ আমরা ইতিমধ্যে এবং এর F(n+1)সাথে গণনা করতে পারিab

সুপারিশ b+=aপরিবর্তেb=a+b
ceilingcat

0

পার্ল 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

Ungolfed:

# 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)

এফ (এন) এর চেয়ে কম বা সমান বৃহত্তম লুকাস নম্বর।


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)লুকা বা ফিবোনাচি হিসাবে সংখ্যার ভিত্তিতে ব্যবহারের জন্য সূচকটি আবিষ্কার করে।


0

ম্যাটল্যাব, 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একটি ফিবোনাসি বা লুকাস নম্বর কিনা তা পরীক্ষা করে দেখি ।

ফিবোনাচির জন্য, আমরা নিম্নলিখিত সূত্রটি ব্যবহার করি:

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

এই চেক দেখি হয় 5*n^2 + 4বা 5*n^2 - 4একটি নিখুঁত বর্গক্ষেত্র আছে। যদি anyতাদের মধ্যে থাকে তবে এটি একটি ফিবোনাচি নম্বর।

একটি লুকাস সংখ্যার সূত্রটি আমরা 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]। এবং উপাদানের যোগফল। স্পষ্টতই আমাকে ম্যাটল্যাবের এক-ভিত্তিক সূচকের কারণে যুক্ত করতে হবে।

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

তারপরে আমাকে চূড়ান্ত ফলাফল পেতে প্রাথমিক সেল অ্যারে ব্যবহার করতে হবে subsrefএবং substructসূচক করতে হবে।


0

জাভাস্ক্রিপ্ট (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

05 এ বি 1 ই , 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.