ファインマンチャレンジ暗号#1は、次のとおりです。
MEOTAIHSIBRTEWDGLGKNLANEAINOEEPEYST
NPEUOOEHRONLTIROSDHEOTNPHGAAETOHSZO
TTENTKEPADLYPHEODOWCFORRRNLCUEEEEOP
GMRLHNNDFTOENEALKEHHEATTHNMESCNSHIR
AETDAHLHEMTETRFSWEDOEOENEGFHETAEDGH
RLNNGOAAEOCMTURRSLTDIDOREHNHEHNAYVT
IERHEENECTRNVIOUOEHOTRNWSAYIFSNSHOE
MRTRREUAUUHOHOOHCDCHTEEISEVRLSKLIHI
IAPCHRHSIHPSNWTOIISISHHNWEMTIEYAFEL
NRENLEERYIPHBEROTEVPHNTYATIERTIHEEA
WTWVHTASETHHSDNGEIEAYNHHHNNHTW
ソリューションは次のように説明されます。
これは単純な転置暗号です。テキストを5列の断片に分割し、右下から上に向かって読み取ります。結果は、チョーサーのカンタベリー物語のミドルイングリッシュでのオープニングラインです。
それは:
WHANTHATAPRILLEWITHHISSHOURESSOOTET
HEDROGHTEOFMARCHHATHPERCEDTOTHEROOT
EANDBATHEDEVERYVEYNEINSWICHLICOUROF
WHICHVERTUENGENDREDISTHEFLOURWHANZE
PHIRUSEEKWITHHISSWEETEBREFTHINSPIRE
DHATHINEVERYHOLTANDHEETHTHETENDRECR
OPPESANDTHEYONGESONNEHATHINTHERAMHI
SHALVECOURSYRONNEANDSMALEFOWELESMAK
ENMELODYETHATSLEPENALTHENYGHTWITHOP
ENYESOPRIKETHHEMNATUREINHIRCORAGEST
HANNELONGENFOLKTOGOONONPILGRIM
チャレンジ:
暗号を復号化する関数を記述します。
出力には改行やスペースは必要ありません。
入力には改行やスペースがありません。
最短のソリューションが優先されます。
(他の2つの暗号を解くことができる場合のボーナスポイント:P)
私の試み(PHP 77 70):
$b=strrev($a);for($i=0;$i<5;$i++)for($j=0;$j<381;$j++)$r.=$b[$i+$j*5];
1
入力の仮定にはどのような制限がありますか?たとえば、これまでの両方のソリューションでは、入力を空白のない単一行と想定しています。あなたのものはそれが変数にあると想定し、gniblerはそれが標準入力にあると想定します。
—
Peter Taylor