Die Feynman Challenge Cipher # 1 lautet wie folgt:
MEOTAIHSIBRTEWDGLGKNLANEAINOEEPEYST
NPEUOOEHRONLTIROSDHEOTNPHGAAETOHSZO
TTENTKEPADLYPHEODOWCFORRRNLCUEEEEOP
GMRLHNNDFTOENEALKEHHEATTHNMESCNSHIR
AETDAHLHEMTETRFSWEDOEOENEGFHETAEDGH
RLNNGOAAEOCMTURRSLTDIDOREHNHEHNAYVT
IERHEENECTRNVIOUOEHOTRNWSAYIFSNSHOE
MRTRREUAUUHOHOOHCDCHTEEISEVRLSKLIHI
IAPCHRHSIHPSNWTOIISISHHNWEMTIEYAFEL
NRENLEERYIPHBEROTEVPHNTYATIERTIHEEA
WTWVHTASETHHSDNGEIEAYNHHHNNHTW
Die Lösung wird beschrieben als :
Es ist eine einfache Transpositions-Chiffre: Teilen Sie den Text in 5-Spalten-Teile und lesen Sie ihn dann von rechts unten nach oben. Das Ergebnis sind die Eröffnungszeilen von Chaucers Canterbury Tales in Mittelenglisch .
Welches ist:
WHANTHATAPRILLEWITHHISSHOURESSOOTET
HEDROGHTEOFMARCHHATHPERCEDTOTHEROOT
EANDBATHEDEVERYVEYNEINSWICHLICOUROF
WHICHVERTUENGENDREDISTHEFLOURWHANZE
PHIRUSEEKWITHHISSWEETEBREFTHINSPIRE
DHATHINEVERYHOLTANDHEETHTHETENDRECR
OPPESANDTHEYONGESONNEHATHINTHERAMHI
SHALVECOURSYRONNEANDSMALEFOWELESMAK
ENMELODYETHATSLEPENALTHENYGHTWITHOP
ENYESOPRIKETHHEMNATUREINHIRCORAGEST
HANNELONGENFOLKTOGOONONPILGRIM
Die Herausforderung:
Schreiben Sie eine Funktion zum Entschlüsseln der Chiffre.
Die Ausgabe benötigt keine Zeilenumbrüche oder Leerzeichen.
Die Eingabe hat keine Zeilenumbrüche oder Leerzeichen.
Die kürzeste Lösung gewinnt.
(Bonuspunkte, wenn Sie die anderen 2 Chiffren lösen können: P)
Mein Versuch (PHP 77 70):
$b=strrev($a);for($i=0;$i<5;$i++)for($j=0;$j<381;$j++)$r.=$b[$i+$j*5];
Antworten:
Golfscript, 10 Zeichen
Nimmt Eingaben von stdin entgegen. Es kann durch Zeilenumbrüche getrennt sein, wie in der Fragenpräsentation, oder nicht, wie viele Antworten annehmen. (Das Entfernen der Zeilenumbrüche ist ohnehin erforderlich, da es wahrscheinlich mit einer am Ende ankommt, was die 5er-Blöcke durcheinander bringt.) Wenn wir davon ausgehen, dass die Eingabe mit genau einer neuen Zeile als letztem Zeichen eingeht, können wir ein Zeichen rasieren
quelle
Mathematica, 51
Mathematica ist hier ziemlich ausführlich, aber es ist auch leicht zu erraten, was es tut.
quelle
J , 13 Zeichen
quelle
Haskell, 52
quelle
x<-[length s]
... widerlich. Ich liebe es!Japt -P,
43 BytesProbieren Sie es online aus!
Ich denke, das war zu einfach? Positiv ist zu vermerken, dass dies unmöglich zu viel Golf gespielt werden kann, vorausgesetzt, ich erhalte das richtige Ergebnis :)
BEARBEITEN -1 Byte dank @Shaggy!
quelle
w
;)Python - 56 Zeichen
quelle
input
stattraw_input
; +2 für das Hinzufügen von Klammern zum Drucken.Scala, 62 Zeichen
Unter der Annahme, dass sich die Zeichenfolge bereits in einer Variablen befindet,
s
wie dies bei Hammar und Stevether der Fall ist.Die Eingabe von stdin ist etwas hässlicher (92 Zeichen):
und es funktioniert nur, wenn die Eingabe keine Zeilenumbrüche enthält.
quelle
Perl , 58 Zeichen
quelle
Scala 63 Zeichen:
Angenommen, die Eingabe erfolgt in s.
quelle
K, 34
quelle
ECMAScript 6 - 48 Zeichen
Angenommen, die Variable
s
enthält die Eingabezeichenfolge (ohne Leerzeichen) und erstellt die Variable,c
die die Ausgabe enthält.quelle
Python 3.6 , 48 Bytes
Rekursion + f-Strings
Probieren Sie es online aus!
quelle