El Feynman Challenge Cipher # 1 es el siguiente:
MEOTAIHSIBRTEWDGLGKNLANEAINOEEPEYST
NPEUOOEHRONLTIROSDHEOTNPHGAAETOHSZO
TTENTKEPADLYPHEODOWCFORRRNLCUEEEEOP
GMRLHNNDFTOENEALKEHHEATTHNMESCNSHIR
AETDAHLHEMTETRFSWEDOEOENEGFHETAEDGH
RLNNGOAAEOCMTURRSLTDIDOREHNHEHNAYVT
IERHEENECTRNVIOUOEHOTRNWSAYIFSNSHOE
MRTRREUAUUHOHOOHCDCHTEEISEVRLSKLIHI
IAPCHRHSIHPSNWTOIISISHHNWEMTIEYAFEL
NRENLEERYIPHBEROTEVPHNTYATIERTIHEEA
WTWVHTASETHHSDNGEIEAYNHHHNNHTW
La solución se describe como :
Es un cifrado de transposición simple: divide el texto en piezas de 5 columnas, luego lee desde abajo a la derecha hacia arriba. Los resultados son las primeras líneas de Chaucer's Canterbury Tales en inglés medio .
Cual es:
WHANTHATAPRILLEWITHHISSHOURESSOOTET
HEDROGHTEOFMARCHHATHPERCEDTOTHEROOT
EANDBATHEDEVERYVEYNEINSWICHLICOUROF
WHICHVERTUENGENDREDISTHEFLOURWHANZE
PHIRUSEEKWITHHISSWEETEBREFTHINSPIRE
DHATHINEVERYHOLTANDHEETHTHETENDRECR
OPPESANDTHEYONGESONNEHATHINTHERAMHI
SHALVECOURSYRONNEANDSMALEFOWELESMAK
ENMELODYETHATSLEPENALTHENYGHTWITHOP
ENYESOPRIKETHHEMNATUREINHIRCORAGEST
HANNELONGENFOLKTOGOONONPILGRIM
El reto:
Escribe una función para descifrar el cifrado.
La salida no necesita saltos de línea ni espacios.
La entrada no tiene saltos de línea ni espacios.
La solución más corta gana.
(Puntos de bonificación si puedes resolver los otros 2 cifrados: P)
Mi intento (PHP 77 70):
$b=strrev($a);for($i=0;$i<5;$i++)for($j=0;$j<381;$j++)$r.=$b[$i+$j*5];
Respuestas:
Golfscript, 10 caracteres
Toma información de stdin. Puede estar separado por nuevas líneas, como en la presentación de la pregunta, o no, como suponen muchas respuestas. (De todos modos, es necesario eliminar las nuevas líneas dado que es probable que llegue con una al final, lo que desordena los bloques de 5). Si suponemos que la entrada llega precisamente con una nueva línea, siendo el último carácter, podemos afeitar un carácter para
fuente
Mathematica, 51
Mathematica es bastante detallado aquí, pero también es fácil adivinar lo que está haciendo.
fuente
J , 13 caracteres
fuente
Haskell, 52
fuente
x<-[length s]
... repugnante. ¡Me encanta!Japt -P,
43 bytesPruébalo en línea!
Siento que eso fue demasiado fácil? En una nota positiva, esto no se puede jugar demasiado suponiendo que estoy obteniendo el resultado correcto :)
EDITAR -1 byte gracias a @Shaggy!
fuente
w
;)Python - 56 caracteres
fuente
input
lugar deraw_input
; +2 para agregar paréntesis para imprimir.Scala, 62 caracteres
Suponiendo que la cadena ya está en una variable
s
como lo hacen hammar y stevether.Tomar la entrada de stdin es un poco más feo (92 caracteres):
y solo funciona si no hay nuevas líneas en la entrada.
fuente
Perl , 58 caracteres
fuente
Scala 63 caracteres:
Suponiendo que la entrada está en s.
fuente
K, 34
fuente
ECMAScript 6 - 48 caracteres
Asume que la variable
s
contiene la cadena de entrada (sin ningún espacio en blanco) y crea la variable quec
contiene la salida.fuente
Python 3.6 , 48 bytes
Recursion + f-Strings
Pruébalo en línea!
fuente