আমার কত অধ্যায় আছে?


18

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

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

আপনি কোনও যুক্তিসঙ্গত ফর্ম্যাটে আইও নিতে পারেন, উদাহরণস্বরূপ STDIN / STDOUT পড়া / লেখার জন্য বা একটি ফাইল, ফাংশন আর্গুমেন্ট / রিটার্ন মানগুলি, ব্যবহারকারীকে অনুরোধ করা ইত্যাদির সমস্ত অনুমোদিত। ইনপুটটি সর্বদা বাইবেলের books 66 টি বইয়ের মধ্যে একটি এবং কেবল ছোট হাতের অক্ষরে থাকবে। এর অর্থ হ'ল যদি আপনাকে অন্য কোনও ইনপুট দেওয়া হয় তবে অনির্ধারিত আচরণ অনুমোদিত। যেহেতু কেবলমাত্র possible 66 টি সম্ভাব্য ইনপুট এবং আউটপুট রয়েছে তাই কিং জেমস সংস্করণে বাইবেল অধ্যায়গুলির উইকিপিডিয়ায় লেখা পৃষ্ঠা অনুসারে সেগুলি এখানে সরবরাহ করা হয়েছে :

genesis         50
exodus          40
leviticus       27
numbers         36
deuteronomy     34
joshua          24
judges          21
ruth            4
1 samuel        31
2 samuel        24
1 kings         22
2 kings         25
1 chronicles    29
2 chronicles    36
ezra            10
nehemiah        13
esther          10
job             42
psalms          150
proverbs        31
ecclesiastes    12
song of solomon 8
isaiah          66
jeremiah        52
lamentations    5
ezekiel         48
daniel          12
hosea           14
joel            3
amos            9
obadiah         1
jonah           4
micah           7
nahum           3
habakkuk        3
zephaniah       3
haggai          2
zechariah       14
malachi         4
matthew         28
mark            16
luke            24
john            21
acts            28
romans          16
1 corinthians   16
2 corinthians   13
galatians       6
ephesians       6
philippians     4
colossians      4
1 thessalonians 5
2 thessalonians 3
1 timothy       6
2 timothy       4
titus           3
philemon        1
hebrews         13
james           5
1 peter         5
2 peter         3
1 john          5
2 john          1
3 john          1
jude            1
revelation      22

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

যথারীতি এটি একটি চ্যালেঞ্জ, সুতরাং আপনার পক্ষে যতটা সম্ভব সংক্ষিপ্ততম প্রোগ্রামটি (বাইটে পরিমাপ করা) করার চেষ্টা করুন। মজা গল্ফিং আছে!


3
আউটপুট স্থির নয়, তবে কেন এই কলমোগোরভ-জটিলতা ?
LyricLy

3
@ লাইরিলি কারণ আউটপুট স্থির না হওয়া সত্ত্বেও, এটি দুটি ভিন্ন সেট ডেটা উত্পন্ন করার সবচেয়ে কার্যকরী উপায়টি দেখার বিষয়ে এখনও রয়েছে: 1) বইয়ের নামগুলি (বা নামটির একটি অংশ এটি সনাক্ত করার জন্য যথেষ্ট দীর্ঘ) এবং ২ ) অধ্যায়গুলির সংশ্লিষ্ট সংখ্যা।
ডিজেএমসিএমহেম

3
আপনি কেবলমাত্র একটি সাধারণ পরিমাণের সাথে
সমস্তগুলি দেখুন

4
আমি enklactএই চ্যালেঞ্জ থেকে বেরিয়ে আসতে চাই তবে আমি পারব না ...
3:37

3
@ ডিজেএমসিএমহেম আপনি এই সত্যটি ভুলে গেছেন যে unique 66 টি অনন্য বর্ণ নেই। : পি
সম্পূর্ণমানবিক

উত্তর:


12

জেলি , 127 বাইট

“£ÐgƁ÷ḅ*Wßßɦ*⁷ċṗṿỵ×Ɓṿ⁷ḢQ’b7+\;“BƝ‘
OḄ;407;270;“ọḷḊḲɦ‘%/i@“¡Ṙ×!⁸Ọ5`ỊV-ṙQȷṖÞ(sĿȮ^k³M"ɓmEf¤*0C[ạƇŻȥ#BṚñİmZẓeȦUƈ!ċ€@Ȧʋ)ƙḅyẉ’b158¤ị¢

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

পরীক্ষার মামলা

কিভাবে এটা কাজ করে

মূলত, এটি অক্ষরগুলির ইনপুটগুলির ক্রমগুলি বাইনারি মান হিসাবে রূপান্তরিত করার চেষ্টা করে, উদাহরণস্বরূপ "joel"-> [106, 111, 101, 108]-> 2^3*106 + 2^2*111 + 2^1*101 + 2^0*108

তারপরে, এই মানটি 407 মোডে নেওয়া হবে, তারপরে মোড 270, তারপরে [আরও কয়েকটি মোড], তারপরে 160 টি মোড This

ইনপুটটির সর্বনিম্ন সংখ্যার অধ্যায় রয়েছে এমনটির “ọḷḊḲɦ...ƙḅyẉ’b158¤মান খুঁজতে পূর্ণসংখ্যা তালিকা থেকে সূচী হয় nhas nজোয়েল অধ্যায়গুলির 7-তমতম সংখ্যার সাথে ঘটে।

এই অধ্যায়ের সঠিক সংখ্যাটি অনুসন্ধানের জন্য nতালিকাটিতে আরও তালিকাবদ্ধ করা হয় “£ÐgƁ÷ḅ*Wßßɦ*⁷ċṗṿỵ×Ɓṿ⁷ḢQ’b7+\;“BƝ‘

সম্ভাব্য উন্নতি: একই সংখ্যার অধ্যায়গুলির ইনপুটগুলি মোডগুলি থেকে একই মানটিতে হ্যাশ করতে পারে (0% সংঘর্ষের প্রয়োজন হয় না), তবে মোডগুলির ক্রম নির্ধারণ করার জন্য আমি আমার প্রোগ্রামটিতে অ্যাকাউন্ট করি নি।



@( %/i@“...’b158¤ị¢-> %/“...’b158¤iị¢) এড়িয়ে একটি বাইট সংরক্ষণ করুন । শুরুতে ( OḄ;407;270;“ọḷḊḲɦ‘-> OḄ;“ẋn=:!ס‘+160¤) একক কোড-পৃষ্ঠা সূচি তালিকার 160 এর অফসেট ব্যবহার করে অন্য একটি বাইট সংরক্ষণ করুন ।
জোনাথন অ্যালান 21

10

এক্সেল, 373 বাইট

গণিতের উত্তর ( 6a+b+8c+5d+3e modulo 151) থেকে @ মিশার পদ্ধতির পুনরায় ব্যবহার :

=CHOOSE(MOD(6*CODE(LEFT(A1,1))+CODE(MID(A1,2,1))+8*CODE(MID(A1,3,1))+5*CODE(MID(A1&A1,4,1))+3*CODE(MID(A1&A1,5,1)),151)+1,30,,,,27,,,,3,12,,,9,,149,,,28,,,13,,,35,3,,35,7,,8,,20,,49,23,13,4,,,4,,,,,,,2,,,39,,,15,3,,3,9,,12,27,,,,,,51,15,,,,70,,65,,21,11,,,4,,24,,,6,,2,1,,,,,,2,,,30,,,,,,23,,,33,,20,,,15,,,4,,4,,,12,2,,2,47,23,,2,,,,,41,,,3,,,5,,,,,11,,21,5,,,,5,2,3,26)+1

সন্ধানটি অধ্যায়গুলি দেয় -1এবং তারপরে একটি যুক্ত করে। পরিবর্তন করেন 10বা 9দুইবার, এবং ,1,মধ্যে ,,4 বার।

পুরানো পদ্ধতির আপডেট হয়েছে। এক্সেল, 460 401 বাইট

সিএসভি হিসাবে সংরক্ষণ করুন, বইয়ের নাম প্রথম লাইনের শেষে প্রবেশ করা হয়েছে ( C1), ফলাফল এতে প্রদর্শিত C2:

1c,16,revelation
1co,29,"=VLOOKUP(LEFT(C1,1)&MID(C1,3,1)&MID(C1,6,1),A:B,2)"
1j,5
1k,22
1p,5
1s,31
1t,6
1ts,5
2c,13
2co,36
2j,1
2k,25
2p,3
2s,24
2t,4
2ts,3
3j,1
a,9
at,28
c,4
d,12
du,34
e,12
ee,48
eh,6
eo,40
er,10
g,6
gn,50
h,3
hbw,13
hg,2
hs,14
i,66
j,42
jd,1
jds,21
je,3
jh,21
jm,5
jn,4
jr,52
js,24
lm,5
lv,27
m,7
ml,4
mr,16
mt,28
n,3
nhi,13
nm,36
o,1
p,150
pi,1
pip,4
po,31
r,16
rt,4
rv,22
s,8
t,3
zc,14
zp,3

লুকআপ টেবিল জন্য, আমরা বাইরে চলে যাবে et 10এবং l 24কারণ এই ম্যাচ er 10এবং js 24যথাক্রমে।


আমরা প্রায়শই এক্সেল সূত্রের উত্তরগুলি দেখতে পাই না যার জন্য অনুসন্ধান সারণী প্রয়োজন। অভিনবত্ব এবং সম্পাদনের জন্য উত্সাহ দিন। আপনি এক্সেল স্কোরিং সম্পর্কে কিছু মেটা প্রশ্ন অনুসন্ধান / পোস্ট করতে চাইতে পারেন। বিশেষত, আমি মনে করি আপনি এ কলামের বিন্যাসের জন্য আরও কয়েকটি বাইট পাওনা থাকতে পারেন। এছাড়াও, আপনি সম্ভবত এ এবং সি এবং বি: সি থেকে এ: বিতে স্থানান্তর করতে চান যাতে আপনি এ এর ​​সমস্ত খালি কোষের জন্য "চার্জ" পাবেন না আমার মাথার উপরের অংশে, আমি মনে করি টিএসভি / র আকার পুরো শীটের সিএসভি পাঠ্য ফাইলটি কি সঠিক স্কোর হতে পারে?
স্পার 18

সাধারণত, আমি মনে করি যে .csv ফাইলের অক্ষরগুলির বাইকোয়ান্ট (এই ক্ষেত্রে অন্তর্ভুক্ত ইনপুট মানের বিয়োগকারককে বিয়োগ করা উচিত) এই ধরণের এক্সেল উত্তরের স্কোর হওয়া উচিত - যা আমার গণনা অনুসারে উপরের স্কোরকে ছেড়ে যায় 401 বাইট
টেলর স্কট

টেলরস্কট, আমার কাছে নতুন লাইন চরিত্র হিসাবে সিআর-এলএফ ছিল। ধরুন 401 বনাম 464 এর কারণেই?
ওয়ার্নিশ 14

@ ওয়ার্নিশ, সংক্ষেপে, হ্যাঁ - আপনি ধরে নিতে পারেন যে লাইনফিডগুলি ASCII অক্ষর হিসাবে চারকোড 10 দিয়ে সংরক্ষণ করা হয়, যার অর্থ তারা 1 বাইট হিসাবে গণনা করেন
টেলর স্কট

9

জাভাস্ক্রিপ্ট (ES6), 251 197 বাইট

s=>`-  cE1$ " +%&  %  &!!· $!#&!!)!'=6 &!6".!  -!!Q$"/  779@@= % & $'1 U( I>!!  K * "S< :  9$!C %  . $. 9E1/ %!!'" + $ % `.split`!`.join`   `.charCodeAt(parseInt(s[2]+s[0]+s[5],36)%913%168%147)-33

পরীক্ষা

ফর্ম্যাট এবং মন্তব্য

s =>                                 // s = book name
  `-  cE1$ " +%&  %  &!!· (...)`     // data string (truncated)
  .split`!`.join`   `                // inflate padding characters '!' -> 3 spaces
  .charCodeAt(                       // read the ASCII code at the position found by
    parseInt(s[2] + s[0] + s[5], 36) // parsing 3 characters of the input in this exact
    % 913 % 168 % 147                // order as base 36 and applying three consecutive
  ) - 33                             // modulo operations, then subtract 33

2
আপনি আনুষ্ঠানিকভাবে জেএসে সর্বাধিক দক্ষ হ্যাশিং পদ্ধতি সন্ধান করার মাস্টার ... বা আপনার কাছে এমন কোনও প্রোগ্রাম রয়েছে যা আপনার জন্য পদ্ধতি আবিষ্কার করে? ;)
ইটিএইচ প্রডাকশন 21

@ এথ প্রডাকশনগুলি আমি কোনও সময়ে জেনেরিক নোড প্রোগ্রামটি লিখেছিলাম, তবে এটি বিশেষভাবে দ্রুত নয় তাই বেশিরভাগ সময় আমি কাস্টম কোড লিখি ... O_o
Arnauld

9

গণিত: 323 294 বাইট

Uncompress["1:eJxTTMoPSpvOwMBQzAIkfDKLSzJlgAwCBEhtJi8qwQUnpqESsqgEHyqhAjePBc7lgBOccEIUThiBCAm4AayECUZUghmV0EAlBFAdxILqN17CgWMCNwUn4QQnxEAEDyqBcLgkKsGO6gUmLAROX8rjJSRQCSU4IYpKILzAiDfEebG4wADVDmZchBYqgRYVbLgIRPiJ4VXHDDdKGuZ9AAP6TUg="][[Mod[ToCharacterCode@StringTake[#<>#,5].{6,1,8,5,3},151,1]]]&

কিভাবে এটা কাজ করে

একটি বই চরিত্র কোড সঙ্গে শুরু করার জন্য a, b, c, d, eনির্ণয় (প্রায় প্রয়োজনে মোড়কে) 6a+b+8c+5d+3emodulo 151, যা অনন্য হতে হবে, এবং তারপর তালিকার হয় দৈর্ঘ্য 151. (অব্যবহৃত এন্ট্রির একটি সংকুচিত তালিকায় অধ্যায়গুলির সংখ্যা আপ দেখায় পূর্ববর্তী এন্ট্রিটির সদৃশ দিয়ে পূর্ণ।

তালিকা সংকোচনের ধারণার জন্য @ নাম্বারমানিয়াকে ধন্যবাদ, যা একটি সংখ্যা দেওয়া কঠিন তবে এখানে উন্নতির একটি বিশাল অংশ।

পুরানো সংস্করণ: গাণিতিক, 548 435 407 বাইট

Join["111112333333344444455555666789"~(p=StringPartition)~1,"1010121213131314141616162121222224242425272828293131343636404248505266"~p~2,{"150"}][[Max@StringPosition["2jn3jnjduoaapimhgi2pe2tshbkjeonhntttzpn2toclsjnjmlhpiprtu1jn1pe1tsjmjlmt1toehiglimcmsnoaometrerzdnlecs2cihbwnhihshzcr1cimrarmsjhojds1kgrva2sujsalku2kglviatcmte1co1supordur2conmreosjbbeeegnijriiahpas",""<>#&@Characters[#<>#][[{1,3,6}]]]/3]]&

কিভাবে এটা কাজ করে

আমরা একে নাম রূপান্তর nameঅক্ষর 1, 3, এবং 6 namename(যেমন leviticusহয়ে lvi, jobহয়ে jbb) এটি খুঁজছেন আপ আগে।

আমরা তালিকায় যে তালিকাটি দেখি সেগুলি 1-অঙ্ক এবং 2-সংখ্যার অধ্যায়ের সংখ্যাগুলিকে স্ট্রিংয়ে একসাথে রেখে সামান্য সঙ্কুচিত হয়।

গণিত: 40 বাইট, অ-প্রতিযোগিতামূলক

WolframAlpha["# chapters "<>#,"Result"]&

হ্যাঁ।


আপনি যদি তালিকায় ব্যবহার Compressকরেন তবে আপনি একটি স্ট্রিং পাবেন যা Uncompressআপনার প্রোগ্রামের সাথে তালিকায় ফিরে যেতে পারে ; পুরো ফাংশনটি আপনাকে
530

ধন্যবাদ! প্রোগ্রামটির সেই সংস্করণটির তালিকাটি সংক্ষিপ্ত করার আরও ভাল উপায় ছিল, তবে আমি যে নতুন পদ্ধতির সন্ধান পেয়েছি তার জন্য এটি খুব ভালভাবে কাজ করেছিল :)
মিশা লাভারভ

4
আমি সত্যিই আশা করেছি যে দ্বিতীয় গণিতের
উত্তরটিতে

কোনও অন্তর্নির্মিত নেই; আছে WolframAlpha["number of chapters of "<>#,"Result"]&, তবে একরকম মনে হয় না ঠিক একই জিনিসটির মতো।
মিশা লাভরভ

1
এটি ওল্ফ্রাম আলফায় উত্তরটির সন্ধান করে যা মানক ফাঁকফোকর এবং প্রশ্নে সুস্পষ্টভাবে উভয়কে প্রতারণা হিসাবে ডাকা হয়। (যদিও আমি মনে করি যে আমি যদি ওলফ্রাম আলফার উত্স কোড এবং ডাটাবেসকে বাইট গণনায় অন্তর্ভুক্ত করি তবে এটি আবার ঠিক হয়ে যাবে))
মিশা লাভরভ


4

জেলি ,  117 115  114 বাইট

OP%⁽µW%⁽£İ%237
“ĿḊƘ⁹ƙƬṂ;ɓṭ6-ạʋ⁵%$Ẋf,¥ÆÑƈø¬ȦṘd⁾“ʂụṿⱮẆƊ¦ẠLjƒ~Ḅr©“Ẏw|!¡¢o“ŻɗṢ“3ɠ‘Zċ€ÇTḢị“£ẆJQ+k⁽’ḃ6¤+\;“£¬®µıñø"BƝ¤‘¤

এটি অনলাইন চেষ্টা করুন! অথবা পরীক্ষা-স্যুটটি দেখুন

কিভাবে?

তিন দুই তিনটি বিভাগের অবশেষকারীকে নিয়ে ইনপুট স্ট্রিংয়ের অক্ষরের অর্ডিনালগুলির পণ্যটি হ্যাশ করে , তালিকাগুলির তালিকায় ফলাফলটি সন্ধান করে এবং বইয়ের দৈর্ঘ্যের তালিকায় ফলাফলটি সন্ধান করতে পাওয়া সূচকটি ব্যবহার করে।

একটি হ্যাশ ফাংশনটি সন্ধান করার সময় আমি কেবল সেগুলি বিবেচনা করেছি যার ফলাফল 255 এরও বেশি ফলাফলের সাথে এক-বালতিতে হয়েছিল যার ফলে কোড-পৃষ্ঠা সূচীকরণের অনুমতি দেওয়া হয়েছিল এবং তারপরে এনকোডে মোট মানগুলিকে ন্যূনতম করে দেওয়া ("আপত্তিকর" বালতি অপসারণের পরে বা যদি দীর্ঘতম বালতি কোনটিরই অস্তিত্ব ছিল না)। তিনটি মডুলো সহ 66 I থেকে আমি একটি 59 ( %731%381%258) একটি 58 ​​( %731%399%239) পেয়েছিলাম তার পরে একটিতে 56 টি প্রবেশ ( %1241%865%251) [১১7 বাইট তৈরি করে] ... তখন আমি কেবলমাত্র দু'জন অবশিষ্ট ( %1987%251) ব্যবহার করে [ 58 টি বাইট তৈরি করে] 58 পেয়েছিলাম
... .এখন আমি তিনটি অবশিষ্টের ব্যবহার করে একটি 55 টি পেয়েছি, যা দুটি ডামি এন্ট্রি যুক্ত করা হলে অনুসন্ধান তালিকার আরও সংক্ষেপণের অনুমতি দেয় ...

কোড:

1।

“ĿḊƘ⁹ƙƬṂ;ɓṭ6-ạʋ⁵%$Ẋf,¥ÆÑƈø¬ȦṘd⁾“ʂụṿⱮẆƊ¦ẠLjƒ~Ḅr©“Ẏw|!¡¢o“ŻɗṢ“3ɠ‘

কোড-পৃষ্ঠা সূচকের পাঁচটি তালিকার একটি তালিকা ( “...“...“...“...“...“...‘):

[[199,193,148,137,161,152,179,59,155,224,54,45,211,169,133,37,36,208,102,44,4,13,16,156,29,7,190,204,100,142],[167,225,226,149,207,145,5,171,76,106,158,126,172,114,6],[209,119,124,33,0,1,111],[210,157,183],[51,159]]

এটি Zবালতি পেতে পরমাণু ব্যবহার করে স্থানান্তরিত হয় ; এই বি কল:

[[199,167,209,210,51],[193,225,119,157,159],[148,226,124,183],[137,149,33],[161,207,0],[152,145,1],[179,5,111],[59,171],[155,76],[224,106],[54,158],[45,126],[211,172],[169,114],[133,6],37,36,208,102,44,4,13,16,156,29,7,190,204,100,142]

( 0এবং 1ডামি কীগুলি হ'ল, [179,5,111]ডানদিকে আরও দুটি হতে দেবে - ট্রান্সপোজটির বামে দীর্ঘ প্রবেশাধিকার প্রয়োজন)

2।

“£ẆJQ+k⁽’ḃ6¤+\;“£¬®µıñø"BƝ¤‘¤

এই সিটিকে কল করুন (অধ্যায়টি গণনা করা হয়েছে - এটি পূর্ণসংখ্যার একটি তালিকা:

[1,4,5,6,10,12,13,14,16,21,22,24,28,31,36,40,42,48,50,52,2,7,8,9,25,27,29,34,66,150,3]

এবং নিম্নলিখিত হিসাবে নির্মিত হয়েছে (উপরের দুটি ডামি কী তাই 10,12,13আরোহী ক্রম হতে অনুমতি দেয় ):

“£ẆJQ+k⁽’ḃ6¤+\;“£¬®µıñø"BƝ¤‘¤
                            ¤ - nilad followed by link(s) as a nilad:
           ¤                  -   nilad followed by link(s) as a nilad:
“£ẆJQ+k⁽’                     -     base 250 number = 935841127777142
         ḃ6                   -     converted to bijective base 6 = [1,3,1,1,4,2,1,1,2,5,1,2,4,3,5,4,2,6,2,2]
            +\                -     cumulative reduce with addition = [1,4,5,6,10,12,13,14,16,21,22,24,28,31,36,40,42,48,50,52]
               “£¬®µıñø"BƝ¤‘  -   code-page indices = [2,7,8,9,25,27,29,34,66,150,3]
              ;               -   concatenate = [1,4,5,6,10,12,13,14,16,21,22,24,28,31,36,40,42,48,50,52,2,7,8,9,25,27,29,34,66,150,3]

এখন কোডটির সরলীকৃত সংস্করণটি হ'ল:

OP%⁽µW%⁽£İ%237 - Link 1, hash function: list of characters   e.g. "genesis"
O              - cast to ordinals             [103,101,110,101,115,105,115]
 P             - product                                    160493569871250
   ⁽µW         - base 250 literal                                      3338
  %            - modulo                                                1050
       ⁽£İ     - base 250 literal                                      1699
      %        - modulo                                                1050
           237 - literal                                                237
          %    - modulo                                                 102

Bċ€ÇTḢịC - Main link: list of characters                     e.g. "genesis"
B        - the list of buckets, B, described  in (1) above
   Ç     - call the last link as a monad (get the hashed value)         102
 ċ€      - count for €ach - yields 29 zeros and a one or 30 zeros       [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0]
    T    - truthy indexes - yields a list of length one or zero         [19]
     Ḣ   - head - extracts that value or zero if it was empty            19  ----------------------------------------------v
       C - the list of chapter lengths, C, described in (2) above       [1,4,5,6,10,12,13,14,16,21,22,24,28,31,36,40,42,48,50,52,2,7,8,9,25,27,29,34,66,150,3]
      ị  - index (the head value) into (the chapter list, c)             50
         -       - 1-indexed and modular so 0 yields 3 (the rightmost)

3

পাইথন 2 , 438 429 416 411 409 বাইট

lambda s:[c for x,c in zip('A|m|C|h|2|th|2 Co|D|y|E|Ep|Ec|x|ze|G|Ge|H|gg|He|Ho|I|Jo|oe|oh|na|sh|Ju|dg|Ja|Je| J|1 J|K|2 K|L|Le|Lu|M|ch|rk|tt|N|Ne|Nu|O|P|Pr|Ph|pp|Pe|2 P|R|Ro|Ru|S|Sa|2 S|T| T|2 T| Ti|2 Ti|Z|Zep'.split('|'),(28,9,4,29,36,16,13,12,34,10,6,12,40,48,6,50,3,2,13,14,66,42,3,21,4,24,1,21,5,52,1,5,22,25,5,27,24,7,4,16,28,3,13,36,1,150,31,1,4,5,3,22,16,4,8,31,24,3,5,3,6,4,14,3))if x in s.title()][-1]

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

শিরোনাম কেসে ইনপুট পরিবর্তন করে এবং তালিকার শেষ ম্যাচের সাবস্ট্রিং সন্ধান করে কাজ করে।

[('A', 28), ('m', 9), ('C', 4), ('h', 29), ('2', 36), ('th', 16), ('2 Co', 13), ...

যেমন। '1 samuel' -> '1 Samuel'যা মেলে ('m', 9), ('2', 36), ('S', 8), ('Sa', 31), ('2 S', 24)। শেষ ম্যাচ ('2 S', 24), তাই উত্তর24


3

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

00 C0 20 FD AE 20 9E AD 85 FD 20 A3 B6 A9 1E 85 FB A9 00 85 FC A8 B1 22 18 69
4A 65 FC 45 FB 85 FC E6 FB C8 C4 FD D0 EE A5 FC 4A 4A 4A 4A A8 A5 FC 29 0F 19
BA C0 A8 BE 3D C0 A9 00 4C CD BD 16 34 42 0D 01 00 04 03 04 1C 0A 00 06 15 07
00 16 00 22 03 02 0E 00 24 00 00 01 00 08 03 00 1C 03 01 00 00 00 00 00 03 03
00 00 00 24 10 1F 18 0E 10 00 00 00 32 30 1F 2A 00 0D 00 05 00 1B 00 0A 00 01
28 00 00 0C 96 00 10 00 00 00 18 00 00 03 00 00 00 00 00 00 15 09 00 05 00 04
00 00 04 00 00 04 00 00 18 00 1D 05 00 00 19 00 0D 00 00 06 06 0C 00 00 00 00
05 00 01 00 05 00 04 30 10 20 10 40 70 00 00 20 50 00 10 60 30 20

ব্যাখ্যা :

কী এখানে একটি বিশেষ হ্যাশ ফাংশন যা মান collissions ছাড়া মানচিত্র ব্যবহার হয় 0করতে 125*)। অধ্যায়ের সংখ্যাগুলি 126 বাইট টেবিলের মধ্যে স্থাপন করা হয়েছে। হ্যাশিংটি পুরো 8 টি বিটগুলিতে করা হয়, চূড়ান্ত মানটি আরও একটি টেবিলের মধ্যে উচ্চ স্তনবৃন্তগুলি অনুসন্ধান করে সামঞ্জস্য করা হয়, এইভাবে বিভিন্ন উচ্চ স্তনবৃন্তগুলির সংমিশ্রণ যেখানে নিম্ন স্তনবৃন্ত সংঘর্ষে না ঘটে।

এখানে কোড অংশটির মন্তব্য বিযুক্ত করার তালিকা রয়েছে:

.C:c000  20 FD AE    JSR $AEFD          ; consume comma
.C:c003  20 9E AD    JSR $AD9E          ; evaluate argument
.C:c006  85 FD       STA $FD            ; remember string length
.C:c008  20 A3 B6    JSR $B6A3          ; free string ....
.C:c00b  A9 1E       LDA #$1E           ; initial xor key for hash
.C:c00d  85 FB       STA $FB
.C:c00f  A9 00       LDA #$00           ; initial hash value
.C:c011  85 FC       STA $FC
.C:c013  A8          TAY
.C:c014   .hashloop:
.C:c014  B1 22       LDA ($22),Y        ; load next string character
.C:c016  18          CLC                ; clear carry for additions
.C:c017  69 4A       ADC #$4A           ; add fixed offset
.C:c019  65 FC       ADC $FC            ; add previous hash value
.C:c01b  45 FB       EOR $FB            ; xor with key
.C:c01d  85 FC       STA $FC            ; store hash value
.C:c01f  E6 FB       INC $FB            ; increment xor key
.C:c021  C8          INY                ; next character
.C:c022  C4 FD       CPY $FD            ; check for string length
.C:c024  D0 EE       BNE .hashloop      ; end of string not reached -> repeat
.C:c026   .hashadjust:
.C:c026  A5 FC       LDA $FC            ; load hash
.C:c028  4A          LSR A              ; shift left four times
.C:c029  4A          LSR A
.C:c02a  4A          LSR A
.C:c02b  4A          LSR A
.C:c02c  A8          TAY                ; and copy to y index register
.C:c02d  A5 FC       LDA $FC            ; load hash again
.C:c02f  29 0F       AND #$0F           ; mask low nibble
.C:c031  19 BA C0    ORA $C0BA,Y        ; and add high nibble from table
.C:c034  A8          TAY                ; copy to y index register
.C:c035  BE 3D C0    LDX .chapters,Y    ; load chapter number from table
.C:c038  A9 00       LDA #$00           ; accu must be 0 for OS function:
.C:c03a  4C CD BD    JMP $BDCD          ; print 16bit value in A/X

এর পরে অধ্যায় সংখ্যার একটি টেবিল এবং অবশেষে হ্যাশ মানের জন্য উচ্চ নিবলগুলির একটি টেবিল অনুসরণ করে।

অনলাইন ডেমো

ব্যবহার: sys49152,"name" উদাহরণস্বরূপ sys49152,"genesis"(আউটপুট 50)।

গুরুত্বপূর্ণ: প্রোগ্রামটি যদি ডিস্ক থেকে লোড করা হয় (অনলাইন ডেমোর মতো), newপ্রথমে একটি আদেশ জারি করুন ! এটি প্রয়োজনীয় কারণ কোনও মেশিন প্রোগ্রাম লোড করা কিছু সি 64 বেসিক পয়েন্টারকে ট্র্যাশ করে।

আবরণ সম্পর্কে ইঙ্গিত: C64 এর ডিফল্ট মোডে, ইনপুটটি বড় হাতের আকার হিসাবে উপস্থিত হবে। এই হল সত্য ছোট হাতের মধ্যে কিন্তু C64 দুটি মোড আছে এবং ডিফল্ট ঊর্ধ্ব / গ্রাফিক্স মোড, ছোট হাতের অক্ষর ব্যবহার অক্ষর হিসাবে বড় হাতের এবং বড় হাতের অক্ষর গ্রাফিক্স প্রতীক হিসাবে প্রদর্শিত প্রদর্শিত হবে।


*) অবশ্যই, এটি যতটা ঘন তা হতে পারে না ... ওহ ভাল, সম্ভবত আমি এর থেকে আরও ভাল সমাধান পরে পেয়েছি;)


1

জাভা 8, 623 597 590 বাইট

s->{int i=s.chars().map(c->c*c*c).sum()/13595;return s.contains("tt")?28:i<258?42:i<355?1:i<357?3:i<362?16:i<366?28:i<369?21:i<375?9:i<377?24:i<380?5:i<382?1:i<386?10:i<402?7:i<436?4:i<438?5:i<439?14:i<461?3:i<463?2:i<477?22:i<478?25:i<490?5:i<491?3:i<493?12:i<500?66:i<545?3:i<546?1:i<548?21:i<562?4:i<568?24:i<570?10:i<572?31:i<573?24:i<582?16:i<583?150:i<607?40:i<629?48:i<639?50:i<663?13:i<675?3:i<677?36:i<679?52:i<734?1:i<735?6:i<736?4:i<775?14:i<785?6:i<796?3:i<800?31:i<812?6:i<876?27:i<910?29:i<911?36:i<940?22:i<1018?4:i<1035?16:i<1036?13:i<1066?12:i<1092?34:i<1229?5:i<1230?3:8;}

-7 বাইট @ নেভায়ে ধন্যবাদ একটি স্ট্রিমে-লুপটি পরিবর্তন করে ।

অবশ্যই আরও গল্ফ করা যেতে পারে .. আরও কিছু পরীক্ষা করা দরকার।
এটি একটি দীর্ঘ শট দ্বারা সংক্ষিপ্ত উত্তর নাও হতে পারে, এবং কিছু বিদ্যমান উত্তর পোর্টিং দ্বারা গল্ফ করা যেতে পারে, কিন্তু আমি নিজেকে কিছু নিয়ে আসতে পেরে এখনও গর্বিত .. :)

ব্যাখ্যা:

এখানে চেষ্টা করুন।

  1. স্ট্র্যাপে প্রতিটি অক্ষরের 3 টি (ASCII মান হিসাবে) পাওয়ার গ্রহণ করে
  2. তাদের যোগফল নেয়
  3. ফলাফলটিকে 13595পূর্ণসংখ্যা বিভাগ হিসাবে ভাগ করে (জাভাতে এটি স্বয়ংক্রিয়ভাবে ফলাফলকে ছাঁটাই / মেঝেতে)।
  4. এটি 65 অনন্য মান (কেবল habakkukএবং matthewউভয়েরই একটির মান রয়েছে 674) ছেড়ে যায়
  5. এবং তারপরে একটি দৈত্য ত্রৈমাসিক- যদি সঠিক ফলাফলটি ফিরে আসে (যেখানে সম্ভব সেখানে ( 381এবং 382উভয় 1; 425এবং 436উভয় 4; 649এবং 663উভয় 13; 952এবং 1018উভয়ই 4; 1122এবং 1229উভয় 5) একক ত্রৈমাসিক বিবৃতিতে কয়েকটি মান সম্মিলিত )।

1
আপনি int i=s.chars().map(c->c*c*c).sum()/13595;পরিবর্তে ব্যবহার করতে পারেন int i=0;for(int c:s.getBytes())i+=c*c*c;i/=13595;
নেভায়ে
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.