The Feynman Challenge Cipher # 1 adalah sebagai berikut:
MEOTAIHSIBRTEWDGLGKNLANEAINOEEPEYST
NPEUOOEHRONLTIROSDHEOTNPHGAAETOHSZO
TTENTKEPADLYPHEODOWCFORRRNLCUEEEEOP
GMRLHNNDFTOENEALKEHHEATTHNMESCNSHIR
AETDAHLHEMTETRFSWEDOEOENEGFHETAEDGH
RLNNGOAAEOCMTURRSLTDIDOREHNHEHNAYVT
IERHEENECTRNVIOUOEHOTRNWSAYIFSNSHOE
MRTRREUAUUHOHOOHCDCHTEEISEVRLSKLIHI
IAPCHRHSIHPSNWTOIISISHHNWEMTIEYAFEL
NRENLEERYIPHBEROTEVPHNTYATIERTIHEEA
WTWVHTASETHHSDNGEIEAYNHHHNNHTW
Solusinya digambarkan sebagai :
Ini adalah sandi transposisi sederhana: pisahkan teks menjadi potongan-potongan 5 kolom, lalu baca dari kanan bawah ke atas. Apa hasil adalah garis pembukaan Chaucer's Canterbury Tales in Middle English .
Yang mana:
WHANTHATAPRILLEWITHHISSHOURESSOOTET
HEDROGHTEOFMARCHHATHPERCEDTOTHEROOT
EANDBATHEDEVERYVEYNEINSWICHLICOUROF
WHICHVERTUENGENDREDISTHEFLOURWHANZE
PHIRUSEEKWITHHISSWEETEBREFTHINSPIRE
DHATHINEVERYHOLTANDHEETHTHETENDRECR
OPPESANDTHEYONGESONNEHATHINTHERAMHI
SHALVECOURSYRONNEANDSMALEFOWELESMAK
ENMELODYETHATSLEPENALTHENYGHTWITHOP
ENYESOPRIKETHHEMNATUREINHIRCORAGEST
HANNELONGENFOLKTOGOONONPILGRIM
Tantangan:
Tulis fungsi untuk mendekripsi sandi.
Output tidak membutuhkan jeda baris atau spasi.
Input tidak memiliki jeda baris atau spasi.
Solusi terpendek menang.
(Poin bonus jika Anda dapat memecahkan 2 cipher lainnya: P)
Usaha saya (PHP 77 70):
$b=strrev($a);for($i=0;$i<5;$i++)for($j=0;$j<381;$j++)$r.=$b[$i+$j*5];
Jawaban:
Golfscript, 10 karakter
Mengambil input dari stdin. Mungkin dipisahkan oleh baris baru, seperti dalam presentasi pertanyaan, atau tidak, seperti yang diasumsikan oleh banyak jawaban. (Tetap saja menelanjangi baris baru perlu diberikan karena kemungkinan akan tiba dengan satu di ujung, yang mengacaukan blok 5) Jika kita berasumsi bahwa input datang dengan tepat satu baris baru, sebagai karakter terakhir, kita dapat mencukur satu karakter
sumber
Mathematica, 51
Mathematica cukup bertele-tele di sini, tetapi juga mudah untuk menebak apa yang dilakukannya.
sumber
J , 13 karakter
sumber
Haskell, 52
sumber
x<-[length s]
... menjijikkan. Aku menyukainya!Japt -P,
43 byteCobalah online!
Saya merasa itu terlalu mudah? Pada catatan positif, ini tidak mungkin golf terlalu banyak dengan asumsi saya mendapatkan hasil yang benar :)
EDIT -1 byte berkat @Shaggy!
sumber
w
;)Python - 56 karakter
sumber
input
bukanraw_input
; +2 untuk menambahkan tanda kurung untuk dicetak.Scala, 62 karakter
Membuat asumsi bahwa string sudah dalam variabel
s
seperti yang dilakukan oleh hammar dan stevether.Mengambil input dari stdin sedikit lebih buruk (92 karakter):
dan itu hanya berfungsi jika tidak ada baris baru di input.
sumber
Perl , 58 karakter
sumber
Scala 63 chars:
Asumsikan input dalam s.
sumber
K, 34
sumber
ECMAScript 6 - 48 Karakter
Diasumsikan bahwa variabel
s
berisi string input (tanpa karakter spasi putih) dan membuat variabel yangc
berisi output.sumber
Python 3.6 , 48 byte
Rekursi + f-Strings
Cobalah online!
sumber