26 গায়ক, 26 পত্র


34

রোলিংস্টোন অনুসারে , সর্বকালের সর্বকালের সেরা 26 জন গায়ক:

Aretha Franklin         Al Green
Ray Charles             Robert Plant
Elvis Presley           Mick Jagger
Sam Cooke               Tina Turner
John Lennon             Freddie Mercury
Marvin Gaye             Bob Marley
Bob Dylan               Smokey Robinson
Otis Redding            Johnny Cash
Stevie Wonder           Etta James
James Brown             David Bowie
Paul McCartney          Van Morrison
Little Richard          Michael Jackson
Roy Orbison             Jackie Wilson

আপনি এখানে স্ট্রিংয়ের তালিকা হিসাবে এটি পেতে পারেন ।

কার্য

কোনও গায়কের নাম দেওয়া হয়েছে, মুদ্রণ করুন বা কোনও চিঠি ফিরিয়ে Aদিন Zযাতে এই গায়ককে অনন্যভাবে সনাক্ত করা যায়। (আপনার কোড নিয়ে এসেছে এমন একটি জন্য বব ডিলান , তাহলে এটি আর আসতে পারবেন না একটি অন্য কোন গায়ক জন্য।)

অন্যান্য অনুরূপ চ্যালেঞ্জগুলির বিপরীতে, ম্যাপিং যতক্ষণ না এটি সংঘর্ষ-মুক্ত আপনার পক্ষে।

বিধি

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


17
প্রিয় রোলিং স্টোন: বব ডিলান সত্যই সর্বকালের অন্যতম সেরা সংগীতশিল্পী। তবে দুর্দান্ত গায়ক ?
লুইস মেন্ডো

@ লুইস মেন্ডো এই কয়েকটি পছন্দ সম্পর্কে আমি কিছুটা নোনতা ( কাশি কাশি যেখানে স্টিভ টাইলার কাশি )
লর্ড ফারকোয়াড

@ লর্ডফারাকোয়াড স্টিভ টাইলার # 99 ¯ \ _ (ツ) _ / ¯
আর্নাউল্ড

এটি কারও সাহায্য করতে পারে তবে তথ্যটি ব্যবহার করার মতো সিজি দক্ষতা আমার কাছে নেই: 1-6, 1-8, এবং নামের 3-5 অক্ষরগুলি অনন্য সংমিশ্রণ।
জুটনার্গ

উত্তর:


2

এমএটিএল , 28 বাইট

s98\40\2Y2'ijkl o qst uz'hw)

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

ব্যাখ্যা

s98\40\

সুস্পষ্টভাবে ইনপুট স্ট্রিং পান। ইনপুট স্ট্রিংয়ের অক্ষরগুলি যোগ করুন এবং এটি মডিউলস 98 এর পরে মডিউলস 40 করুন the নিম্নলিখিত সংখ্যার একটিতে ফলাফল: 38 18 13 34 29 23 27 30 5 28 22 1 0 16 7 32 8 14 3 36 25 4 2 6 24 35 (পাস্তবিন তালিকার ক্রম)।

2Y2'ijkl o qst uz'h

(ছোট হাতের) বর্ণমালাটি পুশ করুন 2Y2। এটি পরিসীমা [1,26] এর সংখ্যাগুলির যত্ন করে। যাইহোক, কিছু নম্বর অনুপস্থিত এবং আমাদের সংখ্যা 38 টি পর্যন্ত রয়েছে Hence সুতরাং, আমরা hএকটি স্ট্রিং সংযোজন করি যা উচ্চতর সংখ্যাগুলির যত্ন নেয়, এই সংখ্যাগুলি 'অনুপস্থিত' বর্ণগুলিতে ম্যাপিংয়ের মাধ্যমে। স্পেসগুলি যে কোনও হতে পারে, আমি নিজের সুবিধার জন্য আমার মূল প্রোগ্রামটিতে মূলধনপত্রগুলি ব্যবহার করি।

w)

আমরা এখন প্রথম ধাপ থেকে দ্বিতীয় পদক্ষেপের সাথে স্ট্রিংয়ের সাথে নম্বরটি সূচক করতে পারি )। আমরা wসঠিক ক্রমে যুক্তিগুলি পেতে ব্যবহার করি । যদিও মনে হতে পারে যে আমরা 0-ভিত্তিক সূচক ব্যবহার করি (সংখ্যাগুলি 0 থেকে 38 এর মধ্যে পরিবর্তিত হয়, এবং স্ট্রিংটি 39 অক্ষর দীর্ঘ) তবে বাস্তবতাটি আরও কিছুটা জটিল: আমরা 1-ভিত্তিক মডিউলার সূচক ব্যবহার করি, যা অনন্য বৈশিষ্ট্যযুক্ত MATL। এর অর্থ হ'ল 1সূচকে সূচকগুলি a, 38প্রকৃতপক্ষে সূচকে যুক্ত হয় uএবং স্ট্রিংয়ের 0চূড়ান্ত সূচকে সূচি হয় z


23

পাইথন 2 , 80 71 বাইট

def f(s):i=sum(map(ord,s))%98%40;return chr(i-i/26*18+i/32*3-i/37*8+65)

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

মোডেড অর্ডিনালের যোগফলগুলি 0এবং এর মধ্যে সংখ্যা দেয়38

25 টিরও বেশি বড় সংখ্যাগুলি নীচের মত শূন্যস্থান পূরণ করতে স্থানান্তরিত হয় (সাজানো ক্রম দেখানো হয়েছে):

  0  1  2  3  4  5  6  7  8  -  -  -  - 13 14  - 16  - 18  -  -  - 22 23 24 25  - 27 28 29 30  - 32  - 34 35 36  - 38

বিয়োগ 18যদি i>25:

  0  1  2  3  4  5  6  7  8  -  -  -  - 13 14  - 16  - 18  -  -  - 22 23 24 25
                          - 27 28 29 30  - 32  - 34 35 36  - 38

যোগ 3যদি i>31:

  0  1  2  3  4  5  6  7  8  -  -  -  - 13 14  - 16  - 18  -  -  - 22 23 24 25
                          - 27 28 29 30  
                                                  - 32  - 34 35 36  - 38

বিয়োগ 8যদি i>37:

  0  1  2  3  4  5  6  7  8  -  -  -  - 13 14  - 16  - 18  -  -  - 22 23 24 25
                          - 27 28 29 30  
                                                  - 32  - 34 35 36  
                                            - 38

যা ক্রম দেয় 0..25

  0  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25

এই তারপর রূপান্তরিত হয় A-Zসঙ্গেchr(i+65)


আমার মনে হয় আপনি খাটো করতে পারেন (i>31)থেকে i/32ইত্যাদি
xnor

21

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

20 FD AE 20 9E AD 85 FC 20 A3 B6 A9 79 85 FB A0 00 84 FD B1 22 10 03 69 A0 18
45 FD 65 FB 85 FD E6 FB C8 C4 FC D0 EC E9 29 B0 FC 69 29 C9 1A 90 1C 29 0F C9
0D 90 04 69 09 90 12 C9 02 F0 0F C9 08 D0 04 A9 06 D0 06 C9 0C D0 02 A9 11 18
69 41 4C D2 FF

এটি অবস্থান-স্বতন্ত্র কোড, কেবল এটি কোথাও র‌্যামে রেখে সেখানে লাফিয়ে দিন, যেমন sysকমান্ডটি ব্যবহার করে ।

অনলাইন ডেমো (এতে$C000/লোড49152)।

ব্যবহার: sys49152,"[name]" যেমন sys49152,"Aretha Franklin"

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

দ্রষ্টব্য: সি 64 হ'ল ছোট হাতের অক্ষর ছাড়াই একটি মোডে ডিফল্টরূপে - পঠনযোগ্য নাম লিখতে সক্ষম হতে , প্রথমে SHIFT+ টিপে ছোট হাতের অক্ষরে স্যুইচ করুন CBM


ব্যাখ্যা

আসলে এই নামেরগুলির জন্য একটি ন্যূনতম নিখুঁত হ্যাশ ফাংশন সন্ধান করা চ্যালেঞ্জ; সি 64৪ এর জন্য, আমাকে এমন একটি সন্ধান করতে হয়েছিল যা সাধারণ 8 বিটের ক্রিয়াকলাপে সহজেই গণনাযোগ্য। এখানে একটি মন্তব্য বিচ্ছিন্ন তালিকা:

.C:c000  20 FD AE    JSR $AEFD          ; consume comma
.C:c003  20 9E AD    JSR $AD9E          ; evaluate expression
.C:c006  85 FC       STA $FC            ; save string length
.C:c008  20 A3 B6    JSR $B6A3          ; free string
.C:c00b  A9 79       LDA #$79           ; value for adding during hashing
.C:c00d  85 FB       STA $FB
.C:c00f  A0 00       LDY #$00           ; offset for reading string
.C:c011  84 FD       STY $FD            ; and initial hash value
.C:c013   .hashloop:
.C:c013  B1 22       LDA ($22),Y        ; read next character from string
.C:c015  10 03       BPL .xor           ; if bit 8 set (shifted)
.C:c017  69 A0       ADC #$A0           ; translate to same unshifted character
.C:c019  18          CLC
.C:c01a   .xor:
.C:c01a  45 FD       EOR $FD            ; xor with previous hash
.C:c01c  65 FB       ADC $FB            ; add offset
.C:c01e  85 FD       STA $FD            ; store new hash
.C:c020  E6 FB       INC $FB            ; increment offset
.C:c022  C8          INY
.C:c023  C4 FC       CPY $FC
.C:c025  D0 EC       BNE .hashloop      ; repeat until last character
.C:c027   .modloop:
.C:c027  E9 29       SBC #$29           ; subtract $29 until
.C:c029  B0 FC       BCS .modloop       ; underflow, then
.C:c02b  69 29       ADC #$29           ; add once again ( => mod $29)
.C:c02d  C9 1A       CMP #$1A           ; value in hash range?
.C:c02f  90 1C       BCC .tochar        ; -> output
.C:c031  29 0F       AND #$0F           ; mask lowest 4 bits only
.C:c033  C9 0D       CMP #$0D           ; greater 12 ?
.C:c035  90 04       BCC .fixedvals     
.C:c037  69 09       ADC #$09           ; then just add 10 (9 plus carry)
.C:c039  90 12       BCC .tochar        ; and done -> output
.C:c03b   .fixedvals:
.C:c03b  C9 02       CMP #$02           ; 2 becomes 3 by adding
.C:c03d  F0 0F       BEQ .tochar2       ; with carry (jump after the CLC)
.C:c03f  C9 08       CMP #$08           ; if value was 8
.C:c041  D0 04       BNE .check2
.C:c043  A9 06       LDA #$06           ; new value is 6
.C:c045  D0 06       BNE .tochar        ; and output
.C:c046   .check2:
.C:c047  C9 0C       CMP #$0C           ; else if value was 12
.C:c049  D0 02       BNE .tochar
.C:c04b  A9 11       LDA #$11           ; new value is 17
.C:c04d   .tochar:
.C:c04d  18          CLC
.C:c04d   .tochar2:
.C:c04e  69 41       ADC #$41           ; add character code for 'a'
.C:c050  4C D2 FF    JMP $FFD2          ; jump to kernal CHROUT routine

টেস্ট স্যুট (সি 64 বেসিক, dataলাইনে মেশিন কোড রুটিনযুক্ত )

0fOa=49152to49234:rEb:pOa,b:nE:pO53272,23
1sY49152,"Aretha Franklin":?":Aretha Franklin"
2sY49152,"Ray Charles":?":Ray Charles"
3sY49152,"Elvis Presley":?":Elvis Presley"
4sY49152,"Sam Cooke":?":Sam Cooke"
5sY49152,"John Lennon":?":John Lennon"
6sY49152,"Marvin Gaye":?":Marvin Gaye"
7sY49152,"Bob Dylan":?":Bob Dylan"
8sY49152,"Otis Redding":?":Otis Redding"
9sY49152,"Stevie Wonder":?":Stevie Wonder"
10sY49152,"James Brown":?":James Brown"
11sY49152,"Paul McCartney":?":Paul McCartney"
12sY49152,"Little Richard":?":Little Richard"
13sY49152,"Roy Orbison":?":Roy Orbison"
14sY49152,"Al Green":?":Al Green"
15sY49152,"Robert Plant":?":Robert Plant"
16sY49152,"Mick Jagger":?":Mick Jagger"
17sY49152,"Tina Turner":?":Tina Turner"
18sY49152,"Freddie Mercury":?":Freddie Mercury"
19sY49152,"Bob Marley":?":Bob Marley"
20sY49152,"Smokey Robinson":?":Smokey Robinson"
21sY49152,"Johnny Cash":?":Johnny Cash"
22sY49152,"Etta James":?":Etta James"
23sY49152,"David Bowie":?":David Bowie"
24sY49152,"Van Morrison":?":Van Morrison"
25sY49152,"Michael Jackson":?":Michael Jackson"
26sY49152,"Jackie Wilson":?":Jackie Wilson"
27dA32,253,174,32,158,173,133,252,32,163,182,169,121,133,251,160,0,132,253,177
28dA34,16,3,105,160,24,69,253,101,251,133,253,230,251,200,196,252,208,236,233
29dA41,176,252,105,41,201,26,144,28,41,15,201,13,144,4,105,9,144,18,201,2,240
30dA15,201,8,208,4,169,6,208,6,201,12,208,2,169,17,24,105,65,76,210,255

পরীক্ষা স্যুটের অনলাইন ডেমো


13

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

def f(n):i=hash(n)%337%125%45;return chr(65+i-i/25*2-i/29*21+i/35*2)

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


1
আপনি কীভাবে এটি রচনা করেছেন তা জানতে আকর্ষণীয়
সারজে বোর্স

2
@ সার্জবার্স হ্যাশ (এন) প্রতিটি নামের জন্য একটি অনন্য পূর্ণসংখ্যা গণনা করে। মডুলো অপারেশনগুলি এখনও সেই অন্তরগুলিকে অনন্য রাখে তবে তাদের মান কমিয়ে দেয়। দ্বিতীয় অংশ ( chr(65+i-i/25*2-i/29*21+i/35*2)) টিফেল্ডস উত্তরের অনুরূপ । মডুলো অপারেশনগুলি একটি স্ক্রিপ্ট দ্বারা জালিয়াতিপূর্ণ যা আমি ইতিমধ্যে এখানে এবং এখানে ব্যবহার করেছি ।
ovs

10

জাভাস্ক্রিপ্ট, 138 অক্ষর

হিসাবে সব আদ্যক্ষর অনন্য, ছাড়া, MJ= এম ichael জে ackson / এম ick জে agger, আমি বিশেষভাবে মাইকেল জ্যাকসন জন্য চেক (শুধুমাত্র একটি সঙ্গে এক h4 র্থ স্থান দিকে), এবং অন্যান্য সকল নামের জন্য আমি আদ্যক্ষর অনুসরণ একটি স্ট্রিং নির্মিত একটি অনন্য চিঠি দ্বারা।

s=>s[3]=='h'?'y':"AFaRCbEPcSCdJLeMGfBDgORhSWiJBjPMCkLRlROmAGnRPoMJpTTqFMrBMsSRtJCuEJvDBwVMxJWz".split(s.replace(/[^A-Z]/g,''))[1][0]

টুকিটাকি সংকেতলিপি

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

var solution =
s=>s[3]=='h'?'y':"AFaRCbEPcSCdJLeMGfBDgORhSWiJBjPMCkLRlROmAGnRPoMJpTTqFMrBMsSRtJCuEJvDBwVMxJWz".split(s.replace(/[^A-Z]/g,''))[1][0]

var testnames = [
"Aretha Franklin",
"Ray Charles",
"Elvis Presley",
"Sam Cooke",
"John Lennon",
"Marvin Gaye",
"Bob Dylan",
"Otis Redding",
"Stevie Wonder",
"James Brown",
"Paul McCartney",
"Little Richard",
"Roy Orbison",
"Al Green",
"Robert Plant",
"Mick Jagger",
"Tina Turner",
"Freddie Mercury",
"Bob Marley",
"Smokey Robinson",
"Johnny Cash",
"Etta James",
"David Bowie",
"Van Morrison",
"Michael Jackson",
"Jackie Wilson"
];
testnames.forEach(name=>document.body.append( solution(name) ));


একটি ছোট হ্যাশিং ফাংশন থাকতে পারে তবে আমি কোনও মানুষের কিছু করার চেষ্টা করার ধারণাটি পছন্দ করি। তবে, আমি চাই আপনি জেএসফিডেলের সাথে লিঙ্ক না দিয়ে কোড স্নিপেট বৈশিষ্ট্যটি ব্যবহার করুন।
trlkly

@trlkly আমি এখন কোড স্নিপেট বৈশিষ্ট্যটি ব্যবহার করেছি।
এনএল-এক্স

7

জাভা (ওপেনজেডিকে 8) , 128 126 115 113 বাইট

জাভা জমা দেওয়ার জন্য খুব জঞ্জাল নয়!

ল্যাম্বডা এক্সপ্রেশন দিয়ে আমাকে পুরো প্রচুর বাইট সংরক্ষণ করার জন্য কেভিনকে ধন্যবাদ!

s->{int a=0;for(int i:s.substring(1,6).getBytes())a+=i;a*=a==431?0.108:2.65108;return(char)(a==1341?70:a%26+65);}

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


1
ভাল উত্তর, আমার কাছ থেকে +1। আমি বর্তমানে একটি স্ক্রিপ্ট তৈরি করে একটি জাভা সমাধানেও কাজ করছি .. যদিও এখনও ভাগ্যবান নয়। BTW, আপনি যা করতে পারেন গলফ দুই পরিবর্তন করে বাইট {a+=i;}থেকেa+=i;
কেভিন Cruijssen

1
@ কেভিন ক্রুজসেন চিয়ার্স, বিশ্বাস করতে পারছি না যে আমি এটি মিস করেছি! আমি 'ম্যাজিক নম্বর' দিয়ে চেষ্টা করার জন্য একটি স্ক্রিপ্ট লিখেছিলাম যা আমাকে 0 থেকে 25 এর মধ্যে অনন্য মূল্যবোধ দেয় তবে আমি সবচেয়ে ভাল করতে পারি 24, সুতরাং শেষে যদি বিবৃতি হয়।
লুক স্টিভেন্স

1
হুম বিটিডব্লু, যেহেতু আপনি জাভা 8 ব্যবহার করছেন, আপনি এতে গল্ফও char g(String s)করতে পারেন s->আপনি কীভাবে জাভা 7 পদ্ধতিতে অভ্যস্ত তা না হলে এটি কীভাবে করবেন তা দেখানোর জন্য আমি আপনার টিআইও সংশোধন করেছি।
কেভিন ক্রুইজসেন

ধন্যবাদ, আমি কখনই বুঝতে পারি নি যে আপনি এটি করতে পারেন, আমি আমার
লুক স্টিভেনস

হাহাহা, আপনি বলতে পারবেন আমি এতে নতুন আছি
লুক স্টিভেনস

5

পাইথন 3, 132 99 96 বাইট

lambda m:chr(98+"ԇ̲ЙГ̫ѼӿИԸՋжʾҍϴЬֺΝעЕΞϾҞ֜ӣ֪".find(chr(sum(map(ord,m)))))

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

উজ্জ্বলভাবে গল্ফ করা হয়নি, তবে আমি ভেবেছিলাম যে আমি এইটা চালিয়ে দেব।

-33 বাইট টিফেল্ড দ্বারা সম্পাদিত পরিবর্তনের জন্য ধন্যবাদ। Ovs পরিবর্তে ধন্যবাদ
ব্যবহার করে ব্যবহার করে -3 বাইট ।findindex


আপনি ব্যবহার করে 6 বাইট সংরক্ষণ করতে পারেন sum(map(ord,m)), আমি 128 বাইটের জন্য
অ্যারেথা

এবং আপনি এর chr(97+...)পরিবর্তে ব্যবহার করতে পারেন ascii_lowercase: 99 বাইট
TFeld

1
ব্যাখ্যা সম্পর্কে কি?
ম্যাটসেম্যান

3
একটি ব্যাখ্যা: sum(map(ord,m))স্ট্রিংগুলিতে অক্ষরগুলির ASCII মান যুক্ত করে m(702-1506 পরিসীমাতে পূর্ণসংখ্যা দেয়)। তারপর কলিং chrএটা যে নম্বর দিয়ে একটি (ইউনিকোড) অক্ষরে এটি পরিবর্তন করে: chr(702)হয় ʾ করার chr(1506) = עমধ্যে এবং প্রচুর। এই সমাধানটি সূচক (0–26) পেতে সমস্ত সম্ভাব্য (26) অক্ষরের একটি তালিকাতে এই চরিত্রটিকে সহজেই সন্ধান করে, তারপরে ASCII কোড 97 + যে সূচক (সুতরাং 'এ' থেকে 'জেড') দিয়ে অক্ষর দেয় returns
শ্রীভাতসার

1
আপনার বর্তমান সমাধানটিতে এখনও একটি 99 বাইট সংস্করণ রয়েছে। আপনি ওভিএস এর সংস্করণ ব্যবহার করতে চেয়েছিলেন?
nl-x

5

পিএইচপি, 90 88 86 72 + 1 বাইট

অন্য কোনও মডুলোর সাথে আরও সংক্ষিপ্ত হতে পারে।

<?=strtr(chr(hexdec(substr(md5($argn),0,2))%65+58),"^<adins",bcfgqvx)&_;

ফাইল এ সংরক্ষণ করুন এবং পাইপ হিসাবে চালনা করুন-nF বা এটি অনলাইনে চেষ্টা করুন


2
অ্যার্থা ফ্র্যাঙ্কলিন এবং পল ম্যাককার্টনি উভয়ই Wআপনার পরীক্ষার ক্ষেত্রে আউটপুট দেয় এবং কোনও Xআউটপুট পাওয়া যায় না । কোডে নিজেই এটির কোনও ত্রুটি আছে কি না তা কেবল অনলাইনে রূপান্তর চেষ্টা করে দেখুন না :)
ক্রেজিওলোনিবিন

1
@ ক্রাজিলুনিবিন প্রতিস্থাপন টাইপ ঠিক করা হয়েছে। ইঙ্গিত দেওয়ার জন্য ধন্যবাদ
তিতাস

তাহলে আমি কীভাবে এটি চালাব? আপনার 'এটি অনলাইনে চেষ্টা করুন' কোড <?=অংশটি ব্যবহার করে না । এবং 'পাইপ হিসাবে চালান `আমি কাজ করছি না। কমান্ড লাইন থেকে চালানোর চেষ্টা করার সময় আমি বিজ্ঞপ্তিও পাই।
nl-x

@ টিটাস: কোডগল্ফে আপনার সম্পূর্ণ ফাংশন বা অ্যাপ্লিকেশন দেওয়া উচিত যা কাঙ্ক্ষিত আউটপুট তৈরি করে (কেবল)। আমি এর সাথে পরিচিত <?=... সুতরাং আমার প্রশ্নটি এখনও, আমি কীভাবে আপনার কোড চালাব (কমান্ড লাইন থেকে)? আমি $argnকমান্ড লাইনে এটি খাওয়ানোতে ব্যর্থ হয়েছি ... আমার এখন পর্যন্ত সমস্ত প্রচেষ্টা হয় নিদর্শনগুলি দেয় এবং এখনও এটি চালানোর জন্য আরও কোডের প্রয়োজন বলে মনে হয়।
এনএল-এক্স

@ এনএল-এক্স আপনার পিএইচপি বিজ্ঞপ্তি দেয়, কারণ আপনি এটিকে এন বিকল্পটি দিতে পারেন নি:echo <input> | php -nF <scriptfilename>
টাইটাস

4

পার্ল, 56 , 54 , 50 , 46 +1 (-পি) বাইট

$ = ক্রিপ্ট $ , ডিটি; / .. (।) /; $ _ = $ 1; y / 01268ADIJNVW / adhilmnpqsux /

$ = ক্রিপ্ট $ , ডিটি; / .. (।) /; $ = $ 1; y / 01268JVW / hlmpqsux /; $ = এলসি

$ = ক্রিপ্ট $ , এমও; / .. (।) /; $ = $ 1; ই / 035 এফটি / এএইচপিআরএক্সজেড /; $ =

ডমের মন্তব্যে ধন্যবাদ আরও 4 টি বাইট বাঁচাতে পারে, আরও ভাল আবশ্যকতার সাথে ফিট করার জন্য বড় হাতের অক্ষরেও পরিবর্তিত হয়েছে।

$_=crypt$_,mO;y/035eft/AHPRXZ/;/..(.)/;$_=uc$1

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


চমৎকার পন্থা! আমার মনে হয় আপনার পুরো কল করতে সক্ষম ফাংশনটি লেখার / স্কোর করা দরকার?
ফেলিক্স প্যালম্যান

@ ফেলিক্সপ্যালম্যান, এটি একটি পার্ল প্রোগ্রাম যা ইনলাইন বলা যেতে পারে: perl -pe '$_=crypt$_,mO;/..(.)/;$_=$1;y/035eft/AHPRXZ/;$_=lc'
টিও-র

নিস! অনুরূপ পদ্ধতির সন্ধান করছিল, ব্যবহার করছিল $1^$2কিন্তু ব্যবহার করার কথা ভাবেন নি crypt... আপনি কিছু পুনরায় ক্রম দিয়ে 4 বাইট সংরক্ষণ করতে পারেন: অনলাইনে চেষ্টা করুন!
ডম হেস্টিংস

4

পাইথন 2, 50 43 বাইট

নতুন সংস্করণটির জন্য জ্যাপে ক্রেডিট

lambda n:chr(hash(n)%2354%977%237%54%26+65)

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

দ্রষ্টব্য: এটি hashবিল্টিনের উপর নির্ভরশীল এবং সমস্ত বাস্তবায়নে কাজ করবে না


43 বাইট:lambda n:chr(hash(n)%2354%977%237%54%26+65)
জাপ

@ জাফ চমৎকার! আমার অজগর ব্রুট ফোর্স চেকার স্পষ্টভাবে দ্রুত ছিল না;)
কেএসব

3

রুবি, 63 বাইট

->s{((0x3c4001c151861b27d>>s.sum%98%66).to_s(2).sum%48+64).chr}

ইনপুটটির আসকি কোডগুলি যুক্ত করে, 26 টি স্বতন্ত্র সংখ্যাগুলির মধ্যে একটি পেতে এগুলি 98 এবং তারপরে Mod 66 নিয়ে যায় nইনপুটটির আসকি কোডগুলি যুক্ত করে, 0_65 রেঞ্জের টির মধ্যে যায়। বিশাল হেক্সাডেসিমাল সংখ্যায় 1এই 26 টির প্রত্যেকটিতে সামান্য কিছু রয়েছে , তাই এটি রাইটসফিশিং করে nআমরা এতে 1..26 1বিট সহ একটি সংখ্যা পাই । আমরা গণনা1 ascii কোড যুক্ত করে এবং 48 টি মোড নিয়ে বিটগুলি , তারপরে add৪ যুক্ত করে একটি ASCII কোডে রূপান্তর করি।

পরীক্ষা প্রোগ্রাম

দ্য mapগায়ক চিঠি কোড এবং গায়ক মুদ্রণ মাধ্যমে iterates। এরপরে এটি চিঠি কোডগুলির একটি অ্যারে প্রদান করে, যা sortপ্রতিটি চিঠি একবার ব্যবহার করা হয়েছে তা প্রদর্শনের জন্য সম্পাদনা করা হয়।

f=->s{((0x3c4001c151861b27d>>s.sum%98%66).to_s(2).sum%48+64).chr}
a= [
  "Aretha Franklin","Ray Charles",
  "Elvis Presley","Sam Cooke",
  "John Lennon","Marvin Gaye",
  "Bob Dylan","Otis Redding",
  "Stevie Wonder","James Brown",
  "Paul McCartney","Little Richard",
  "Roy Orbison","Al Green",
  "Robert Plant","Mick Jagger",
  "Tina Turner","Freddie Mercury",
  "Bob Marley","Smokey Robinson",
  "Johnny Cash","Etta James",
  "David Bowie","Van Morrison",
  "Michael Jackson","Jackie Wilson"
]

p a.map{|i|p [f[i],i];f[i]}.sort

আউটপুট

["S", "Aretha Franklin"]
["E", "Ray Charles"]
["R", "Elvis Presley"]
["J", "Sam Cooke"]
["X", "John Lennon"]
["C", "Marvin Gaye"]
["M", "Bob Dylan"]
["W", "Otis Redding"]
["V", "Stevie Wonder"]
["Y", "James Brown"]
["D", "Paul McCartney"]
["Q", "Little Richard"]
["Z", "Roy Orbison"]
["P", "Al Green"]
["O", "Robert Plant"]
["K", "Mick Jagger"]
["N", "Tina Turner"]
["L", "Freddie Mercury"]
["G", "Bob Marley"]
["I", "Smokey Robinson"]
["A", "Johnny Cash"]
["F", "Etta James"]
["H", "David Bowie"]
["U", "Van Morrison"]
["B", "Michael Jackson"]
["T", "Jackie Wilson"]
["A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"] 

3

অক্টাভা , 85 83 80 74 বাইট

@(n)('A':'Z')(mod(n([1 2 8])*[1;15;47],124)=='#iZo,gp<C&4Y1!8-G`Kn3wtTIO')

বেনামে থাকা এই জগাখিটি ম্যাটল্যাব-এ ডেটা এনকোড করার জন্য একটি ভাল উপায় অনুসন্ধান করার চেষ্টা করে কিছু গোলমাল করার ফলাফল।

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

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

দেখা যাচ্ছে যে ম্যাট্রিক্স [1 2 8]পূর্ণসংখ্যার ম্যাট্রিক্স অনুসারে সূচকগুলিতে অক্ষরগুলি গুণিত করে [1;15;47]এবং তারপরে Mod 124 ফলাফলের ফলে অনন্য মূল্যবোধে ফলাফল যা সমস্ত মুদ্রণযোগ্য ASCII (এবং কোনও 'অক্ষর নয় যা স্ট্রিং লিটারেলগুলি বুগ করবে)। আনন্দের সাথে ম্যাপিংটি শেষ হয় TIOযা দিয়ে সম্পূর্ণ দুর্ঘটনা ঘটে। মজার বিষয় হল এই সমীকরণের জন্য এটিই একমাত্র ম্যাপিং যা 26 টি স্বতন্ত্র মুদ্রণযোগ্য ASCII অক্ষর দেয়।

সুতরাং মূলত এটি আমার লুকিং ম্যাপিং এবং গণনা। অনুসন্ধানটি করা সহজভাবে গণনা সম্পাদন করা এবং ম্যাপিংয়ের সাথে তুলনা করার একটি বিষয়। উপর যোগ করার পদ্ধতি 'A'-1একটি অক্ষর জেড মানচিত্রের ফলাফলে সূচক।

আপনি এটি অনলাইনে চেষ্টা করতে পারেন টিআইও-তে , যা ইনপুট এবং আউটপুটগুলির সম্পূর্ণ ম্যাপিং দেখায়। সম্পূর্ণতার জন্য সম্পূর্ণ ম্যাপিংটি নীচেও রয়েছে:

'Aretha Franklin' ==> B
'Ray Charles'     ==> S
'Elvis Presley'   ==> F
'Sam Cooke'       ==> V
'John Lennon'     ==> L
'Marvin Gaye'     ==> N
'Bob Dylan'       ==> C
'Otis Redding'    ==> Q
'Stevie Wonder'   ==> X
'James Brown'     ==> I
'Paul McCartney'  ==> R
'Little Richard'  ==> M
'Roy Orbison'     ==> T
'Al Green'        ==> A
'Robert Plant'    ==> U
'Mick Jagger'     ==> P
'Tina Turner'     ==> Y
'Freddie Mercury' ==> H
'Bob Marley'      ==> D
'Smokey Robinson' ==> W
'Johnny Cash'     ==> K
'Etta James'      ==> G
'David Bowie'     ==> E
'Van Morrison'    ==> Z
'Michael Jackson' ==> O
'Jackie Wilson'   ==> J

  • মুছে ফেলার জন্য ম্যাপিং 2 টি বাইট সংরক্ষণ করা হয়েছে +32
  • কেবলমাত্র 'A':'Z'অনুসন্ধানের পরিবর্তে লজিকাল ইনডেক্সিং ব্যবহার করে অক্টাভে-তৈরি করে 3 বাইট সংরক্ষণ করা হয়েছে ।
  • ম্যাট্রিক্স গুণন ব্যবহার করে গুণনের যোগফল করে 6 বাইট সংরক্ষণ করা হয়েছে।

চতুর পদ্ধতির, খুব চালাক? 53 বাইট, আমার MATL উত্তর ভিত্তিক
Sanchises

@ সাঁইচাইস সম্ভবত, তবে আমি approach_ (ツ) _ / with নিয়ে এসেছি approach পৃথক উত্তর হিসাবে আপনার সংস্করণ পোস্ট করতে আপনাকে স্বাগতম।
টম কার্পেন্টার

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

3

জাভাস্ক্রিপ্ট (ক্রোম), 102

দ্রষ্টব্য দুর্ভাগ্যক্রমে এটি পার্সইন্টে বাস্তবায়ন-নির্ভর আনুমানিকতার কারণে (কেবলমাত্র @ আরনাউল্ড) কেবল ক্রোমে কাজ করে

s=>s[0]=='L'?'z':"ab.c..defghijklmn...o..pqrst.u.vwxy"[parseInt(s.replace(/ /,'o').slice(0,14),36)%35]

আমি হ্যাশ ফাংশনটির সন্ধান করলাম, প্রতিটি নামের একটি টুকরো নিয়ে, বেস 36 ব্যবহার করে সংখ্যায় রূপান্তর করে এবং পরে একটি মডিউল প্রয়োগ করি।

আমি সেরা হ্যাশ সন্ধান করতে এই কোডটি ব্যবহার করেছি:

x=`Al Green\nAretha Franklin\nBob Dylan\nBob Marley\nDavid Bowie\nElvis Presley\nEtta James\nFreddie Mercury\nJackie Wilson\nJames Brown\nJohn Lennon\nJohnny Cash\nLittle Richard\nMarvin Gaye\nMichael Jackson\nMick Jagger\nOtis Redding\nPaul McCartney\nRay Charles\nRobert Plant\nRoy Orbison\nSam Cooke\nSmokey Robinson\nStevie Wonder\nTina Turner\nVan Morrison`.split(`\n`)

max=0
for(m=26;m<60;m++)
  for(i=0;i<20;i++)
    for(j=i;++j<20;)
      for(k=0;k<37;k++)
      {
        S=new Set();
        f=k ? (k-1).toString(36) : ''
        x.forEach(x=>(n=parseInt(x.replace(/ /,f).slice(i,j),36)%m, S.add(n)))
        if (S.size > max) console.log(i,j,f,m,max=S.size)
      }

এবং ফলাফল:

0 1 "" 26 14
0 2 "" 26 15
0 4 "" 26 16
0 5 "" 26 18
0 6 "0" 26 19
0 6 "3" 26 20
0 8 "a" 26 21
2 5 "7" 28 23
0 14 "h" 35 24
0 14 "o" 35 25
2 9 "" 51 26

সেরা হ্যাশ ফাংশনটি 0 থেকে 50 এর মধ্যে 26 টি বিভিন্ন মান দেয় তবে আমি 1 টি সদৃশ তবে একটি ছোট পরিসর সহ আলাদা আলাদা ব্যবহার করেছি।

পরীক্ষা

var names=x=`Al Green\nAretha Franklin\nBob Dylan\nBob Marley\nDavid Bowie\nElvis Presley\nEtta James\nFreddie Mercury\nJackie Wilson\nJames Brown\nJohn Lennon\nJohnny Cash\nLittle Richard\nMarvin Gaye\nMichael Jackson\nMick Jagger\nOtis Redding\nPaul McCartney\nRay Charles\nRobert Plant\nRoy Orbison\nSam Cooke\nSmokey Robinson\nStevie Wonder\nTina Turner\nVan Morrison`.split(`\n`)

var F=
s=>s[0]=='L'?'z':"ab.c..defghijklmn...o..pqrst.u.vwxy"[parseInt(s.replace(/ /,'o').slice(0,14),36)%35]

var Singers={}
names.forEach(n=>Singers[F(n)]=n)

;Object.keys(Singers).sort().forEach(i=> console.log(i, Singers[i]))


আপনি উল্লেখ করতে চাইতে পারেন যে এটি কেবলমাত্র Chrome- এ কার্যকর হয় কারণ বাস্তবায়ন-নির্ভর আনুমানিকতার কারণে parseInt()
আর্নল্ড

@ আরনাউল্ড ধন্যবাদ, আমি জানতাম না।
edc65

3

সি, 65 55 49 বাইট

h(char*s){return*s<77?(*s^s[5]+40)%13+65:(s[5]&s[4]+s[1])%13+78;}

h(char*s){return*(long*)s%887%392%224%120%67%40%26+65;}

কেএসবের উত্তর হিসাবে একই পন্থা । সি hashপাইথনের মতো স্ট্রিং ফাংশন সরবরাহ করে না । নাকি তা করে?

h(char*s){return*(long*)s%2004%857%361%94%26+65;}

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

hintযার মানগুলি ASCII কোড সেগুলির একটি প্রদান করে A .. Z


2

জাভাস্ক্রিপ্ট, 98 বাইট

s=l=>("heCysvCm hirDb iiesm ultOyr rb c ndeMbeonh tdvMnacic".indexOf(l[4]+l[2])/2+10).toString(36)

আমি দেখতে পেয়েছি যে নামেরগুলির ২ য় এবং চতুর্থ চরিত্রের সংমিশ্রণটি তাদের প্রত্যেকের জন্যই স্বতন্ত্র।

অতএব আমি প্রথম নামের অ্যারেথা ফ্রাঙ্কলিনের চর গ্রুপের পুনরাবৃত্তি করব এবং যখন স্মোকি রবিনসন এবং জনি ক্যাশ এর সংমিশ্রণগুলির সাথে আমি একটি স্ট্রিং তৈরি করব name[4] + name[2]notname[2] + name[4]ehehoehn ঘনিভূত হয়।

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

আমি স্ট্রিংয়ে প্রদত্ত প্যারামিটারের 4 র্থ এবং 2 র্থ বর্ণের সংক্ষিপ্ত অবস্থানের সন্ধান করি এবং এটি 2 দিয়ে বিভক্ত করি যাতে আমি 0 এবং 25 এর মধ্যে একটি সংখ্যা পাই Then তারপর আমি 10 যুক্ত করব এবং এটি বেস ৩ from থেকে স্ট্রিংয়ে রূপান্তর করব, যেখানে 10 এর সাথে মিল রয়েছে aএবং 35 থেকে 35 পর্যন্তz

let singers = [
  "Aretha Franklin",
  "Ray Charles",
  "Elvis Presley",
  "Sam Cooke",
  "John Lennon",
  "Marvin Gaye",
  "Bob Dylan",
  "Otis Redding",
  "Stevie Wonder",
  "James Brown",
  "Paul McCartney",
  "Little Richard",
  "Roy Orbison",
  "Al Green",
  "Robert Plant",
  "Mick Jagger",
  "Tina Turner",
  "Freddie Mercury",
  "Bob Marley",
  "Smokey Robinson",
  "Johnny Cash",
  "Etta James",
  "David Bowie",
  "Van Morrison",
  "Michael Jackson",
  "Jackie Wilson"
]

s=l=>("heCysvCm hirDb iiesm ultOyr rb c ndeMbeonh tdvMnacic".indexOf(l[4]+l[2])/2+10).toString(36)

singers.forEach(singer => console.log(s(singer), singer))


খুব চালাক সংমিশ্রণ আপনি পেয়েছেন!
জোয়াল

আআআ হ্যাঁ অবশ্যই. আমার বেশ কিছু অনুরূপ আছে তবে স্ট্রিংটিতে ফিরে আসার জন্য চরটি যুক্ত করার পরিবর্তে ঘটনার অবস্থানটি 25 টি অক্ষর বাঁচাতে পারে। চতুর!
এনএল-এক্স

1

ওল্ফ্রাম ভাষা (গণিত) , 101126 বাইট

Alphabet[][[#&@@#&@@Position[(t=ToCharacterCode)@"nZ-Be_;f%d^q 0w@x~KDaLJ&`k",Total@t@#~Mod~98+32]]]&

+32ম্যাথমেটিকায় স্বল্পতম আলোড়ন সৃষ্টি করার হ্যাশটেবলের দিকে নিয়ে যাওয়া মনে হচ্ছে InputForm

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


1

///, 390 231 বাইট

/gg/U/
/a///b///c///d///e///f///g///h///i///j///k///l///m///n///o///p///q///r///s///t///u///v///w///x///y///z//
/ F//
/A //
/ G//
/ M//
/M //
/J B/X/
/J //
/L //
/ R//
/R C/Y/
/S C/Z/
/B D/K/
/ B//
/ J//
/ T//
/S W/I/
/R O/N/
/JU/U/
/R //
/E P/H/
/PC/Q/

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

নতুন লাইনগুলি সরিয়ে 231 বাইট

এটি খুব দীর্ঘ, তবে /// বিভিন্ন অক্ষরকে সাধারণভাবে পরিচালনা করতে পারে না। অন্য কথায়, /// রেজেক্সকে সমর্থন করে না।


0

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

অন্যান্য পদ্ধতির চেষ্টা করে অনেক বেশি সময় নষ্ট করার পরে @ অ্যাডোয়ার্ডো পেজের পদ্ধতির প্রয়োগ করেছেন:

=CHAR(FIND(MID(A1,5,1)&MID(A1,3,1),"her DbMbdvsv tdeicsm hnhltirac c i uCyrbOyCmeoie nMn")/2+65)
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.