সিকোটিয়া ফিলি বোনাচি


14

পিসার লিওনার্দো (সিএ। 1175 - সিএ 1245) ফিবোনাচি হিসাবে বেশি পরিচিত । তবে এটি আসলে লাতিন "ফিলিয়াস বোনাচি" (বোনাচির পুত্র) এর জন্য একটি সংক্ষিপ্ত যা 18 শতকে তৈরি হয়েছিল ( উইকিপিডিয়া অনুসারে )।

এই চ্যালেঞ্জে, আপনাকে 1 থেকে 20 তম মধ্যে একটি অর্ডিনাল নম্বর দেওয়া হবে (আক্ষরিক অর্থে) এবং আপনাকে ফিবোনাকির ক্রম অনুসারে সংশ্লিষ্ট শব্দটি ফেরত দিতে হবে ।

মোড়টি হ'ল অর্ডিনাল নম্বরটি লাতিন ভাষায় দেওয়া হবে।

উদাহরণ : "duodecimus" ডলার ।89

সম্পূর্ণ I / O টেবিল

 input              | meaning | output
--------------------+---------+--------
 "primus"           |   1st   |    0
 "secundus"         |   2nd   |    1
 "tertius"          |   3rd   |    1
 "quartus"          |   4th   |    2
 "quintus"          |   5th   |    3
 "sextus"           |   6th   |    5
 "septimus"         |   7th   |    8
 "octavus"          |   8th   |   13
 "nonus"            |   9th   |   21
 "decimus"          |  10th   |   34
 "undecimus"        |  11th   |   55
 "duodecimus"       |  12th   |   89
 "tertius decimus"  |  13th   |  144
 "quartus decimus"  |  14th   |  233
 "quintus decimus"  |  15th   |  377
 "sextus decimus"   |  16th   |  610
 "septimus decimus" |  17th   |  987
 "duodevicesimus"   |  18th   | 1597
 "undevicesimus"    |  19th   | 2584
 "vicesimus"        |  20th   | 4181

বিধি

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

উত্তর:


8

আর , 91 86 বাইট

ব্রুট-বাধ্যতামূলক UTF8 অনুসন্ধান সারণীতে বাইটসের যোগফলের সূচকটি দেখুন এবং উত্তর দেওয়ার জন্য ফিবোনাকির জাদু তৈরির যাদুটি ব্যবহার করুন ।

function(x)round(1.618^match(sum(!x)%%93,!'%(-1!5+3JOSCW6')*.2765)
"!"=utf8ToInt

এটি অনলাইন চেষ্টা করুন!

সম্পাদনা করুন: -২ বাইট উন্নত সংখ্যার বৃত্তাকার দ্বারা

সম্পাদনা করুন: -3 বাইটস চেহারাটির পরিবর্তন সহ (ইঙ্গিতটির জন্য ধন্যবাদ, জিওস্পে!)


ইউটিএফ 8 লুকআপের সাথে অনুরূপ কিছু করতে চেয়েছিল। ফাইবোনাসিকে এমনভাবে করতে পারার কোনও চিহ্ন ছিল না। সম্ভবত আমি কি করতে (চেয়েছিলেন চেয়ে খাটো chartrFibonacci মূল্যের UTF8 হওয়া, এবং তারপর সঙ্গে সমষ্টি UTF8 হওয়া intToUtf8আউটপুট chartr
JayCe


"sextus decimus"জিউসেপ্পে ব্যর্থ বলে মনে হচ্ছে ।
জে.ডো

1
আপনি জিউজ্পে সঠিক জিনিসটিতে ছিলেন, দেখা গেল সেখানে 3 টি ম্যাজিক 2-অঙ্কের মডুলি রয়েছে যার জন্য বাইটের যোগফল অনন্য, 69, 88 এবং 93, এবং 88 টি ছিল যা কোনও ধ্রুবক যুক্ত করার প্রয়োজন হয়নি বোধগম্য স্ট্রিং।
জে.ডো

9
কখনও কখনও আমার কাছে মনে হয় অর্ধেক কোডগল্ফ সঠিক মডেলকে মডুলাস হিসাবে ব্যবহার করছে ...
জিউসেপে

4

রুবি, 104 93 বাইট

->x{[8,4181,3,144,21,13,0,1,233,5,987,0,377,55,0,89,1,1597,34,610,0,2,2584][x.sum%192%76%23]}

এটি অনলাইন চেষ্টা করুন!

কেবলমাত্র বাইটসের যোগফল, মডিউল 192 মডিউল 76 মডিউল 23 এবং সূচী সন্ধানের টেবিলের মধ্যে নিয়ে যায়। (জাদু সংখ্যা দ্বারা নিষ্ঠুর শক্তি দ্বারা পাওয়া।)


4

পরিষ্কার , 87 বাইট

\nপ্রকৃত কাঁচা মানগুলির সাথে সংকলকটির সূক্ষ্ম হওয়ায় ব্যতীত সমস্ত পালানোকে একটি বাইট হিসাবে ধরা হয়। (টিআইও এবং এসই এর বৈধ UTF-8 না হওয়া নিয়ে সমস্যা রয়েছে এবং তাই এটি এখানে পালিয়ে গেছে)

FryAmTheEggman একটি দুর্দান্ত বিক্ষোভ / workaround: এখানে

import StdEnv
$s=hd[i\\i<-k 1 0&c<-:"\340\152\060\065\071\354\172\045\223\n\255\362\132\137\143\026\244\051\344\270"|c==sum s]
k b a=[a:k(a+b)b]

এটি অনলাইন চেষ্টা করুন!

ফাংশনটি সংজ্ঞায়িত করে $ :: [Char] -> Int, যা অনুক্রমের কোন পদটি (সহায়ক ফাংশন দ্বারা উত্পন্ন k) ফিরে আসতে হবে তা নির্ধারণ করতে বড় হাতের অক্ষরের মানগুলির সংমিশ্রণে স্বতন্ত্রতা ব্যবহার করে ।


4

6502 মেশিন কোড (সি 64), 82 বাইট

00 C0 20 9E AD 20 A3 B6 A8 88 A9 05 4A 90 02 49 B1 71 22 88 10 F6 29 1F C9 07
B0 02 69 0D A8 BE 32 C0 B9 1E C0 4C CD BD 00 00 00 00 03 00 0A 00 06 10 01 00
FF 00 02 00 00 00 00 00 08 00 15 0D DB 02 18 90 3D 55 79 05 FF E9 62 22 01 59
01 37 FF 03

এটি হ্যাশিং (অবশ্যই) ব্যবহার করে তবে 6502-এ সংক্ষিপ্ত বাস্তবায়নের জন্য অনুকূলিত হয়েছে, স্থানান্তরিত করে বহনকারী পতাকাটির সুবিধা গ্রহণ করে এবং এর সাথে ব্যবহার করা হয়। হ্যাশিংয়ের জন্য যাদু নম্বরগুলি সামান্য সি প্রোগ্রামের সাথে জোর করে জোর করে পাওয়া গিয়েছিল; FFবাইট হ্যাশ টেবিল দুর্ভাগ্যজনক গর্ত হয়;)

বাইট গণনা: 2 বাইট লোড ঠিকানা, 38 বাইট কোড, 42 বাইট মান জন্য হ্যাশ টেবিল।

অনলাইন ডেমো

ব্যবহার: SYS49152"[ordinal]"উদাহরণস্বরূপ SYS49152"DUODECIMUS"। (নোটগুলি ডিফল্ট সি 64 কনফিগারেশনের উপরের ক্ষেত্রে প্রদর্শিত হবে তা নোট করুন)।

গুরুত্বপূর্ণ : প্রথম শুরুর আগে একটি NEWকমান্ড জারি করুন । এটি প্রয়োজনীয় কারণ কারণ LOADসিএস 64 বেসিক কমান্ডটি কিছু বেসিক ভেক্টরগুলির সাথে ফিডল করে, এমনকি কোনও মেশিন প্রোগ্রামকে কিছু পরম ঠিকানায় লোড করার সময় (যেমন এখানে $C000/ 49152)।

মন্তব্য বিচ্ছিন্ন :

         00 C0                          ; load address
.C:c000  20 9E AD    JSR $AD9E          ; evaluate expression
.C:c003  20 A3 B6    JSR $B6A3          ; evaluate as string
.C:c006  A8          TAY                ; length to y register
.C:c007  88          DEY                ; decrement (start at last char)
.C:c008  A9 05       LDA #$05           ; start value for hash
.C:c00a   .hashloop:
.C:c00a  4A          LSR A              ; shift right
.C:c00b  90 02       BCC .skip          ; shifted bit zero? -> skip xor
.C:c00d  49 B1       EOR #$B1           ; xor "magic" value
.C:c00f   .skip:
.C:c00f  71 22       ADC ($22),Y        ; add current character (plus carry)
.C:c011  88          DEY                ; previous character
.C:c012  10 F6       BPL .hashloop      ; pos >= 0? -> repeat
.C:c014  29 1F       AND #$1F           ; mask lowest 5 bits
.C:c016  C9 07       CMP #$07           ; larger than 7 ?
.C:c018  B0 02       BCS .output        ; -> to output
.C:c01a  69 0D       ADC #$0D           ; add 13
.C:c01c   .output:
.C:c01c  A8          TAY                ; hash to y register
.C:c01d  BE 32 C0    LDX .lb-8,Y        ; load low byte from hashtable
.C:c020  B9 1E C0    LDA .hb-8,Y        ; load high byte from hashtable
.C:c023  4C CD BD    JMP $BDCD          ; to output of 16bit number
.C:c026   .hb:
.C:c026  00 00 00 00 .BYTE $00,$00,$00,$00
.C:c02a  03 00 0A 00 .BYTE $03,$00,$0A,$00
.C:c02e  06 10 01 00 .BYTE $06,$10,$01,$00
.C:c032  FF 00 02 00 .BYTE $FF,$00,$02,$00
.C:c036  00 00 00 00 .BYTE $00,$00,$00,$00
.C:c03a   .lb:
.C:c03a  08 00 15 0D .BYTE $08,$00,$15,$0D  ; second byte used in .hb as well
.C:c03e  DB 02 18 90 .BYTE $DB,$02,$18,$90
.C:c042  3D 55 79 05 .BYTE $3D,$55,$79,$05
.C:c046  FF E9 62 22 .BYTE $FF,$E9,$62,$22
.C:c04a  01 59 01 37 .BYTE $01,$59,$01,$37
.C:c04e  FF 03       .BYTE $FF,$03

সি 64 বেসিক ভি 2 পরীক্ষার স্যুট

( DATAলাইনে মেশিন প্রোগ্রামযুক্ত )

অনলাইন ডেমো

0fOa=49152to49231:rEb:pOa,b:nE
1?"primus",:sY49152"primus":?
2?"secundus",:sY49152"secundus":?
3?"tertius",:sY49152"tertius":?
4?"quartus",:sY49152"quartus":?
5?"quintus",:sY49152"quintus":?
6?"sextus",:sY49152"sextus":?
7?"septimus",:sY49152"septimus":?
8?"octavus",:sY49152"octavus":?
9?"nonus",:sY49152"nonus":?
10?"decimus",:sY49152"decimus":?
11?"undecimus",:sY49152"undecimus":?
12?"duodecimus",:sY49152"duodecimus":?
13?"tertius decimus",:sY49152"tertius decimus":?
14?"quartus decimus",:sY49152"quartus decimus":?
15?"quintus decimus",:sY49152"quintus decimus":?
16?"sextus decimus",:sY49152"sextus decimus":?
17?"septimus decimus",:sY49152"septimus decimus":?
18?"duodevicesimus",:sY49152"duodevicesimus":?
19?"undevicesimus",:sY49152"undevicesimus":?
20?"vicesimus",:sY49152"vicesimus":?
21dA32,158,173,32,163,182,168,136,169,5,74,144,2,73,177,113,34,136,16,246,41,31
22dA201,7,176,2,105,13,168,190,50,192,185,30,192,76,205,189,0,0,0,0,3,0,10,0,6
23dA16,1,0,255,0,2,0,0,0,0,0,8,0,21,13,219,2,24,144,61,85,121,5,255,233,98,34,1
24dA89,1,55,255,3


3

সি (জিসিসি) , 135 129 বাইট

সিলিংক্যাট এবং লোগারনের পরামর্শে 6 বাইট নিচে

f;i;b;o;n(char*a){for(f=i=b=o=0;*a;o+=21*b+++*a++-70);for(b=1,o="TACIHAAJQFSAAARCAMGKDANPEAOAAL"[o%30];--o>65;f=b,b=i)i=f+b;a=i;}

এটি অনলাইন চেষ্টা করুন!

ব্যাখ্যা:

f; i; b; o; // Variables

n (char *a)
{
     // Calculate a silly hash of incoming string
     for (f = i = b = o = 0; *a; o += 21 * b++ + *a++ - 70);

     // Use the hash to index into the array of number values
     // and calculate the corresponding Fibonacci sequence element
     for
     (
         b = 1, 
         o = "TACIHAAJQFSAAARCAMGKDANPEAOAAL"[o % 30]; 

         --o > 65; 
         f = b, b = i
     )
         i = f + b;

     // implicit return
     a = i;
}

আপনি এর return i;সাথে প্রতিস্থাপন করতে পারেনa=i;
Logern

2

পাইথ , 54 বাইট

L?>b1+ytbyttbbyxc."axnÛ±r†XVW‹(„WîµÏ£"2+hQ@Q618

পরীক্ষা স্যুট

বিজ্ঞপ্তি: কোডটি কিছু ছাপানো অক্ষর ব্যবহার না করায় এটি স্ট্যাক এক্সচেঞ্জে সঠিকভাবে প্রদর্শিত না হতে পারে। প্রদত্ত লিঙ্কটি একটি কর্মক্ষম এবং অনুলিপি-পাস্তেযোগ্য উত্সকে নিয়ে যায়।

দীর্ঘ গল্প সংক্ষিপ্ত, Q[0]+Q[618%len(Q)]সমস্ত গৃহীত ইনপুটগুলির জন্য অনন্য ফলাফল দেয় Q


1

পাইথন 2 , 292 বাইট

f=lambda x:x>1and f(x-1)+f(x-2)or x
def g(t):
	for i,c in zip("pr secun ter qua qui sex sep oc no ec".split(),range(1,11))+zip("un duo es ev".split(),(1,2,20,"-")):t=t.replace(i,str(c))
	return f(abs(eval("+".join("".join((" ",c)[c in"0123456789-"]for c in t).split()).replace("+-+","-")))-1)

এটি অনলাইন চেষ্টা করুন!

ফিবোনাচি জেনারেটর এই উত্তর থেকে নির্লজ্জভাবে চুরি করেছে ।

প্রতিটি শব্দকে তার অর্থবহ উপাদানগুলির মধ্যে বিভক্ত করে বাকী অংশগুলি বিসর্জন দেয় (উদাহরণস্বরূপ, আমরা কেবল "duo ev es" -> "2 - 20" -> অ্যাবস ("2-20") -> 18)।

গণিত মান (বিয়োগ 1 থেকে 0-অফসেট) ফিবোনাচি জেনারেটর ফাংশনে পাস করে।

অব্যক্ত ব্যাখ্যা:

# Fibonacci function
f=lambda x:x>1and f(x-1)+f(x-2)or x

def g(t):
    # generates a list of key, value pairs like [("pr", 1, ..., ("ec", 10)] +
    values = zip("pr secun ter qua qui sex sep oc no ec".split(), range(1,11))

    # adds values to existing list
    values += zip("un duo es ev".split(),(1,2,20,"-"))

    # replace the matching values in the string with the appropriate number/sign.
    # ORDER MATTERS - if "un" is searched for before "secun", this generates incorrect values.
    for i,c in values:
        t = t.replace(i,str(c))

    # replace each non-digit, non-minus character in string with "c"
    t = [(" ",c)[c in"0123456789-"]for c in t]

    # convert space-replaced array back to a string
    # then split it on spaces, creating an array of values
    t = "".join(t).split()

    # turn the array back into a string, with each individual item separated by "+"
    # this will cause "-" to become "+-+" (since "-" is ALWAYS between two numbers), so prelace that sequence with "-"
    t = "+".join(t).replace("+-+","-")

    # evaluate the string as an expression, and take the absolute value for when - occurs
    t = abs(eval(t))

    # pass the value, minus 1 for 0-offset, to the Fibonacci function.
    return f(t-1)

1

পাইথন 2 , 97 79 বাইট

lambda s:int(1.618**('RV3NJ^[KDP=Z62AWeG<C'.find(chr(hash(s)%69+48)))*.4474+.5)

এটি অনলাইন চেষ্টা করুন!

প্রথমত, আমরা লাতিন থেকে একটি সংখ্যায় রূপান্তর করতে চাই n; মোট কমপক্ষে ১১ টি অক্ষর রয়েছে কিনা তা নিশ্চিত করার জন্য পর্যাপ্ত সময় ইনপুট স্ট্রিংয়ের প্রতিরূপ করে310 এটি সম্পাদন করা হয় ; এবং তারপরে আরডি এবং তম অক্ষর (শূন্য সূচকযুক্ত) একটি অনন্য যুগল তৈরি করে যা হ্যাশ মোড 69 গ্রহণ করে এবং এটিকে মুদ্রণযোগ্য চরে পরিণত করে।

এখন আমাদের আছে n। খুঁজতে nতম ফিবানচি নম্বর, আমরা ব্যবহার করতে পারি rounding পদ্ধতি , যেমন আমরা গুল (20) পর্যন্ত প্রয়োজন শুধুমাত্র সঠিকতার অনেকগুলি সংখ্যা হিসেবে ব্যবহার।


1

জাভাস্ক্রিপ্ট (নোড.জেএস) , 100 97 95 92 91 বাইট

x=>1.618**(p=parseInt)("1 jgf7  ei 490dbch62385a"[p(x.length+x,32)%12789%24],36)*.4474+.5|0

এটি অনলাইন চেষ্টা করুন!

সতর্কতা: ফ্লাইটিং পয়েন্টের ব্যর্থতার কারণে কাজ করে

জাভাস্ক্রিপ্টের একটি অন্তর্নির্মিত হ্যাশ ফাংশন নেই, না একটি সংক্ষিপ্ত পর্যায়ে অক্ষর থেকে ASCII ফাংশন ( String.charCodeAtইতিমধ্যে স্বল্পতম), তাই আমার নিজের দ্বারা একটি সাধারণ হ্যাশ ফাংশন সংজ্ঞায়িত করা প্রয়োজন।

হ্যাশ গণনার পরে চ্যাস ব্রাউন যেমন করেছিলেন তেমন রাউন্ডিং পদ্ধতি ব্যবহার করেছেন।

নিষ্ঠুর-বাধ্য করার পুরো দিন পরে আরও ভাল পাওয়া যায়:

b32_to_dec(x.length + x) % 12789 % 24 (* ভাসমান পয়েন্টের অসম্পূর্ণতা)

b32_to_dec(x.length + x) % 353 % 27 (* ভাসমান পয়েন্টের অসম্পূর্ণতা)

b36_to_dec(x.length + x[2]) % 158 % 29 - 4

b36_to_dec(x[2] + x.length) % 741 % 30

b36_to_dec(x[0] + x[2] + x.length) % 4190 % 27

parseInt(x.length + x, 32) ফলাফল

primus 7310236636
secundus 9773632960476
tertius 272155724764
quartus 269453490140
quintus 269461747676
sextus 7054
septimus 9774067964892
octavus 266721394652
nonus 192700380
decimus 254959770588
undecimus 350449413217244
duodecimus 36520018280274912 **NOT PRECISE**
tertius decimus 1302947875804
quartus decimus 1300245641180
quintus decimus 1300253898716
sextus decimus 37774
septimus decimus 42759416798172
duodevicesimus 43016381192006637977600 **NOT PRECISE**
undevicesimus 1326703556626028691456 **NOT PRECISE**
vicesimus 351376069188572

ভাসমান পয়েন্টের ভুল ব্যবহারের সংস্করণ: 95 বাইট

x=>1.618**(p=parseInt)("52d7i 6  he 8309jafc 41bg"[p(x.length+x[2],36)%158%29-4],36)*.4474+.5|0

এটি অনলাইন চেষ্টা করুন!

b36_to_dec(x.length + x[2]) % 158 % 29 - 4

হ্যাশ টেবিল

 Latin word           | Length | 3rd | Hash | Decimal | %158 | %29-4
----------------------+--------+-----+------+---------+------+-------
 primus               |      6 | i   | 6i   |     234 |   76 |    14
 secundus             |      8 | c   | 8c   |     300 |  142 |    22
 tertius              |      7 | r   | 7r   |     279 |  121 |     1
 quartus              |      7 | a   | 7a   |     262 |  104 |    13
 quintus              |      7 | i   | 7i   |     270 |  112 |    21
 sextus               |      6 | x   | 6x   |     249 |   91 |     0
 septimus             |      8 | p   | 8p   |     313 |  155 |     6
 octavus              |      7 | t   | 7t   |     281 |  123 |     3
 nonus                |      5 | n   | 5n   |     203 |   45 |    12
 decimus              |      7 | c   | 7c   |     264 |  106 |    15
 undecimus            |      9 | d   | 9d   |     337 |   21 |    17
 duodecimus           |     10 | o   | 10o  |    1320 |   56 |    23
 tertius decimus      |     15 | r   | 15r  |    1503 |   81 |    19
 quartus decimus      |     15 | a   | 15a  |    1486 |   64 |     2
 quintus decimus      |     15 | i   | 15i  |    1494 |   72 |    10
 sextus decimus       |     14 | x   | 14x  |    1473 |   51 |    18
 septimus decimus     |     16 | p   | 16p  |    1537 |  115 |    24
 duodevicesimus       |     14 | o   | 14o  |    1464 |   42 |     9
 undevicesimus        |     13 | d   | 13d  |    1417 |  153 |     4
 vicesimus            |      9 | c   | 9c   |     336 |   20 |    16
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.