A cifra de desafio 1 de Feynman é a seguinte:
MEOTAIHSIBRTEWDGLGKNLANEAINOEEPEYST
NPEUOOEHRONLTIROSDHEOTNPHGAAETOHSZO
TTENTKEPADLYPHEODOWCFORRRNLCUEEEEOP
GMRLHNNDFTOENEALKEHHEATTHNMESCNSHIR
AETDAHLHEMTETRFSWEDOEOENEGFHETAEDGH
RLNNGOAAEOCMTURRSLTDIDOREHNHEHNAYVT
IERHEENECTRNVIOUOEHOTRNWSAYIFSNSHOE
MRTRREUAUUHOHOOHCDCHTEEISEVRLSKLIHI
IAPCHRHSIHPSNWTOIISISHHNWEMTIEYAFEL
NRENLEERYIPHBEROTEVPHNTYATIERTIHEEA
WTWVHTASETHHSDNGEIEAYNHHHNNHTW
A solução é descrita como :
É uma cifra de transposição simples: divida o texto em partes de 5 colunas e leia a partir do canto inferior direito para cima. Quais são os resultados das linhas de abertura do Chaucer Canterbury Tales no inglês médio .
Qual é:
WHANTHATAPRILLEWITHHISSHOURESSOOTET
HEDROGHTEOFMARCHHATHPERCEDTOTHEROOT
EANDBATHEDEVERYVEYNEINSWICHLICOUROF
WHICHVERTUENGENDREDISTHEFLOURWHANZE
PHIRUSEEKWITHHISSWEETEBREFTHINSPIRE
DHATHINEVERYHOLTANDHEETHTHETENDRECR
OPPESANDTHEYONGESONNEHATHINTHERAMHI
SHALVECOURSYRONNEANDSMALEFOWELESMAK
ENMELODYETHATSLEPENALTHENYGHTWITHOP
ENYESOPRIKETHHEMNATUREINHIRCORAGEST
HANNELONGENFOLKTOGOONONPILGRIM
O desafio:
Escreva uma função para descriptografar a cifra.
A saída não precisa de quebras de linha ou espaços.
A entrada is não possui quebras de linha ou espaços.
A solução mais curta vence.
(Pontos de bônus se você puder resolver as outras 2 cifras: P)
Minha tentativa (PHP 77 70):
$b=strrev($a);for($i=0;$i<5;$i++)for($j=0;$j<381;$j++)$r.=$b[$i+$j*5];
Respostas:
Golfscript, 10 caracteres
Recebe entrada de stdin. Pode ser separado por novas linhas, como na apresentação da pergunta, ou não, como muitas respostas supõem. (Retirar as novas linhas é necessário de qualquer maneira, uma vez que é provável que chegue com uma no final, o que atrapalha os 5). Se assumirmos que a entrada chega com exatamente uma nova linha, sendo o último caractere, podemos raspar um caractere para
fonte
Mathematica, 51
O Mathematica é bastante detalhado aqui, mas também é fácil adivinhar o que está fazendo.
fonte
J , 13 caracteres
fonte
Haskell, 52
fonte
x<-[length s]
... repugnante. Eu amo isso!Japt -P,
43 bytesExperimente online!
Eu sinto que isso foi fácil demais? Em uma nota positiva, isso não pode ser muito jogado, desde que eu esteja obtendo o resultado correto :)
EDIT -1 byte graças a @Shaggy!
fonte
w
;)Python - 56 caracteres
fonte
input
em vez deraw_input
; +2 para adicionar parênteses para imprimir.Scala, 62 caracteres
Assumindo que a string já esteja em uma variável,
s
como hammar e stevether.Tomar a entrada de stdin é um pouco mais feio (92 caracteres):
e só funciona se não houver novas linhas na entrada.
fonte
Perl , 58 caracteres
fonte
Scala 63 caracteres:
Supondo que a entrada esteja em s.
fonte
K, 34
fonte
ECMAScript 6 - 48 caracteres
Supõe que a variável
s
contenha a sequência de entrada (sem caracteres de espaço em branco) e crie a variável quec
contém a saída.fonte
Python 3.6 , 48 bytes
Recursão + F-Strings
Experimente online!
fonte