> load "tut2data.txt"; Loading "L:\win\Magma\MATH2068\tut2data.txt" > C:=SubstitutionCryptosystem(); > key:=RandomKey(C); > key; TFGHBPWOSJRQZUIYVDNAMEKLCX > /* > The command C:=SubstitutionCryptosystem() essentially just sets up > an environment in which to do our calculations. It defines C to > be a substitution cryptosystem; we will now be able create messages > associated with the cryptosystem C, and encipher these messages > using keys that are elements of C. > In the magma cryptography package that we are using, messages in > a substitution cryptosystem have to consist just of upper case letters > with no spaces or punctuation. (So even an unenciphered message can > be a little difficult to read correctly! But this makes things even > harder for the enemy who wants to read your secret messages.) > A key for a substitution cryptosystem should consist of the 26 > upper case letters of the alphabet arranged in some order. Thus > if you inspect the value of "key" printed above you will see that > each letter occurs exactly once. > */ > secretmessage:=Encoding(C,"Ive left the fifty million dollars under your doormat"); > secretmessage; IVELEFTTHEFIFTYMILLIONDOLLARSUNDERYOURDOORMAT > /* > The spaces and punctuation marks have been removed, and lower case > letters replaced by upper case, but we can still read the message. > Now we are going to encipher it using the key called "key" that magma > chose for us. > */ > disguisedmessage:=Enciphering(key,secretmessage); > disguisedmessage; SEBQBPAAOBPSPACZSQQSIUHIQQTDNMUHBDCIMDHIIDZTA > /* > To check that this is correct write out the 26 letters of the alphabet > in alphabetical order, and underneath them write the key: > ABCDEFGHIJKLMNOPQRSTUVWXYZ > TFGHBPWOSJRQZUIYVDNAMEKLCX > Then go through the message and replace every letter by the one that > appears underneath it in the above table. That is, all the A's are > replaced by T's, all the B's by F's, the C's by G's, the D's by H's, > the E's by B's, and so on. IVE... becomes SEB... > */ > yek:=InverseKey(key); > /* > To get the inverse key one basically swaps the two rows in the table > we had above: > TFGHBPWOSJRQZUIYVDNAMEKLCX > ABCDEFGHIJKLMNOPQRSTUVWXYZ > Now rearrange the top line into alphabetical order and rearrange the > bottom line the same way, so that the letter directly below any > given letter stays the same: > ABCDEFGHIJKLMNOPQRSTUVWXYZ > TEYRVBCDOJWXUSHFLKIANQGZPM > Let's check that I am right! > */ > yek; TEYRVBCDOJWXUSHFLKIANQGZPM > /* > Enciphering disguisedmessage using yek will recover secretmessage > */ > Enciphering(yek,disguisedmessage); IVELEFTTHEFIFTYMILLIONDOLLARSUNDERYOURDOORMAT > k:=C!"BCDEFGHIJKLMNOPQRSTUVWXYZA"; > /* > The exclamation mark here is magma's "coercion operator". We are > telling magma to take the string "BCDEFGHIJKLMNOPQRSTUVWXYZA" and > make it into an element of C. That is, make it into a key for > our substitution cryptosystem. Note that k is not a string, even > though it looks like one. > */ > kstring:="BCDEFGHIJKLMNOPQRSTUVWXYZA"; > k; BCDEFGHIJKLMNOPQRSTUVWXYZA > kstring; BCDEFGHIJKLMNOPQRSTUVWXYZA > /* > They look the same, but they are not. > */ > k eq kstring; >> k eq kstring; ^ Runtime error in 'eq': Bad argument types Argument types given: CryptKey, MonStgElt > /* > k and kstring are different types of things -- so definitely > not equal. k is a an object of type CryptKey, kstring is a string. > */ > Type(k); CryptKey > Type(kstring); MonStgElt > /* > "MonStgElt" is just magma's name for the string type. > */ > InverseKey(k); ZABCDEFGHIJKLMNOPQRSTUVWXY > /* > I trust that you can see that enciphering with this key will undo > the effect of enciphering with k. Enciphering with k replaces > each letter with the one that follows it in the alphabet > (wrapping around so that A follows Z), and enciphering with > InverseKey(k) replaces each letter by the one before it in the alphabet. > */ > dm:=Enciphering(k,secretmessage); > dm; JWFMFGUUIFGJGUZNJMMJPOEPMMBSTVOEFSZPVSEPPSNBU > /* > I replaced by J, V by W, E by F, etc. It is right. > */ > Enciphering(InverseKey(k),dm); IVELEFTTHEFIFTYMILLIONDOLLARSUNDERYOURDOORMAT > /* > As expected! > */ > k:=C!"BBBBBGHIJKLMNOPQRSTUVWXYZA"; > InverseKey(k); ZA****FGHIJKLMNOPQRSTUVWXY > /* > Because our new k replaces A's, B's, C's, D's and E's all by B's, it > is impossible to work out an inverse key. B's in the ciphertext could > represent A's, B's, C's, D's or E's. Magma's best guess for an inverse > key involves replacing B's by A's -- but it doesn't > know what to do with C's, D's, E's and F's because those letters do > not appear in k at all. > */ > dm:=Enciphering(k,secretmessage); > dm; JWBMBGUUIBGJGUZNJMMJPOBPMMBSTVOBBSZPVSBPPSNBU > Enciphering(InverseKey(k),dm); IVALAFTTHAFIFTYMILLIONAOLLARSUNAARYOURAOORMAT > /* > Everything that was enciphered as a B has now become an A. > */ > poem; On either side the river lie Long fields of barley and of rye, That clothe the wold and meet the sky; And thro' the field the road runs by To many-tower'd Camelot; And up and down the people go, Gazing where the lilies blow Round an island there below, The island of Shalott. Willows whiten, aspens quiver, Little breezes dusk and shiver Thro' the wave that runs for ever By the island in the river Flowing down to Camelot. Four gray walls, and four gray towers, Overlook a space of flowers, And the silent isle imbowers The Lady of Shalott. By the margin, willow veil'd, Slide the heavy barges trail'd By slow horses; and unhail'd The shallop flitteth silken-sail'd Skimming down to Camelot: But who hath seen her wave her hand? Or at the casement seen her stand? Or is she known in all the land, The Lady of Shalott? Only reapers, reaping early In among the bearded barley, Hear a song that echoes cheerly From the river winding clearly, Down to tower'd Camelot: And by the moon the reaper weary, Piling sheaves in uplands airy, Listening, whispers ' 'Tis the fairy Lady of Shalott.' There she weaves by night and day A magic web with colours gay. She has heard a whisper say, A curse is on her if she stay To look down to Camelot. She knows not what the curse may be, And so she weaveth steadily, And little other care hath she, The Lady of Shalott. And moving thro' a mirror clear That hangs before her all the year, Shadows of the world appear. There she sees the highway near Winding down to Camelot: There the river eddy whirls, And there the surly village-churls, And the red cloaks of market girls, Pass onward from Shalott. Sometimes a troop of damsels glad, An abbot on an ambling pad, Sometimes a curly shepherd-lad, Or long-hair'd page in crimson clad, Goes by to tower'd Camelot; And sometimes thro' the mirror blue The knights come riding two and two: She hath no loyal knight and true, The Lady of Shalott. But in her web she still delights To weave the mirror's magic sights, For often thro' the silent nights A funeral, with plumes and lights And music, went to Camelot: Or when the moon was overhead, Came two young lovers lately wed: 'I am half sick of shadows,' said The Lady of Shalott. A bow-shot from her bower-eaves, He rode between the barley-sheaves, The sun came dazzling thro' the leaves And flamed upon the brazen greaves Of bold Sir Lancelot. A red-cross knight for ever kneel'd To a lady in his shield, That sparkled on the yellow field, Beside remote Shalott. The gemmy bridle glitter'd free, Like to some branch of stars we see Hung in the golden Galaxy. The bridle bells rang merrily As he rode down to Camelot: And from his blazon'd baldric slung A mighty silver bugle hung, And as he rode his armour rung, Beside remote Shalott. All in the blue unclouded weather Thick-jewell'd shone the saddle-leather The helmet and the helmet-feather Burn'd like one burning flame together, As he rode down to Camelot. As often thro' the purple night, Below the starry clusters bright, Some bearded meteor, trailing light, Moves over still Shalott. His broad clear brow in sunlight glow'd; On burnish'd hooves his war-horse trode; From underneath his helmet flow'd His coal-black curls as on he rode, As he rode down to Camelot. From the bank and from the river He flash'd into the crystal mirror, 'Tirra lirra,' by the river Sang Sir Lancelot. She left the web, she left the loom, She made three paces thro' the room, She saw the water-lily bloom, She saw the helmet and the plume, She look'd down to Camelot. Out flew the web and floated wide; The mirror crack'd from side to side; 'The curse is come upon me,' cried The Lady of Shalott. In the stormy east-wind straining, The pale yellow woods were waning, The broad stream in his banks complaining Heavily the low sky raining Over tower'd Camelot; Down she came and found a boat Beneath a willow left afloat, And round about the prow she wrote 'The Lady of Shalott'. And down the river's dim expanse Like some bold seer in a trance, Seeing all his own mischance-- With a glassy countenance Did she look to Camelot. And at the closing of the day She loosed the chain, and down she lay; The broad stream bore her far away, The Lady of Shalott. Lying, robed in snowy white That loosely flew to left and right-- The leaves upon her falling light-- Thro' the noises of the night She floated down to Camelot: And as the boat-head wound along The willowy hills and fields among, They heard her singing her last song, The Lady of Shalott. Heard a carol, mournful, holy, Chanted loudly, chanted lowly, Till her blood was frozen slowly, And her eyes were darken'd wholly, Turn'd to tower'd Camelot. For ere she reach'd upon the tide The first house by the water-side, Singing in her song she died, The Lady of Shalott. Under tower and balcony, By garden-wall and gallery, A gleaming shape she floated by, Dead-pale between the houses high, Silent into Camelot. Out upon the wharfs they came, Knight and burgher, lord and dame, And round the prow they read her name, The Lady of Shalott. Who is this? and what is here? And in the lighted palace near Died the sound of royal cheer; And they cross'd themselves for fear, All the knights at Camelot: But Lancelot mused a little space; He said, 'She has a lovely face; God in his mercy lend her grace, The Lady of Shalott.' > /* > ("The Lady of Shalott" by Alfred, Lord Tennyson) > */ > enc:=Encoding(tennyson,poem); > enc; ONEITHERSIDETHERIVERLIELONGFIELDSOFBARLEYANDOFRYETHATCLOTHETHEWOLDANDMEETTHESKYANDTHROTHE\ FIELDTHEROADRUNSBYTOMANYTOWERDCAMELOTANDUPANDDOWNTHEPEOPLEGOGAZINGWHERETHELILIESBLOWROUND\ ANISLANDTHEREBELOWTHEISLANDOFSHALOTTWILLOWSWHITENASPENSQUIVERLITTLEBREEZESDUSKANDSHIVERTH\ ROTHEWAVETHATRUNSFOREVERBYTHEISLANDINTHERIVERFLOWINGDOWNTOCAMELOTFOURGRAYWALLSANDFOURGRAY\ TOWERSOVERLOOKASPACEOFFLOWERSANDTHESILENTISLEIMBOWERSTHELADYOFSHALOTTBYTHEMARGINWILLOWVEI\ LDSLIDETHEHEAVYBARGESTRAILDBYSLOWHORSESANDUNHAILDTHESHALLOPFLITTETHSILKENSAILDSKIMMINGDOW\ NTOCAMELOTBUTWHOHATHSEENHERWAVEHERHANDORATTHECASEMENTSEENHERSTANDORISSHEKNOWNINALLTHELAND\ THELADYOFSHALOTTONLYREAPERSREAPINGEARLYINAMONGTHEBEARDEDBARLEYHEARASONGTHATECHOESCHEERLYF\ ROMTHERIVERWINDINGCLEARLYDOWNTOTOWERDCAMELOTANDBYTHEMOONTHEREAPERWEARYPILINGSHEAVESINUPLA\ NDSAIRYLISTENINGWHISPERSTISTHEFAIRYLADYOFSHALOTTTHERESHEWEAVESBYNIGHTANDDAYAMAGICWEBWITHC\ OLOURSGAYSHEHASHEARDAWHISPERSAYACURSEISONHERIFSHESTAYTOLOOKDOWNTOCAMELOTSHEKNOWSNOTWHATTH\ ECURSEMAYBEANDSOSHEWEAVETHSTEADILYANDLITTLEOTHERCAREHATHSHETHELADYOFSHALOTTANDMOVINGTHROA\ MIRRORCLEARTHATHANGSBEFOREHERALLTHEYEARSHADOWSOFTHEWORLDAPPEARTHERESHESEESTHEHIGHWAYNEARW\ INDINGDOWNTOCAMELOTTHERETHERIVEREDDYWHIRLSANDTHERETHESURLYVILLAGECHURLSANDTHEREDCLOAKSOFM\ ARKETGIRLSPASSONWARDFROMSHALOTTSOMETIMESATROOPOFDAMSELSGLADANABBOTONANAMBLINGPADSOMETIMES\ ACURLYSHEPHERDLADORLONGHAIRDPAGEINCRIMSONCLADGOESBYTOTOWERDCAMELOTANDSOMETIMESTHROTHEMIRR\ ORBLUETHEKNIGHTSCOMERIDINGTWOANDTWOSHEHATHNOLOYALKNIGHTANDTRUETHELADYOFSHALOTTBUTINHERWEB\ SHESTILLDELIGHTSTOWEAVETHEMIRRORSMAGICSIGHTSFOROFTENTHROTHESILENTNIGHTSAFUNERALWITHPLUMES\ ANDLIGHTSANDMUSICWENTTOCAMELOTORWHENTHEMOONWASOVERHEADCAMETWOYOUNGLOVERSLATELYWEDIAMHALFS\ ICKOFSHADOWSSAIDTHELADYOFSHALOTTABOWSHOTFROMHERBOWEREAVESHERODEBETWEENTHEBARLEYSHEAVESTHE\ SUNCAMEDAZZLINGTHROTHELEAVESANDFLAMEDUPONTHEBRAZENGREAVESOFBOLDSIRLANCELOTAREDCROSSKNIGHT\ FOREVERKNEELDTOALADYINHISSHIELDTHATSPARKLEDONTHEYELLOWFIELDBESIDEREMOTESHALOTTTHEGEMMYBRI\ DLEGLITTERDFREELIKETOSOMEBRANCHOFSTARSWESEEHUNGINTHEGOLDENGALAXYTHEBRIDLEBELLSRANGMERRILY\ ASHERODEDOWNTOCAMELOTANDFROMHISBLAZONDBALDRICSLUNGAMIGHTYSILVERBUGLEHUNGANDASHERODEHISARM\ OURRUNGBESIDEREMOTESHALOTTALLINTHEBLUEUNCLOUDEDWEATHERTHICKJEWELLDSHONETHESADDLELEATHERTH\ EHELMETANDTHEHELMETFEATHERBURNDLIKEONEBURNINGFLAMETOGETHERASHERODEDOWNTOCAMELOTASOFTENTHR\ OTHEPURPLENIGHTBELOWTHESTARRYCLUSTERSBRIGHTSOMEBEARDEDMETEORTRAILINGLIGHTMOVESOVERSTILLSH\ ALOTTHISBROADCLEARBROWINSUNLIGHTGLOWDONBURNISHDHOOVESHISWARHORSETRODEFROMUNDERNEATHHISHEL\ METFLOWDHISCOALBLACKCURLSASONHERODEASHERODEDOWNTOCAMELOTFROMTHEBANKANDFROMTHERIVERHEFLASH\ DINTOTHECRYSTALMIRRORTIRRALIRRABYTHERIVERSANGSIRLANCELOTSHELEFTTHEWEBSHELEFTTHELOOMSHEMAD\ ETHREEPACESTHROTHEROOMSHESAWTHEWATERLILYBLOOMSHESAWTHEHELMETANDTHEPLUMESHELOOKDDOWNTOCAME\ LOTOUTFLEWTHEWEBANDFLOATEDWIDETHEMIRRORCRACKDFROMSIDETOSIDETHECURSEISCOMEUPONMECRIEDTHELA\ DYOFSHALOTTINTHESTORMYEASTWINDSTRAININGTHEPALEYELLOWWOODSWEREWANINGTHEBROADSTREAMINHISBAN\ KSCOMPLAININGHEAVILYTHELOWSKYRAININGOVERTOWERDCAMELOTDOWNSHECAMEANDFOUNDABOATBENEATHAWILL\ OWLEFTAFLOATANDROUNDABOUTTHEPROWSHEWROTETHELADYOFSHALOTTANDDOWNTHERIVERSDIMEXPANSELIKESOM\ EBOLDSEERINATRANCESEEINGALLHISOWNMISCHANCEWITHAGLASSYCOUNTENANCEDIDSHELOOKTOCAMELOTANDATT\ HECLOSINGOFTHEDAYSHELOOSEDTHECHAINANDDOWNSHELAYTHEBROADSTREAMBOREHERFARAWAYTHELADYOFSHALO\ TTLYINGROBEDINSNOWYWHITETHATLOOSELYFLEWTOLEFTANDRIGHTTHELEAVESUPONHERFALLINGLIGHTTHROTHEN\ OISESOFTHENIGHTSHEFLOATEDDOWNTOCAMELOTANDASTHEBOATHEADWOUNDALONGTHEWILLOWYHILLSANDFIELDSA\ MONGTHEYHEARDHERSINGINGHERLASTSONGTHELADYOFSHALOTTHEARDACAROLMOURNFULHOLYCHANTEDLOUDLYCHA\ NTEDLOWLYTILLHERBLOODWASFROZENSLOWLYANDHEREYESWEREDARKENDWHOLLYTURNDTOTOWERDCAMELOTFORERE\ SHEREACHDUPONTHETIDETHEFIRSTHOUSEBYTHEWATERSIDESINGINGINHERSONGSHEDIEDTHELADYOFSHALOTTUND\ ERTOWERANDBALCONYBYGARDENWALLANDGALLERYAGLEAMINGSHAPESHEFLOATEDBYDEADPALEBETWEENTHEHOUSES\ HIGHSILENTINTOCAMELOTOUTUPONTHEWHARFSTHEYCAMEKNIGHTANDBURGHERLORDANDDAMEANDROUNDTHEPROWTH\ EYREADHERNAMETHELADYOFSHALOTTWHOISTHISANDWHATISHEREANDINTHELIGHTEDPALACENEARDIEDTHESOUNDO\ FROYALCHEERANDTHEYCROSSDTHEMSELVESFORFEARALLTHEKNIGHTSATCAMELOTBUTLANCELOTMUSEDALITTLESPA\ CEHESAIDSHEHASALOVELYFACEGODINHISMERCYLENDHERGRACETHELADYOFSHALOTT > /* > It is still possible to read it. > enc is our plaintext, encoded for the substitution cryptosystem tennyson. > Now we encipher it with a key called alf. > */ > xxx:=Enciphering(alf,enc); > xxx; NQZSFEZBCSKZFEZBSOZBVSZVNQRTSZVKCNTJYBVZXYQKNTBXZFEYFIVNFEZFEZMNVKYQKWZZFFEZCGXYQKFEBNFEZ\ TSZVKFEZBNYKBHQCJXFNWYQXFNMZBKIYWZVNFYQKHLYQKKNMQFEZLZNLVZRNRYUSQRMEZBZFEZVSVSZCJVNMBNHQK\ YQSCVYQKFEZBZJZVNMFEZSCVYQKNTCEYVNFFMSVVNMCMESFZQYCLZQCDHSOZBVSFFVZJBZZUZCKHCGYQKCESOZBFE\ BNFEZMYOZFEYFBHQCTNBZOZBJXFEZSCVYQKSQFEZBSOZBTVNMSQRKNMQFNIYWZVNFTNHBRBYXMYVVCYQKTNHBRBYX\ FNMZBCNOZBVNNGYCLYIZNTTVNMZBCYQKFEZCSVZQFSCVZSWJNMZBCFEZVYKXNTCEYVNFFJXFEZWYBRSQMSVVNMOZS\ VKCVSKZFEZEZYOXJYBRZCFBYSVKJXCVNMENBCZCYQKHQEYSVKFEZCEYVVNLTVSFFZFECSVGZQCYSVKCGSWWSQRKNM\ QFNIYWZVNFJHFMENEYFECZZQEZBMYOZEZBEYQKNBYFFEZIYCZWZQFCZZQEZBCFYQKNBSCCEZGQNMQSQYVVFEZVYQK\ FEZVYKXNTCEYVNFFNQVXBZYLZBCBZYLSQRZYBVXSQYWNQRFEZJZYBKZKJYBVZXEZYBYCNQRFEYFZIENZCIEZZBVXT\ BNWFEZBSOZBMSQKSQRIVZYBVXKNMQFNFNMZBKIYWZVNFYQKJXFEZWNNQFEZBZYLZBMZYBXLSVSQRCEZYOZCSQHLVY\ QKCYSBXVSCFZQSQRMESCLZBCFSCFEZTYSBXVYKXNTCEYVNFFFEZBZCEZMZYOZCJXQSREFYQKKYXYWYRSIMZJMSFEI\ NVNHBCRYXCEZEYCEZYBKYMESCLZBCYXYIHBCZSCNQEZBSTCEZCFYXFNVNNGKNMQFNIYWZVNFCEZGQNMCQNFMEYFFE\ ZIHBCZWYXJZYQKCNCEZMZYOZFECFZYKSVXYQKVSFFVZNFEZBIYBZEYFECEZFEZVYKXNTCEYVNFFYQKWNOSQRFEBNY\ WSBBNBIVZYBFEYFEYQRCJZTNBZEZBYVVFEZXZYBCEYKNMCNTFEZMNBVKYLLZYBFEZBZCEZCZZCFEZESREMYXQZYBM\ SQKSQRKNMQFNIYWZVNFFEZBZFEZBSOZBZKKXMESBVCYQKFEZBZFEZCHBVXOSVVYRZIEHBVCYQKFEZBZKIVNYGCNTW\ YBGZFRSBVCLYCCNQMYBKTBNWCEYVNFFCNWZFSWZCYFBNNLNTKYWCZVCRVYKYQYJJNFNQYQYWJVSQRLYKCNWZFSWZC\ YIHBVXCEZLEZBKVYKNBVNQREYSBKLYRZSQIBSWCNQIVYKRNZCJXFNFNMZBKIYWZVNFYQKCNWZFSWZCFEBNFEZWSBB\ NBJVHZFEZGQSREFCINWZBSKSQRFMNYQKFMNCEZEYFEQNVNXYVGQSREFYQKFBHZFEZVYKXNTCEYVNFFJHFSQEZBMZJ\ CEZCFSVVKZVSREFCFNMZYOZFEZWSBBNBCWYRSICSREFCTNBNTFZQFEBNFEZCSVZQFQSREFCYTHQZBYVMSFELVHWZC\ YQKVSREFCYQKWHCSIMZQFFNIYWZVNFNBMEZQFEZWNNQMYCNOZBEZYKIYWZFMNXNHQRVNOZBCVYFZVXMZKSYWEYVTC\ SIGNTCEYKNMCCYSKFEZVYKXNTCEYVNFFYJNMCENFTBNWEZBJNMZBZYOZCEZBNKZJZFMZZQFEZJYBVZXCEZYOZCFEZ\ CHQIYWZKYUUVSQRFEBNFEZVZYOZCYQKTVYWZKHLNQFEZJBYUZQRBZYOZCNTJNVKCSBVYQIZVNFYBZKIBNCCGQSREF\ TNBZOZBGQZZVKFNYVYKXSQESCCESZVKFEYFCLYBGVZKNQFEZXZVVNMTSZVKJZCSKZBZWNFZCEYVNFFFEZRZWWXJBS\ KVZRVSFFZBKTBZZVSGZFNCNWZJBYQIENTCFYBCMZCZZEHQRSQFEZRNVKZQRYVYPXFEZJBSKVZJZVVCBYQRWZBBSVX\ YCEZBNKZKNMQFNIYWZVNFYQKTBNWESCJVYUNQKJYVKBSICVHQRYWSREFXCSVOZBJHRVZEHQRYQKYCEZBNKZESCYBW\ NHBBHQRJZCSKZBZWNFZCEYVNFFYVVSQFEZJVHZHQIVNHKZKMZYFEZBFESIGAZMZVVKCENQZFEZCYKKVZVZYFEZBFE\ ZEZVWZFYQKFEZEZVWZFTZYFEZBJHBQKVSGZNQZJHBQSQRTVYWZFNRZFEZBYCEZBNKZKNMQFNIYWZVNFYCNTFZQFEB\ NFEZLHBLVZQSREFJZVNMFEZCFYBBXIVHCFZBCJBSREFCNWZJZYBKZKWZFZNBFBYSVSQRVSREFWNOZCNOZBCFSVVCE\ YVNFFESCJBNYKIVZYBJBNMSQCHQVSREFRVNMKNQJHBQSCEKENNOZCESCMYBENBCZFBNKZTBNWHQKZBQZYFEESCEZV\ WZFTVNMKESCINYVJVYIGIHBVCYCNQEZBNKZYCEZBNKZKNMQFNIYWZVNFTBNWFEZJYQGYQKTBNWFEZBSOZBEZTVYCE\ KSQFNFEZIBXCFYVWSBBNBFSBBYVSBBYJXFEZBSOZBCYQRCSBVYQIZVNFCEZVZTFFEZMZJCEZVZTFFEZVNNWCEZWYK\ ZFEBZZLYIZCFEBNFEZBNNWCEZCYMFEZMYFZBVSVXJVNNWCEZCYMFEZEZVWZFYQKFEZLVHWZCEZVNNGKKNMQFNIYWZ\ VNFNHFTVZMFEZMZJYQKTVNYFZKMSKZFEZWSBBNBIBYIGKTBNWCSKZFNCSKZFEZIHBCZSCINWZHLNQWZIBSZKFEZVY\ KXNTCEYVNFFSQFEZCFNBWXZYCFMSQKCFBYSQSQRFEZLYVZXZVVNMMNNKCMZBZMYQSQRFEZJBNYKCFBZYWSQESCJYQ\ GCINWLVYSQSQREZYOSVXFEZVNMCGXBYSQSQRNOZBFNMZBKIYWZVNFKNMQCEZIYWZYQKTNHQKYJNYFJZQZYFEYMSVV\ NMVZTFYTVNYFYQKBNHQKYJNHFFEZLBNMCEZMBNFZFEZVYKXNTCEYVNFFYQKKNMQFEZBSOZBCKSWZPLYQCZVSGZCNW\ ZJNVKCZZBSQYFBYQIZCZZSQRYVVESCNMQWSCIEYQIZMSFEYRVYCCXINHQFZQYQIZKSKCEZVNNGFNIYWZVNFYQKYFF\ EZIVNCSQRNTFEZKYXCEZVNNCZKFEZIEYSQYQKKNMQCEZVYXFEZJBNYKCFBZYWJNBZEZBTYBYMYXFEZVYKXNTCEYVN\ FFVXSQRBNJZKSQCQNMXMESFZFEYFVNNCZVXTVZMFNVZTFYQKBSREFFEZVZYOZCHLNQEZBTYVVSQRVSREFFEBNFEZQ\ NSCZCNTFEZQSREFCEZTVNYFZKKNMQFNIYWZVNFYQKYCFEZJNYFEZYKMNHQKYVNQRFEZMSVVNMXESVVCYQKTSZVKCY\ WNQRFEZXEZYBKEZBCSQRSQREZBVYCFCNQRFEZVYKXNTCEYVNFFEZYBKYIYBNVWNHBQTHVENVXIEYQFZKVNHKVXIEY\ QFZKVNMVXFSVVEZBJVNNKMYCTBNUZQCVNMVXYQKEZBZXZCMZBZKYBGZQKMENVVXFHBQKFNFNMZBKIYWZVNFTNBZBZ\ CEZBZYIEKHLNQFEZFSKZFEZTSBCFENHCZJXFEZMYFZBCSKZCSQRSQRSQEZBCNQRCEZKSZKFEZVYKXNTCEYVNFFHQK\ ZBFNMZBYQKJYVINQXJXRYBKZQMYVVYQKRYVVZBXYRVZYWSQRCEYLZCEZTVNYFZKJXKZYKLYVZJZFMZZQFEZENHCZC\ ESRECSVZQFSQFNIYWZVNFNHFHLNQFEZMEYBTCFEZXIYWZGQSREFYQKJHBREZBVNBKYQKKYWZYQKBNHQKFEZLBNMFE\ ZXBZYKEZBQYWZFEZVYKXNTCEYVNFFMENSCFESCYQKMEYFSCEZBZYQKSQFEZVSREFZKLYVYIZQZYBKSZKFEZCNHQKN\ TBNXYVIEZZBYQKFEZXIBNCCKFEZWCZVOZCTNBTZYBYVVFEZGQSREFCYFIYWZVNFJHFVYQIZVNFWHCZKYVSFFVZCLY\ IZEZCYSKCEZEYCYVNOZVXTYIZRNKSQESCWZBIXVZQKEZBRBYIZFEZVYKXNTCEYVNFF > /* > The key alf was defined in the file tut2data.txt that we loaded at the > start, and so we could look at it if we wanted to, and even get magma to > tell us the inverse key. > */ > alf; YJIKZTRESAGVWQNLDBCFHOMPXU > InverseKey(alf); JRSQHTKUCBDPWOVXNGIFZLMYAE > /* > But let us pretend that we do not know the key. Pretend that we have > surreptitiously obtained the enciphered message, and now want to > try to decipher it. > The first useful piece of information is that E is by far the most > common letter in ordinary English text, and so the letter that > occurs most frequently in the ciphertext probably (we hope!) > represents E. This doesn't always work ... > */ > SortedFreqDist(xxx); [ <0.127644231542944908142089843750, Z>, <0.0841346150264143943786621093750, F>, <0.0836538458243012428283691406250, Y>, <0.0790865384042263031005859375000, N>, <0.0752403847873210906982421875000, E>, <0.0673076920211315155029296875000, V>, <0.0639423076063394546508789062500, B>, <0.0620192307978868484497070312500, C>, <0.0576923075132071971893310546875, Q>, <0.0521634616889059543609619140625, K>, <0.0492788460105657577514648437500, S>, <0.0278846153523772954940795898438, M>, <0.0245192307047545909881591796875, W>, <0.0223557692952454090118408203125, R>, <0.0216346154920756816864013671875, X>, <0.0199519230518490076065063476562, I>, <0.0192307692486792802810668945312, T>, <0.0175480768084526062011718750000, J>, <0.0163461538031697273254394531250, H>, <0.00961538462433964014053344726562, L>, <0.00889423082116991281509399414062, O>, <0.00721153843915089964866638183594, G>, <0.00168269230925943702459335327148, U>, <0.000480769231216982007026672363281, P>, <0.000240384615608491003513336181641, A>, <0.000240384615608491003513336181641, D> ] > /* > Z is the most common letter in xxx, occurring about 12.8% of the time, > F is the next most common at about 8.4%, followed by Y at slightly less > than 8.4%, etc.. Next most common in English after E comes T, closely > followed by A. So if we are exceptionally lucky F represents T and Y represents > A. This certainly doesn't always work ... one often meets examples where > O appears more frequently than A or T, sometimes R or S is second after E. > Nothing is guaranteed. > */ > yyy:=String(xxx); > Type(yyy); MonStgElt > Type(xxx); CryptTxt > /* > yyy is really just the same as xxx -- at least they look the > same if you print them out -- but yyy is a string and xxx is a > piece of cryptographic text. I had to do this because (unfortunately) > mamgma won't let me type xxx[3] (for example) to get the third letter > of xxx, but yyy[3] is permitted. > > The next few lines of magma code tell magma to look through the > string yyy and find all values of i for which yyy[i] is an F and yyy[i+2] is > a Z -- and then print out the substring of yyy consisting of yyy[i], yyy[i+1] and > yyy[i+2]. That is, magma will print out all occurrences of > F(something)Z > that appear in the string yyy. > */ > for i:=1 to #yyy-2 do for> if yyy[i] eq "F" and yyy[i+2] eq "Z" then for|if> print yyy[i..i+2]; for|if> end if; for> end for; FEZ FEZ FEZ FEZ FEZ FEZ FEZ FEZ FEZ FEZ FEZ FVZ FEZ FEZ FEZ FEZ FEZ FEZ FEZ FEZ FFZ FEZ FCZ FEZ FEZ FEZ FEZ FEZ FEZ FEZ FEZ FEZ FVZ FEZ FEZ FEZ FEZ FEZ FEZ FEZ FEZ FEZ FEZ FEZ FEZ FEZ FEZ FEZ FEZ FEZ FEZ FMZ FEZ FEZ FEZ FEZ FEZ FEZ FFZ FEZ FEZ FEZ FEZ FEZ FEZ FEZ FEZ FTZ FEZ FEZ FEZ FJZ FEZ FEZ FEZ FEZ FEZ FEZ FEZ FEZ FEZ FEZ FEZ FEZ FEZ FEZ FEZ FEZ FEZ FEZ FBZ FEZ FJZ FEZ FEZ FEZ FEZ FEZ FEZ FEZ FBZ FEZ FEZ FEZ FEZ FEZ FEZ FEZ FEZ FEZ FEZ FEZ FEZ FEZ FEZ FMZ FEZ FEZ FEZ FEZ FEZ FEZ FEZ FEZ FEZ FEZ FEZ FVZ FEZ > /* > There are lots of FEZ's. If F does represent T and Z does represent E > then FEZ represents T?E, where the ? is whatever E represents. I would > expect THE to occur very frequently -- it is the most common "trigraph" > in normal English text. (A trigraph is a sequence of three consecutive > letters.) So maybe E represents H. The frequency table above showed > that E is the 5th most common letter in the ciphertext, occurring about > 7.5% of the time. Now H is not usually that frequent -- but it could happen > that H occurs rather frequently in this plaintext. There are so many FEZ's > -- I think this just has to be THE! > > Just to be certain that it is not Y (rather than F) that represents T, > let us see how many occurrences there are of > Y(something)Z > in the ciphertext yyy. > */ > for i:=1 to #yyy-2 do for> if yyy[i] eq "Y" and yyy[i+2] eq "Z" then for|if> print yyy[i..i+2]; for|if> end if; for> end for; YWZ YOZ YWZ YIZ YWZ YOZ YCZ YLZ YFZ YWZ YLZ YOZ YOZ YWZ YOZ YBZ YWZ YRZ YRZ YWZ YOZ YWZ YWZ YFZ YOZ YOZ YWZ YOZ YWZ YUZ YOZ YBZ YWZ YWZ YWZ YWZ YKZ YIZ YFZ YWZ YFZ YVZ YWZ YWZ YWZ YOZ YFZ YWZ YWZ YFZ YLZ YFZ YVZ YWZ YWZ YWZ YWZ YIZ YWZ YIZ YIZ YIZ > /* > This is nowhere near as promising as FEZ ... > */ > kk:=tennyson!freqkey(xxx); > kk; QSHZITKPFYDBUOVXRMLGJNCWAE > /* > Based on the frequencies of the various letters in xxx, magma has > guessed that Z represents E and F represents T (since E is the 26th letter > of kk and T the 6th). This is what we guessed too. But magma is guessing > that E represents I (the 5th letter of kk) and we think it should be H. > So we swap I and H. > */ > swap("I","H",~kk); > /* > In magma parlance "swap" is a procedure rather than a function. Rather > than returning a value it changes some existing values. The tilde > appearing in front of the kk indicates that the value of kk is > going to be changed by the command. > */ > kk; QSIZHTKPFYDBUOVXRMLGJNCWAE > /* > Indeed, the positions of I and H have been swapped. > > In fact we could have avoided doing that "for" loop that printed out all > those FEZ's. It would have been easier to just get magma to tell us the > most common trigraphs in the ciphertext xxx. We expect that the most > common trigraph will represent THE. > */ > MostCommonPolygraphs(xxx,3,0.01); {@ EZB, FEZ, YQK @} [ 0.0117901828681424446583253128008, 0.0279114533205004812319538017324, 0.0125120307988450433108758421559 ] > /* > I asked magma to print out all the trigraphs in xxx that have a > relative frequency greater than 0.01, and it found three of them. > The one with the highest frequency is FEZ, at 0.0279. > > Now let us encipher xxx using kk, which is our first guess at the > key that will recover the original plaintext. > */ > zzz:=Enciphering(kk,xxx); > zzz; ORELTHESILDETHESLVESNLENORMGLENDIOGYASNEWARDOGSWETHATFNOTHETHEUONDARDCEETTHEIKWARDTHSOTHE\ GLENDTHESOADSPRIYWTOCARWTOUESDFACENOTARDPBARDDOURTHEBEOBNEMOMAJLRMUHESETHENLNLEIYNOUSOPRD\ ARLINARDTHESEYENOUTHELINARDOGIHANOTTULNNOUIUHLTERAIBERIZPLVESNLTTNEYSEEJEIDPIKARDIHLVESTH\ SOTHEUAVETHATSPRIGOSEVESYWTHELINARDLRTHESLVESGNOULRMDOURTOFACENOTGOPSMSAWUANNIARDGOPSMSAW\ TOUESIOVESNOOKAIBAFEOGGNOUESIARDTHEILNERTLINELCYOUESITHENADWOGIHANOTTYWTHECASMLRULNNOUVEL\ NDINLDETHEHEAVWYASMEITSALNDYWINOUHOSIEIARDPRHALNDTHEIHANNOBGNLTTETHILNKERIALNDIKLCCLRMDOU\ RTOFACENOTYPTUHOHATHIEERHESUAVEHESHARDOSATTHEFAIECERTIEERHESITARDOSLIIHEKROURLRANNTHENARD\ THENADWOGIHANOTTORNWSEABESISEABLRMEASNWLRACORMTHEYEASDEDYASNEWHEASAIORMTHATEFHOEIFHEESNWG\ SOCTHESLVESULRDLRMFNEASNWDOURTOTOUESDFACENOTARDYWTHECOORTHESEABESUEASWBLNLRMIHEAVEILRPBNA\ RDIALSWNLITERLRMUHLIBESITLITHEGALSWNADWOGIHANOTTTHESEIHEUEAVEIYWRLMHTARDDAWACAMLFUEYULTHF\ ONOPSIMAWIHEHAIHEASDAUHLIBESIAWAFPSIELIORHESLGIHEITAWTONOOKDOURTOFACENOTIHEKROUIROTUHATTH\ EFPSIECAWYEARDIOIHEUEAVETHITEADLNWARDNLTTNEOTHESFASEHATHIHETHENADWOGIHANOTTARDCOVLRMTHSOA\ CLSSOSFNEASTHATHARMIYEGOSEHESANNTHEWEASIHADOUIOGTHEUOSNDABBEASTHESEIHEIEEITHEHLMHUAWREASU\ LRDLRMDOURTOFACENOTTHESETHESLVESEDDWUHLSNIARDTHESETHEIPSNWVLNNAMEFHPSNIARDTHESEDFNOAKIOGC\ ASKETMLSNIBAIIORUASDGSOCIHANOTTIOCETLCEIATSOOBOGDACIENIMNADARAYYOTORARACYNLRMBADIOCETLCEI\ AFPSNWIHEBHESDNADOSNORMHALSDBAMELRFSLCIORFNADMOEIYWTOTOUESDFACENOTARDIOCETLCEITHSOTHECLSS\ OSYNPETHEKRLMHTIFOCESLDLRMTUOARDTUOIHEHATHRONOWANKRLMHTARDTSPETHENADWOGIHANOTTYPTLRHESUEY\ IHEITLNNDENLMHTITOUEAVETHECLSSOSICAMLFILMHTIGOSOGTERTHSOTHEILNERTRLMHTIAGPRESANULTHBNPCEI\ ARDNLMHTIARDCPILFUERTTOFACENOTOSUHERTHECOORUAIOVESHEADFACETUOWOPRMNOVESINATENWUEDLACHANGI\ LFKOGIHADOUIIALDTHENADWOGIHANOTTAYOUIHOTGSOCHESYOUESEAVEIHESODEYETUEERTHEYASNEWIHEAVEITHE\ IPRFACEDAJJNLRMTHSOTHENEAVEIARDGNACEDPBORTHEYSAJERMSEAVEIOGYONDILSNARFENOTASEDFSOIIKRLMHT\ GOSEVESKREENDTOANADWLRHLIIHLENDTHATIBASKNEDORTHEWENNOUGLENDYEILDESECOTEIHANOTTTHEMECCWYSL\ DNEMNLTTESDGSEENLKETOIOCEYSARFHOGITASIUEIEEHPRMLRTHEMONDERMANAXWTHEYSLDNEYENNISARMCESSLNW\ AIHESODEDOURTOFACENOTARDGSOCHLIYNAJORDYANDSLFINPRMACLMHTWILNVESYPMNEHPRMARDAIHESODEHLIASC\ OPSSPRMYEILDESECOTEIHANOTTANNLRTHEYNPEPRFNOPDEDUEATHESTHLFKQEUENNDIHORETHEIADDNENEATHESTH\ EHENCETARDTHEHENCETGEATHESYPSRDNLKEOREYPSRLRMGNACETOMETHESAIHESODEDOURTOFACENOTAIOGTERTHS\ OTHEBPSBNERLMHTYENOUTHEITASSWFNPITESIYSLMHTIOCEYEASDEDCETEOSTSALNLRMNLMHTCOVEIOVESITLNNIH\ ANOTTHLIYSOADFNEASYSOULRIPRNLMHTMNOUDORYPSRLIHDHOOVEIHLIUASHOSIETSODEGSOCPRDESREATHHLIHEN\ CETGNOUDHLIFOANYNAFKFPSNIAIORHESODEAIHESODEDOURTOFACENOTGSOCTHEYARKARDGSOCTHESLVESHEGNAIH\ DLRTOTHEFSWITANCLSSOSTLSSANLSSAYWTHESLVESIARMILSNARFENOTIHENEGTTHEUEYIHENEGTTHENOOCIHECAD\ ETHSEEBAFEITHSOTHESOOCIHEIAUTHEUATESNLNWYNOOCIHEIAUTHEHENCETARDTHEBNPCEIHENOOKDDOURTOFACE\ NOTOPTGNEUTHEUEYARDGNOATEDULDETHECLSSOSFSAFKDGSOCILDETOILDETHEFPSIELIFOCEPBORCEFSLEDTHENA\ DWOGIHANOTTLRTHEITOSCWEAITULRDITSALRLRMTHEBANEWENNOUUOODIUESEUARLRMTHEYSOADITSEACLRHLIYAR\ KIFOCBNALRLRMHEAVLNWTHENOUIKWSALRLRMOVESTOUESDFACENOTDOURIHEFACEARDGOPRDAYOATYEREATHAULNN\ OUNEGTAGNOATARDSOPRDAYOPTTHEBSOUIHEUSOTETHENADWOGIHANOTTARDDOURTHESLVESIDLCEXBARIENLKEIOC\ EYONDIEESLRATSARFEIEELRMANNHLIOURCLIFHARFEULTHAMNAIIWFOPRTERARFEDLDIHENOOKTOFACENOTARDATT\ HEFNOILRMOGTHEDAWIHENOOIEDTHEFHALRARDDOURIHENAWTHEYSOADITSEACYOSEHESGASAUAWTHENADWOGIHANO\ TTNWLRMSOYEDLRIROUWUHLTETHATNOOIENWGNEUTONEGTARDSLMHTTHENEAVEIPBORHESGANNLRMNLMHTTHSOTHER\ OLIEIOGTHERLMHTIHEGNOATEDDOURTOFACENOTARDAITHEYOATHEADUOPRDANORMTHEULNNOUWHLNNIARDGLENDIA\ CORMTHEWHEASDHESILRMLRMHESNAITIORMTHENADWOGIHANOTTHEASDAFASONCOPSRGPNHONWFHARTEDNOPDNWFHA\ RTEDNOUNWTLNNHESYNOODUAIGSOJERINOUNWARDHESEWEIUESEDASKERDUHONNWTPSRDTOTOUESDFACENOTGOSESE\ IHESEAFHDPBORTHETLDETHEGLSITHOPIEYWTHEUATESILDEILRMLRMLRHESIORMIHEDLEDTHENADWOGIHANOTTPRD\ ESTOUESARDYANFORWYWMASDERUANNARDMANNESWAMNEACLRMIHABEIHEGNOATEDYWDEADBANEYETUEERTHEHOPIEI\ HLMHILNERTLRTOFACENOTOPTPBORTHEUHASGITHEWFACEKRLMHTARDYPSMHESNOSDARDDACEARDSOPRDTHEBSOUTH\ EWSEADHESRACETHENADWOGIHANOTTUHOLITHLIARDUHATLIHESEARDLRTHENLMHTEDBANAFEREASDLEDTHEIOPRDO\ GSOWANFHEESARDTHEWFSOIIDTHECIENVEIGOSGEASANNTHEKRLMHTIATFACENOTYPTNARFENOTCPIEDANLTTNEIBA\ FEHEIALDIHEHAIANOVENWGAFEMODLRHLICESFWNERDHESMSAFETHENADWOGIHANOTT > /* > Just looking at it, I do not see many words. There is still a lot of > work to be done. > */ > MostCommonPolygraphs(zzz,3,0.01); {@ THE, HES, ARD @} [ 0.0279114533205004812319538017324, 0.0117901828681424446583253128008, 0.0125120307988450433108758421559 ] > /* > THE is the most common trigraph in zzz, as we knew it would be since > that's the way we chose kk. Now it seems plausible that AND should be > a very common trigraph, just because of the word "and". And definitely > HER occurs in lots of words -- rather, mother, further, here, her, there, > where (to list but a few). > */ > swap("R","N",~kk); > swap("S","R",~kk); > zzz:=Enciphering(kk,xxx); > MostCommonPolygraphs(zzz,3,0.01); {@ THE, HER, AND @} [ 0.0279114533205004812319538017324, 0.0117901828681424446583253128008, 0.0125120307988450433108758421559 ] > /* > This looks quite plausible. I wonder if I can read zzz yet ... > */ > zzz; ONELTHERILDETHERLVERSLESONMGLESDIOGYARSEWANDOGRWETHATFSOTHETHEUOSDANDCEETTHEIKWANDTHROTHE\ GLESDTHEROADRPNIYWTOCANWTOUERDFACESOTANDPBANDDOUNTHEBEOBSEMOMAJLNMUHERETHESLSLEIYSOUROPND\ ANLISANDTHEREYESOUTHELISANDOGIHASOTTULSSOUIUHLTENAIBENIZPLVERSLTTSEYREEJEIDPIKANDIHLVERTH\ ROTHEUAVETHATRPNIGOREVERYWTHELISANDLNTHERLVERGSOULNMDOUNTOFACESOTGOPRMRAWUASSIANDGOPRMRAW\ TOUERIOVERSOOKAIBAFEOGGSOUERIANDTHEILSENTLISELCYOUERITHESADWOGIHASOTTYWTHECARMLNULSSOUVEL\ SDISLDETHEHEAVWYARMEITRALSDYWISOUHORIEIANDPNHALSDTHEIHASSOBGSLTTETHILSKENIALSDIKLCCLNMDOU\ NTOFACESOTYPTUHOHATHIEENHERUAVEHERHANDORATTHEFAIECENTIEENHERITANDORLIIHEKNOUNLNASSTHESAND\ THESADWOGIHASOTTONSWREABERIREABLNMEARSWLNACONMTHEYEARDEDYARSEWHEARAIONMTHATEFHOEIFHEERSWG\ ROCTHERLVERULNDLNMFSEARSWDOUNTOTOUERDFACESOTANDYWTHECOONTHEREABERUEARWBLSLNMIHEAVEILNPBSA\ NDIALRWSLITENLNMUHLIBERITLITHEGALRWSADWOGIHASOTTTHEREIHEUEAVEIYWNLMHTANDDAWACAMLFUEYULTHF\ OSOPRIMAWIHEHAIHEARDAUHLIBERIAWAFPRIELIONHERLGIHEITAWTOSOOKDOUNTOFACESOTIHEKNOUINOTUHATTH\ EFPRIECAWYEANDIOIHEUEAVETHITEADLSWANDSLTTSEOTHERFAREHATHIHETHESADWOGIHASOTTANDCOVLNMTHROA\ CLRRORFSEARTHATHANMIYEGOREHERASSTHEWEARIHADOUIOGTHEUORSDABBEARTHEREIHEIEEITHEHLMHUAWNEARU\ LNDLNMDOUNTOFACESOTTHERETHERLVEREDDWUHLRSIANDTHERETHEIPRSWVLSSAMEFHPRSIANDTHEREDFSOAKIOGC\ ARKETMLRSIBAIIONUARDGROCIHASOTTIOCETLCEIATROOBOGDACIESIMSADANAYYOTONANACYSLNMBADIOCETLCEI\ AFPRSWIHEBHERDSADORSONMHALRDBAMELNFRLCIONFSADMOEIYWTOTOUERDFACESOTANDIOCETLCEITHROTHECLRR\ ORYSPETHEKNLMHTIFOCERLDLNMTUOANDTUOIHEHATHNOSOWASKNLMHTANDTRPETHESADWOGIHASOTTYPTLNHERUEY\ IHEITLSSDESLMHTITOUEAVETHECLRRORICAMLFILMHTIGOROGTENTHROTHEILSENTNLMHTIAGPNERASULTHBSPCEI\ ANDSLMHTIANDCPILFUENTTOFACESOTORUHENTHECOONUAIOVERHEADFACETUOWOPNMSOVERISATESWUEDLACHASGI\ LFKOGIHADOUIIALDTHESADWOGIHASOTTAYOUIHOTGROCHERYOUEREAVEIHERODEYETUEENTHEYARSEWIHEAVEITHE\ IPNFACEDAJJSLNMTHROTHESEAVEIANDGSACEDPBONTHEYRAJENMREAVEIOGYOSDILRSANFESOTAREDFROIIKNLMHT\ GOREVERKNEESDTOASADWLNHLIIHLESDTHATIBARKSEDONTHEWESSOUGLESDYEILDERECOTEIHASOTTTHEMECCWYRL\ DSEMSLTTERDGREESLKETOIOCEYRANFHOGITARIUEIEEHPNMLNTHEMOSDENMASAXWTHEYRLDSEYESSIRANMCERRLSW\ AIHERODEDOUNTOFACESOTANDGROCHLIYSAJONDYASDRLFISPNMACLMHTWILSVERYPMSEHPNMANDAIHERODEHLIARC\ OPRRPNMYEILDERECOTEIHASOTTASSLNTHEYSPEPNFSOPDEDUEATHERTHLFKQEUESSDIHONETHEIADDSESEATHERTH\ EHESCETANDTHEHESCETGEATHERYPRNDSLKEONEYPRNLNMGSACETOMETHERAIHERODEDOUNTOFACESOTAIOGTENTHR\ OTHEBPRBSENLMHTYESOUTHEITARRWFSPITERIYRLMHTIOCEYEARDEDCETEORTRALSLNMSLMHTCOVEIOVERITLSSIH\ ASOTTHLIYROADFSEARYROULNIPNSLMHTMSOUDONYPRNLIHDHOOVEIHLIUARHORIETRODEGROCPNDERNEATHHLIHES\ CETGSOUDHLIFOASYSAFKFPRSIAIONHERODEAIHERODEDOUNTOFACESOTGROCTHEYANKANDGROCTHERLVERHEGSAIH\ DLNTOTHEFRWITASCLRRORTLRRASLRRAYWTHERLVERIANMILRSANFESOTIHESEGTTHEUEYIHESEGTTHESOOCIHECAD\ ETHREEBAFEITHROTHEROOCIHEIAUTHEUATERSLSWYSOOCIHEIAUTHEHESCETANDTHEBSPCEIHESOOKDDOUNTOFACE\ SOTOPTGSEUTHEUEYANDGSOATEDULDETHECLRRORFRAFKDGROCILDETOILDETHEFPRIELIFOCEPBONCEFRLEDTHESA\ DWOGIHASOTTLNTHEITORCWEAITULNDITRALNLNMTHEBASEWESSOUUOODIUEREUANLNMTHEYROADITREACLNHLIYAN\ KIFOCBSALNLNMHEAVLSWTHESOUIKWRALNLNMOVERTOUERDFACESOTDOUNIHEFACEANDGOPNDAYOATYENEATHAULSS\ OUSEGTAGSOATANDROPNDAYOPTTHEBROUIHEUROTETHESADWOGIHASOTTANDDOUNTHERLVERIDLCEXBANIESLKEIOC\ EYOSDIEERLNATRANFEIEELNMASSHLIOUNCLIFHANFEULTHAMSAIIWFOPNTENANFEDLDIHESOOKTOFACESOTANDATT\ HEFSOILNMOGTHEDAWIHESOOIEDTHEFHALNANDDOUNIHESAWTHEYROADITREACYOREHERGARAUAWTHESADWOGIHASO\ TTSWLNMROYEDLNINOUWUHLTETHATSOOIESWGSEUTOSEGTANDRLMHTTHESEAVEIPBONHERGASSLNMSLMHTTHROTHEN\ OLIEIOGTHENLMHTIHEGSOATEDDOUNTOFACESOTANDAITHEYOATHEADUOPNDASONMTHEULSSOUWHLSSIANDGLESDIA\ CONMTHEWHEARDHERILNMLNMHERSAITIONMTHESADWOGIHASOTTHEARDAFAROSCOPRNGPSHOSWFHANTEDSOPDSWFHA\ NTEDSOUSWTLSSHERYSOODUAIGROJENISOUSWANDHEREWEIUEREDARKENDUHOSSWTPRNDTOTOUERDFACESOTGORERE\ IHEREAFHDPBONTHETLDETHEGLRITHOPIEYWTHEUATERILDEILNMLNMLNHERIONMIHEDLEDTHESADWOGIHASOTTPND\ ERTOUERANDYASFONWYWMARDENUASSANDMASSERWAMSEACLNMIHABEIHEGSOATEDYWDEADBASEYETUEENTHEHOPIEI\ HLMHILSENTLNTOFACESOTOPTPBONTHEUHARGITHEWFACEKNLMHTANDYPRMHERSORDANDDACEANDROPNDTHEBROUTH\ EWREADHERNACETHESADWOGIHASOTTUHOLITHLIANDUHATLIHEREANDLNTHESLMHTEDBASAFENEARDLEDTHEIOPNDO\ GROWASFHEERANDTHEWFROIIDTHECIESVEIGORGEARASSTHEKNLMHTIATFACESOTYPTSANFESOTCPIEDASLTTSEIBA\ FEHEIALDIHEHAIASOVESWGAFEMODLNHLICERFWSENDHERMRAFETHESADWOGIHASOTT > /* > Right near the start of this I see RLVER ... maybe this should be RIVER? > And ELTHER, maybe should be EITHER? > */ > Score(zzz,Common); 3894 > swap("L","I",~kk); > zzz:=Enciphering(kk,xxx); > Score(zzz,Common); 4478 > /* > At least this Score function thinks that was an improvement. > */ > zzz; ONEITHERLIDETHERIVERSIESONMGIESDLOGYARSEWANDOGRWETHATFSOTHETHEUOSDANDCEETTHELKWANDTHROTHE\ GIESDTHEROADRPNLYWTOCANWTOUERDFACESOTANDPBANDDOUNTHEBEOBSEMOMAJINMUHERETHESISIELYSOUROPND\ ANILSANDTHEREYESOUTHEILSANDOGLHASOTTUISSOULUHITENALBENLZPIVERSITTSEYREEJELDPLKANDLHIVERTH\ ROTHEUAVETHATRPNLGOREVERYWTHEILSANDINTHERIVERGSOUINMDOUNTOFACESOTGOPRMRAWUASSLANDGOPRMRAW\ TOUERLOVERSOOKALBAFEOGGSOUERLANDTHELISENTILSEICYOUERLTHESADWOGLHASOTTYWTHECARMINUISSOUVEI\ SDLSIDETHEHEAVWYARMELTRAISDYWLSOUHORLELANDPNHAISDTHELHASSOBGSITTETHLISKENLAISDLKICCINMDOU\ NTOFACESOTYPTUHOHATHLEENHERUAVEHERHANDORATTHEFALECENTLEENHERLTANDORILLHEKNOUNINASSTHESAND\ THESADWOGLHASOTTONSWREABERLREABINMEARSWINACONMTHEYEARDEDYARSEWHEARALONMTHATEFHOELFHEERSWG\ ROCTHERIVERUINDINMFSEARSWDOUNTOTOUERDFACESOTANDYWTHECOONTHEREABERUEARWBISINMLHEAVELINPBSA\ NDLAIRWSILTENINMUHILBERLTILTHEGAIRWSADWOGLHASOTTTHERELHEUEAVELYWNIMHTANDDAWACAMIFUEYUITHF\ OSOPRLMAWLHEHALHEARDAUHILBERLAWAFPRLEILONHERIGLHELTAWTOSOOKDOUNTOFACESOTLHEKNOULNOTUHATTH\ EFPRLECAWYEANDLOLHEUEAVETHLTEADISWANDSITTSEOTHERFAREHATHLHETHESADWOGLHASOTTANDCOVINMTHROA\ CIRRORFSEARTHATHANMLYEGOREHERASSTHEWEARLHADOULOGTHEUORSDABBEARTHERELHELEELTHEHIMHUAWNEARU\ INDINMDOUNTOFACESOTTHERETHERIVEREDDWUHIRSLANDTHERETHELPRSWVISSAMEFHPRSLANDTHEREDFSOAKLOGC\ ARKETMIRSLBALLONUARDGROCLHASOTTLOCETICELATROOBOGDACLESLMSADANAYYOTONANACYSINMBADLOCETICEL\ AFPRSWLHEBHERDSADORSONMHAIRDBAMEINFRICLONFSADMOELYWTOTOUERDFACESOTANDLOCETICELTHROTHECIRR\ ORYSPETHEKNIMHTLFOCERIDINMTUOANDTUOLHEHATHNOSOWASKNIMHTANDTRPETHESADWOGLHASOTTYPTINHERUEY\ LHELTISSDESIMHTLTOUEAVETHECIRRORLCAMIFLIMHTLGOROGTENTHROTHELISENTNIMHTLAGPNERASUITHBSPCEL\ ANDSIMHTLANDCPLIFUENTTOFACESOTORUHENTHECOONUALOVERHEADFACETUOWOPNMSOVERLSATESWUEDIACHASGL\ IFKOGLHADOULLAIDTHESADWOGLHASOTTAYOULHOTGROCHERYOUEREAVELHERODEYETUEENTHEYARSEWLHEAVELTHE\ LPNFACEDAJJSINMTHROTHESEAVELANDGSACEDPBONTHEYRAJENMREAVELOGYOSDLIRSANFESOTAREDFROLLKNIMHT\ GOREVERKNEESDTOASADWINHILLHIESDTHATLBARKSEDONTHEWESSOUGIESDYELIDERECOTELHASOTTTHEMECCWYRI\ DSEMSITTERDGREESIKETOLOCEYRANFHOGLTARLUELEEHPNMINTHEMOSDENMASAXWTHEYRIDSEYESSLRANMCERRISW\ ALHERODEDOUNTOFACESOTANDGROCHILYSAJONDYASDRIFLSPNMACIMHTWLISVERYPMSEHPNMANDALHERODEHILARC\ OPRRPNMYELIDERECOTELHASOTTASSINTHEYSPEPNFSOPDEDUEATHERTHIFKQEUESSDLHONETHELADDSESEATHERTH\ EHESCETANDTHEHESCETGEATHERYPRNDSIKEONEYPRNINMGSACETOMETHERALHERODEDOUNTOFACESOTALOGTENTHR\ OTHEBPRBSENIMHTYESOUTHELTARRWFSPLTERLYRIMHTLOCEYEARDEDCETEORTRAISINMSIMHTCOVELOVERLTISSLH\ ASOTTHILYROADFSEARYROUINLPNSIMHTMSOUDONYPRNILHDHOOVELHILUARHORLETRODEGROCPNDERNEATHHILHES\ CETGSOUDHILFOASYSAFKFPRSLALONHERODEALHERODEDOUNTOFACESOTGROCTHEYANKANDGROCTHERIVERHEGSALH\ DINTOTHEFRWLTASCIRRORTIRRASIRRAYWTHERIVERLANMLIRSANFESOTLHESEGTTHEUEYLHESEGTTHESOOCLHECAD\ ETHREEBAFELTHROTHEROOCLHELAUTHEUATERSISWYSOOCLHELAUTHEHESCETANDTHEBSPCELHESOOKDDOUNTOFACE\ SOTOPTGSEUTHEUEYANDGSOATEDUIDETHECIRRORFRAFKDGROCLIDETOLIDETHEFPRLEILFOCEPBONCEFRIEDTHESA\ DWOGLHASOTTINTHELTORCWEALTUINDLTRAININMTHEBASEWESSOUUOODLUEREUANINMTHEYROADLTREACINHILYAN\ KLFOCBSAININMHEAVISWTHESOULKWRAININMOVERTOUERDFACESOTDOUNLHEFACEANDGOPNDAYOATYENEATHAUISS\ OUSEGTAGSOATANDROPNDAYOPTTHEBROULHEUROTETHESADWOGLHASOTTANDDOUNTHERIVERLDICEXBANLESIKELOC\ EYOSDLEERINATRANFELEEINMASSHILOUNCILFHANFEUITHAMSALLWFOPNTENANFEDIDLHESOOKTOFACESOTANDATT\ HEFSOLINMOGTHEDAWLHESOOLEDTHEFHAINANDDOUNLHESAWTHEYROADLTREACYOREHERGARAUAWTHESADWOGLHASO\ TTSWINMROYEDINLNOUWUHITETHATSOOLESWGSEUTOSEGTANDRIMHTTHESEAVELPBONHERGASSINMSIMHTTHROTHEN\ OILELOGTHENIMHTLHEGSOATEDDOUNTOFACESOTANDALTHEYOATHEADUOPNDASONMTHEUISSOUWHISSLANDGIESDLA\ CONMTHEWHEARDHERLINMINMHERSALTLONMTHESADWOGLHASOTTHEARDAFAROSCOPRNGPSHOSWFHANTEDSOPDSWFHA\ NTEDSOUSWTISSHERYSOODUALGROJENLSOUSWANDHEREWELUEREDARKENDUHOSSWTPRNDTOTOUERDFACESOTGORERE\ LHEREAFHDPBONTHETIDETHEGIRLTHOPLEYWTHEUATERLIDELINMINMINHERLONMLHEDIEDTHESADWOGLHASOTTPND\ ERTOUERANDYASFONWYWMARDENUASSANDMASSERWAMSEACINMLHABELHEGSOATEDYWDEADBASEYETUEENTHEHOPLEL\ HIMHLISENTINTOFACESOTOPTPBONTHEUHARGLTHEWFACEKNIMHTANDYPRMHERSORDANDDACEANDROPNDTHEBROUTH\ EWREADHERNACETHESADWOGLHASOTTUHOILTHILANDUHATILHEREANDINTHESIMHTEDBASAFENEARDIEDTHELOPNDO\ GROWASFHEERANDTHEWFROLLDTHECLESVELGORGEARASSTHEKNIMHTLATFACESOTYPTSANFESOTCPLEDASITTSELBA\ FEHELAIDLHEHALASOVESWGAFEMODINHILCERFWSENDHERMRAFETHESADWOGLHASOTT > /* > It is remarkably close to readable! ONEITHERLIDETHERIVERSIE will become > ONEITHERSIDETHERIVERLIE if we just swap S and L. > */ > swap("L","S",~kk); > zzz:=Enciphering(kk,xxx); > Score(zzz,Common); 5148 > /* > Again the Score increased! > */ > zzz; ONEITHERSIDETHERIVERLIELONMGIELDSOGYARLEWANDOGRWETHATFLOTHETHEUOLDANDCEETTHESKWANDTHROTHE\ GIELDTHEROADRPNSYWTOCANWTOUERDFACELOTANDPBANDDOUNTHEBEOBLEMOMAJINMUHERETHELILIESYLOUROPND\ ANISLANDTHEREYELOUTHEISLANDOGSHALOTTUILLOUSUHITENASBENSZPIVERLITTLEYREEJESDPSKANDSHIVERTH\ ROTHEUAVETHATRPNSGOREVERYWTHEISLANDINTHERIVERGLOUINMDOUNTOFACELOTGOPRMRAWUALLSANDGOPRMRAW\ TOUERSOVERLOOKASBAFEOGGLOUERSANDTHESILENTISLEICYOUERSTHELADWOGSHALOTTYWTHECARMINUILLOUVEI\ LDSLIDETHEHEAVWYARMESTRAILDYWSLOUHORSESANDPNHAILDTHESHALLOBGLITTETHSILKENSAILDSKICCINMDOU\ NTOFACELOTYPTUHOHATHSEENHERUAVEHERHANDORATTHEFASECENTSEENHERSTANDORISSHEKNOUNINALLTHELAND\ THELADWOGSHALOTTONLWREABERSREABINMEARLWINACONMTHEYEARDEDYARLEWHEARASONMTHATEFHOESFHEERLWG\ ROCTHERIVERUINDINMFLEARLWDOUNTOTOUERDFACELOTANDYWTHECOONTHEREABERUEARWBILINMSHEAVESINPBLA\ NDSAIRWLISTENINMUHISBERSTISTHEGAIRWLADWOGSHALOTTTHERESHEUEAVESYWNIMHTANDDAWACAMIFUEYUITHF\ OLOPRSMAWSHEHASHEARDAUHISBERSAWAFPRSEISONHERIGSHESTAWTOLOOKDOUNTOFACELOTSHEKNOUSNOTUHATTH\ EFPRSECAWYEANDSOSHEUEAVETHSTEADILWANDLITTLEOTHERFAREHATHSHETHELADWOGSHALOTTANDCOVINMTHROA\ CIRRORFLEARTHATHANMSYEGOREHERALLTHEWEARSHADOUSOGTHEUORLDABBEARTHERESHESEESTHEHIMHUAWNEARU\ INDINMDOUNTOFACELOTTHERETHERIVEREDDWUHIRLSANDTHERETHESPRLWVILLAMEFHPRLSANDTHEREDFLOAKSOGC\ ARKETMIRLSBASSONUARDGROCSHALOTTSOCETICESATROOBOGDACSELSMLADANAYYOTONANACYLINMBADSOCETICES\ AFPRLWSHEBHERDLADORLONMHAIRDBAMEINFRICSONFLADMOESYWTOTOUERDFACELOTANDSOCETICESTHROTHECIRR\ ORYLPETHEKNIMHTSFOCERIDINMTUOANDTUOSHEHATHNOLOWALKNIMHTANDTRPETHELADWOGSHALOTTYPTINHERUEY\ SHESTILLDELIMHTSTOUEAVETHECIRRORSCAMIFSIMHTSGOROGTENTHROTHESILENTNIMHTSAGPNERALUITHBLPCES\ ANDLIMHTSANDCPSIFUENTTOFACELOTORUHENTHECOONUASOVERHEADFACETUOWOPNMLOVERSLATELWUEDIACHALGS\ IFKOGSHADOUSSAIDTHELADWOGSHALOTTAYOUSHOTGROCHERYOUEREAVESHERODEYETUEENTHEYARLEWSHEAVESTHE\ SPNFACEDAJJLINMTHROTHELEAVESANDGLACEDPBONTHEYRAJENMREAVESOGYOLDSIRLANFELOTAREDFROSSKNIMHT\ GOREVERKNEELDTOALADWINHISSHIELDTHATSBARKLEDONTHEWELLOUGIELDYESIDERECOTESHALOTTTHEMECCWYRI\ DLEMLITTERDGREELIKETOSOCEYRANFHOGSTARSUESEEHPNMINTHEMOLDENMALAXWTHEYRIDLEYELLSRANMCERRILW\ ASHERODEDOUNTOFACELOTANDGROCHISYLAJONDYALDRIFSLPNMACIMHTWSILVERYPMLEHPNMANDASHERODEHISARC\ OPRRPNMYESIDERECOTESHALOTTALLINTHEYLPEPNFLOPDEDUEATHERTHIFKQEUELLDSHONETHESADDLELEATHERTH\ EHELCETANDTHEHELCETGEATHERYPRNDLIKEONEYPRNINMGLACETOMETHERASHERODEDOUNTOFACELOTASOGTENTHR\ OTHEBPRBLENIMHTYELOUTHESTARRWFLPSTERSYRIMHTSOCEYEARDEDCETEORTRAILINMLIMHTCOVESOVERSTILLSH\ ALOTTHISYROADFLEARYROUINSPNLIMHTMLOUDONYPRNISHDHOOVESHISUARHORSETRODEGROCPNDERNEATHHISHEL\ CETGLOUDHISFOALYLAFKFPRLSASONHERODEASHERODEDOUNTOFACELOTGROCTHEYANKANDGROCTHERIVERHEGLASH\ DINTOTHEFRWSTALCIRRORTIRRALIRRAYWTHERIVERSANMSIRLANFELOTSHELEGTTHEUEYSHELEGTTHELOOCSHECAD\ ETHREEBAFESTHROTHEROOCSHESAUTHEUATERLILWYLOOCSHESAUTHEHELCETANDTHEBLPCESHELOOKDDOUNTOFACE\ LOTOPTGLEUTHEUEYANDGLOATEDUIDETHECIRRORFRAFKDGROCSIDETOSIDETHEFPRSEISFOCEPBONCEFRIEDTHELA\ DWOGSHALOTTINTHESTORCWEASTUINDSTRAININMTHEBALEWELLOUUOODSUEREUANINMTHEYROADSTREACINHISYAN\ KSFOCBLAININMHEAVILWTHELOUSKWRAININMOVERTOUERDFACELOTDOUNSHEFACEANDGOPNDAYOATYENEATHAUILL\ OULEGTAGLOATANDROPNDAYOPTTHEBROUSHEUROTETHELADWOGSHALOTTANDDOUNTHERIVERSDICEXBANSELIKESOC\ EYOLDSEERINATRANFESEEINMALLHISOUNCISFHANFEUITHAMLASSWFOPNTENANFEDIDSHELOOKTOFACELOTANDATT\ HEFLOSINMOGTHEDAWSHELOOSEDTHEFHAINANDDOUNSHELAWTHEYROADSTREACYOREHERGARAUAWTHELADWOGSHALO\ TTLWINMROYEDINSNOUWUHITETHATLOOSELWGLEUTOLEGTANDRIMHTTHELEAVESPBONHERGALLINMLIMHTTHROTHEN\ OISESOGTHENIMHTSHEGLOATEDDOUNTOFACELOTANDASTHEYOATHEADUOPNDALONMTHEUILLOUWHILLSANDGIELDSA\ CONMTHEWHEARDHERSINMINMHERLASTSONMTHELADWOGSHALOTTHEARDAFAROLCOPRNGPLHOLWFHANTEDLOPDLWFHA\ NTEDLOULWTILLHERYLOODUASGROJENSLOULWANDHEREWESUEREDARKENDUHOLLWTPRNDTOTOUERDFACELOTGORERE\ SHEREAFHDPBONTHETIDETHEGIRSTHOPSEYWTHEUATERSIDESINMINMINHERSONMSHEDIEDTHELADWOGSHALOTTPND\ ERTOUERANDYALFONWYWMARDENUALLANDMALLERWAMLEACINMSHABESHEGLOATEDYWDEADBALEYETUEENTHEHOPSES\ HIMHSILENTINTOFACELOTOPTPBONTHEUHARGSTHEWFACEKNIMHTANDYPRMHERLORDANDDACEANDROPNDTHEBROUTH\ EWREADHERNACETHELADWOGSHALOTTUHOISTHISANDUHATISHEREANDINTHELIMHTEDBALAFENEARDIEDTHESOPNDO\ GROWALFHEERANDTHEWFROSSDTHECSELVESGORGEARALLTHEKNIMHTSATFACELOTYPTLANFELOTCPSEDALITTLESBA\ FEHESAIDSHEHASALOVELWGAFEMODINHISCERFWLENDHERMRAFETHELADWOGSHALOTT > /* > Well, I know the answer, and it is hard for me to be certain that I'm > not just seeing things because I already know what to look for. > But if we really were spies trying to steal our enemy's secrets, we > might have some idea about what words might be occurring in the messages. > For example, I might have been expecting a message about the Lady of Shalott, > and right there at the end of the message I see LADWOGSHALOTT. > */ > swap("W","Y",~kk); > swap("G","F",~kk); > zzz:=Enciphering(kk,xxx); > zzz; ONEITHERSIDETHERIVERLIELONMFIELDSOFWARLEYANDOFRYETHATGLOTHETHEUOLDANDCEETTHESKYANDTHROTHE\ FIELDTHEROADRPNSWYTOCANYTOUERDGACELOTANDPBANDDOUNTHEBEOBLEMOMAJINMUHERETHELILIESWLOUROPND\ ANISLANDTHEREWELOUTHEISLANDOFSHALOTTUILLOUSUHITENASBENSZPIVERLITTLEWREEJESDPSKANDSHIVERTH\ ROTHEUAVETHATRPNSFOREVERWYTHEISLANDINTHERIVERFLOUINMDOUNTOGACELOTFOPRMRAYUALLSANDFOPRMRAY\ TOUERSOVERLOOKASBAGEOFFLOUERSANDTHESILENTISLEICWOUERSTHELADYOFSHALOTTWYTHECARMINUILLOUVEI\ LDSLIDETHEHEAVYWARMESTRAILDWYSLOUHORSESANDPNHAILDTHESHALLOBFLITTETHSILKENSAILDSKICCINMDOU\ NTOGACELOTWPTUHOHATHSEENHERUAVEHERHANDORATTHEGASECENTSEENHERSTANDORISSHEKNOUNINALLTHELAND\ THELADYOFSHALOTTONLYREABERSREABINMEARLYINACONMTHEWEARDEDWARLEYHEARASONMTHATEGHOESGHEERLYF\ ROCTHERIVERUINDINMGLEARLYDOUNTOTOUERDGACELOTANDWYTHECOONTHEREABERUEARYBILINMSHEAVESINPBLA\ NDSAIRYLISTENINMUHISBERSTISTHEFAIRYLADYOFSHALOTTTHERESHEUEAVESWYNIMHTANDDAYACAMIGUEWUITHG\ OLOPRSMAYSHEHASHEARDAUHISBERSAYAGPRSEISONHERIFSHESTAYTOLOOKDOUNTOGACELOTSHEKNOUSNOTUHATTH\ EGPRSECAYWEANDSOSHEUEAVETHSTEADILYANDLITTLEOTHERGAREHATHSHETHELADYOFSHALOTTANDCOVINMTHROA\ CIRRORGLEARTHATHANMSWEFOREHERALLTHEYEARSHADOUSOFTHEUORLDABBEARTHERESHESEESTHEHIMHUAYNEARU\ INDINMDOUNTOGACELOTTHERETHERIVEREDDYUHIRLSANDTHERETHESPRLYVILLAMEGHPRLSANDTHEREDGLOAKSOFC\ ARKETMIRLSBASSONUARDFROCSHALOTTSOCETICESATROOBOFDACSELSMLADANAWWOTONANACWLINMBADSOCETICES\ AGPRLYSHEBHERDLADORLONMHAIRDBAMEINGRICSONGLADMOESWYTOTOUERDGACELOTANDSOCETICESTHROTHECIRR\ ORWLPETHEKNIMHTSGOCERIDINMTUOANDTUOSHEHATHNOLOYALKNIMHTANDTRPETHELADYOFSHALOTTWPTINHERUEW\ SHESTILLDELIMHTSTOUEAVETHECIRRORSCAMIGSIMHTSFOROFTENTHROTHESILENTNIMHTSAFPNERALUITHBLPCES\ ANDLIMHTSANDCPSIGUENTTOGACELOTORUHENTHECOONUASOVERHEADGACETUOYOPNMLOVERSLATELYUEDIACHALFS\ IGKOFSHADOUSSAIDTHELADYOFSHALOTTAWOUSHOTFROCHERWOUEREAVESHERODEWETUEENTHEWARLEYSHEAVESTHE\ SPNGACEDAJJLINMTHROTHELEAVESANDFLACEDPBONTHEWRAJENMREAVESOFWOLDSIRLANGELOTAREDGROSSKNIMHT\ FOREVERKNEELDTOALADYINHISSHIELDTHATSBARKLEDONTHEYELLOUFIELDWESIDERECOTESHALOTTTHEMECCYWRI\ DLEMLITTERDFREELIKETOSOCEWRANGHOFSTARSUESEEHPNMINTHEMOLDENMALAXYTHEWRIDLEWELLSRANMCERRILY\ ASHERODEDOUNTOGACELOTANDFROCHISWLAJONDWALDRIGSLPNMACIMHTYSILVERWPMLEHPNMANDASHERODEHISARC\ OPRRPNMWESIDERECOTESHALOTTALLINTHEWLPEPNGLOPDEDUEATHERTHIGKQEUELLDSHONETHESADDLELEATHERTH\ EHELCETANDTHEHELCETFEATHERWPRNDLIKEONEWPRNINMFLACETOMETHERASHERODEDOUNTOGACELOTASOFTENTHR\ OTHEBPRBLENIMHTWELOUTHESTARRYGLPSTERSWRIMHTSOCEWEARDEDCETEORTRAILINMLIMHTCOVESOVERSTILLSH\ ALOTTHISWROADGLEARWROUINSPNLIMHTMLOUDONWPRNISHDHOOVESHISUARHORSETRODEFROCPNDERNEATHHISHEL\ CETFLOUDHISGOALWLAGKGPRLSASONHERODEASHERODEDOUNTOGACELOTFROCTHEWANKANDFROCTHERIVERHEFLASH\ DINTOTHEGRYSTALCIRRORTIRRALIRRAWYTHERIVERSANMSIRLANGELOTSHELEFTTHEUEWSHELEFTTHELOOCSHECAD\ ETHREEBAGESTHROTHEROOCSHESAUTHEUATERLILYWLOOCSHESAUTHEHELCETANDTHEBLPCESHELOOKDDOUNTOGACE\ LOTOPTFLEUTHEUEWANDFLOATEDUIDETHECIRRORGRAGKDFROCSIDETOSIDETHEGPRSEISGOCEPBONCEGRIEDTHELA\ DYOFSHALOTTINTHESTORCYEASTUINDSTRAININMTHEBALEYELLOUUOODSUEREUANINMTHEWROADSTREACINHISWAN\ KSGOCBLAININMHEAVILYTHELOUSKYRAININMOVERTOUERDGACELOTDOUNSHEGACEANDFOPNDAWOATWENEATHAUILL\ OULEFTAFLOATANDROPNDAWOPTTHEBROUSHEUROTETHELADYOFSHALOTTANDDOUNTHERIVERSDICEXBANSELIKESOC\ EWOLDSEERINATRANGESEEINMALLHISOUNCISGHANGEUITHAMLASSYGOPNTENANGEDIDSHELOOKTOGACELOTANDATT\ HEGLOSINMOFTHEDAYSHELOOSEDTHEGHAINANDDOUNSHELAYTHEWROADSTREACWOREHERFARAUAYTHELADYOFSHALO\ TTLYINMROWEDINSNOUYUHITETHATLOOSELYFLEUTOLEFTANDRIMHTTHELEAVESPBONHERFALLINMLIMHTTHROTHEN\ OISESOFTHENIMHTSHEFLOATEDDOUNTOGACELOTANDASTHEWOATHEADUOPNDALONMTHEUILLOUYHILLSANDFIELDSA\ CONMTHEYHEARDHERSINMINMHERLASTSONMTHELADYOFSHALOTTHEARDAGAROLCOPRNFPLHOLYGHANTEDLOPDLYGHA\ NTEDLOULYTILLHERWLOODUASFROJENSLOULYANDHEREYESUEREDARKENDUHOLLYTPRNDTOTOUERDGACELOTFORERE\ SHEREAGHDPBONTHETIDETHEFIRSTHOPSEWYTHEUATERSIDESINMINMINHERSONMSHEDIEDTHELADYOFSHALOTTPND\ ERTOUERANDWALGONYWYMARDENUALLANDMALLERYAMLEACINMSHABESHEFLOATEDWYDEADBALEWETUEENTHEHOPSES\ HIMHSILENTINTOGACELOTOPTPBONTHEUHARFSTHEYGACEKNIMHTANDWPRMHERLORDANDDACEANDROPNDTHEBROUTH\ EYREADHERNACETHELADYOFSHALOTTUHOISTHISANDUHATISHEREANDINTHELIMHTEDBALAGENEARDIEDTHESOPNDO\ FROYALGHEERANDTHEYGROSSDTHECSELVESFORFEARALLTHEKNIMHTSATGACELOTWPTLANGELOTCPSEDALITTLESBA\ GEHESAIDSHEHASALOVELYFAGEMODINHISCERGYLENDHERMRAGETHELADYOFSHALOTT > Score(zzz,Common); 5354 > /* > Another improvement! > */ > zzz; ONEITHERSIDETHERIVERLIELONMFIELDSOFWARLEYANDOFRYETHATGLOTHETHEUOLDANDCEETTHESKYANDTHROTHE\ FIELDTHEROADRPNSWYTOCANYTOUERDGACELOTANDPBANDDOUNTHEBEOBLEMOMAJINMUHERETHELILIESWLOUROPND\ ANISLANDTHEREWELOUTHEISLANDOFSHALOTTUILLOUSUHITENASBENSZPIVERLITTLEWREEJESDPSKANDSHIVERTH\ ROTHEUAVETHATRPNSFOREVERWYTHEISLANDINTHERIVERFLOUINMDOUNTOGACELOTFOPRMRAYUALLSANDFOPRMRAY\ TOUERSOVERLOOKASBAGEOFFLOUERSANDTHESILENTISLEICWOUERSTHELADYOFSHALOTTWYTHECARMINUILLOUVEI\ LDSLIDETHEHEAVYWARMESTRAILDWYSLOUHORSESANDPNHAILDTHESHALLOBFLITTETHSILKENSAILDSKICCINMDOU\ NTOGACELOTWPTUHOHATHSEENHERUAVEHERHANDORATTHEGASECENTSEENHERSTANDORISSHEKNOUNINALLTHELAND\ THELADYOFSHALOTTONLYREABERSREABINMEARLYINACONMTHEWEARDEDWARLEYHEARASONMTHATEGHOESGHEERLYF\ ROCTHERIVERUINDINMGLEARLYDOUNTOTOUERDGACELOTANDWYTHECOONTHEREABERUEARYBILINMSHEAVESINPBLA\ NDSAIRYLISTENINMUHISBERSTISTHEFAIRYLADYOFSHALOTTTHERESHEUEAVESWYNIMHTANDDAYACAMIGUEWUITHG\ OLOPRSMAYSHEHASHEARDAUHISBERSAYAGPRSEISONHERIFSHESTAYTOLOOKDOUNTOGACELOTSHEKNOUSNOTUHATTH\ EGPRSECAYWEANDSOSHEUEAVETHSTEADILYANDLITTLEOTHERGAREHATHSHETHELADYOFSHALOTTANDCOVINMTHROA\ CIRRORGLEARTHATHANMSWEFOREHERALLTHEYEARSHADOUSOFTHEUORLDABBEARTHERESHESEESTHEHIMHUAYNEARU\ INDINMDOUNTOGACELOTTHERETHERIVEREDDYUHIRLSANDTHERETHESPRLYVILLAMEGHPRLSANDTHEREDGLOAKSOFC\ ARKETMIRLSBASSONUARDFROCSHALOTTSOCETICESATROOBOFDACSELSMLADANAWWOTONANACWLINMBADSOCETICES\ AGPRLYSHEBHERDLADORLONMHAIRDBAMEINGRICSONGLADMOESWYTOTOUERDGACELOTANDSOCETICESTHROTHECIRR\ ORWLPETHEKNIMHTSGOCERIDINMTUOANDTUOSHEHATHNOLOYALKNIMHTANDTRPETHELADYOFSHALOTTWPTINHERUEW\ SHESTILLDELIMHTSTOUEAVETHECIRRORSCAMIGSIMHTSFOROFTENTHROTHESILENTNIMHTSAFPNERALUITHBLPCES\ ANDLIMHTSANDCPSIGUENTTOGACELOTORUHENTHECOONUASOVERHEADGACETUOYOPNMLOVERSLATELYUEDIACHALFS\ IGKOFSHADOUSSAIDTHELADYOFSHALOTTAWOUSHOTFROCHERWOUEREAVESHERODEWETUEENTHEWARLEYSHEAVESTHE\ SPNGACEDAJJLINMTHROTHELEAVESANDFLACEDPBONTHEWRAJENMREAVESOFWOLDSIRLANGELOTAREDGROSSKNIMHT\ FOREVERKNEELDTOALADYINHISSHIELDTHATSBARKLEDONTHEYELLOUFIELDWESIDERECOTESHALOTTTHEMECCYWRI\ DLEMLITTERDFREELIKETOSOCEWRANGHOFSTARSUESEEHPNMINTHEMOLDENMALAXYTHEWRIDLEWELLSRANMCERRILY\ ASHERODEDOUNTOGACELOTANDFROCHISWLAJONDWALDRIGSLPNMACIMHTYSILVERWPMLEHPNMANDASHERODEHISARC\ OPRRPNMWESIDERECOTESHALOTTALLINTHEWLPEPNGLOPDEDUEATHERTHIGKQEUELLDSHONETHESADDLELEATHERTH\ EHELCETANDTHEHELCETFEATHERWPRNDLIKEONEWPRNINMFLACETOMETHERASHERODEDOUNTOGACELOTASOFTENTHR\ OTHEBPRBLENIMHTWELOUTHESTARRYGLPSTERSWRIMHTSOCEWEARDEDCETEORTRAILINMLIMHTCOVESOVERSTILLSH\ ALOTTHISWROADGLEARWROUINSPNLIMHTMLOUDONWPRNISHDHOOVESHISUARHORSETRODEFROCPNDERNEATHHISHEL\ CETFLOUDHISGOALWLAGKGPRLSASONHERODEASHERODEDOUNTOGACELOTFROCTHEWANKANDFROCTHERIVERHEFLASH\ DINTOTHEGRYSTALCIRRORTIRRALIRRAWYTHERIVERSANMSIRLANGELOTSHELEFTTHEUEWSHELEFTTHELOOCSHECAD\ ETHREEBAGESTHROTHEROOCSHESAUTHEUATERLILYWLOOCSHESAUTHEHELCETANDTHEBLPCESHELOOKDDOUNTOGACE\ LOTOPTFLEUTHEUEWANDFLOATEDUIDETHECIRRORGRAGKDFROCSIDETOSIDETHEGPRSEISGOCEPBONCEGRIEDTHELA\ DYOFSHALOTTINTHESTORCYEASTUINDSTRAININMTHEBALEYELLOUUOODSUEREUANINMTHEWROADSTREACINHISWAN\ KSGOCBLAININMHEAVILYTHELOUSKYRAININMOVERTOUERDGACELOTDOUNSHEGACEANDFOPNDAWOATWENEATHAUILL\ OULEFTAFLOATANDROPNDAWOPTTHEBROUSHEUROTETHELADYOFSHALOTTANDDOUNTHERIVERSDICEXBANSELIKESOC\ EWOLDSEERINATRANGESEEINMALLHISOUNCISGHANGEUITHAMLASSYGOPNTENANGEDIDSHELOOKTOGACELOTANDATT\ HEGLOSINMOFTHEDAYSHELOOSEDTHEGHAINANDDOUNSHELAYTHEWROADSTREACWOREHERFARAUAYTHELADYOFSHALO\ TTLYINMROWEDINSNOUYUHITETHATLOOSELYFLEUTOLEFTANDRIMHTTHELEAVESPBONHERFALLINMLIMHTTHROTHEN\ OISESOFTHENIMHTSHEFLOATEDDOUNTOGACELOTANDASTHEWOATHEADUOPNDALONMTHEUILLOUYHILLSANDFIELDSA\ CONMTHEYHEARDHERSINMINMHERLASTSONMTHELADYOFSHALOTTHEARDAGAROLCOPRNFPLHOLYGHANTEDLOPDLYGHA\ NTEDLOULYTILLHERWLOODUASFROJENSLOULYANDHEREYESUEREDARKENDUHOLLYTPRNDTOTOUERDGACELOTFORERE\ SHEREAGHDPBONTHETIDETHEFIRSTHOPSEWYTHEUATERSIDESINMINMINHERSONMSHEDIEDTHELADYOFSHALOTTPND\ ERTOUERANDWALGONYWYMARDENUALLANDMALLERYAMLEACINMSHABESHEFLOATEDWYDEADBALEWETUEENTHEHOPSES\ HIMHSILENTINTOGACELOTOPTPBONTHEUHARFSTHEYGACEKNIMHTANDWPRMHERLORDANDDACEANDROPNDTHEBROUTH\ EYREADHERNACETHELADYOFSHALOTTUHOISTHISANDUHATISHEREANDINTHELIMHTEDBALAGENEARDIEDTHESOPNDO\ FROYALGHEERANDTHEYGROSSDTHECSELVESFORFEARALLTHEKNIMHTSATGACELOTWPTLANGELOTCPSEDALITTLESBA\ GEHESAIDSHEHASALOVELYFAGEMODINHISCERGYLENDHERMRAGETHELADYOFSHALOTT > /* > At the start we have > ONEITHERSIDETHERIVERLIELONMFIELDSOFWARLEYANDOFRYETHATGLOTHETHEUOLDANDCEETTHESKY > and I think this should be > ONEITHERSIDETHERIVERLIELONGFIELDSOFBARLEYANDOFRYETHATCLOTHETHEWOLDANDMEETTHESKY > */ > swap("G","M",~kk); > swap("W","B",~kk); > /* > This will have changed GLOTHE into MLOTHE; so I had better swap M and C. > */ > swap("C","M",~kk); > zzz:=Enciphering(kk,xxx); > zzz; ONEITHERSIDETHERIVERLIELONGFIELDSOFBARLEYANDOFRYETHATCLOTHETHEUOLDANDMEETTHESKYANDTHROTHE\ FIELDTHEROADRPNSBYTOMANYTOUERDCAMELOTANDPWANDDOUNTHEWEOWLEGOGAJINGUHERETHELILIESBLOUROPND\ ANISLANDTHEREBELOUTHEISLANDOFSHALOTTUILLOUSUHITENASWENSZPIVERLITTLEBREEJESDPSKANDSHIVERTH\ ROTHEUAVETHATRPNSFOREVERBYTHEISLANDINTHERIVERFLOUINGDOUNTOCAMELOTFOPRGRAYUALLSANDFOPRGRAY\ TOUERSOVERLOOKASWACEOFFLOUERSANDTHESILENTISLEIMBOUERSTHELADYOFSHALOTTBYTHEMARGINUILLOUVEI\ LDSLIDETHEHEAVYBARGESTRAILDBYSLOUHORSESANDPNHAILDTHESHALLOWFLITTETHSILKENSAILDSKIMMINGDOU\ NTOCAMELOTBPTUHOHATHSEENHERUAVEHERHANDORATTHECASEMENTSEENHERSTANDORISSHEKNOUNINALLTHELAND\ THELADYOFSHALOTTONLYREAWERSREAWINGEARLYINAMONGTHEBEARDEDBARLEYHEARASONGTHATECHOESCHEERLYF\ ROMTHERIVERUINDINGCLEARLYDOUNTOTOUERDCAMELOTANDBYTHEMOONTHEREAWERUEARYWILINGSHEAVESINPWLA\ NDSAIRYLISTENINGUHISWERSTISTHEFAIRYLADYOFSHALOTTTHERESHEUEAVESBYNIGHTANDDAYAMAGICUEBUITHC\ OLOPRSGAYSHEHASHEARDAUHISWERSAYACPRSEISONHERIFSHESTAYTOLOOKDOUNTOCAMELOTSHEKNOUSNOTUHATTH\ ECPRSEMAYBEANDSOSHEUEAVETHSTEADILYANDLITTLEOTHERCAREHATHSHETHELADYOFSHALOTTANDMOVINGTHROA\ MIRRORCLEARTHATHANGSBEFOREHERALLTHEYEARSHADOUSOFTHEUORLDAWWEARTHERESHESEESTHEHIGHUAYNEARU\ INDINGDOUNTOCAMELOTTHERETHERIVEREDDYUHIRLSANDTHERETHESPRLYVILLAGECHPRLSANDTHEREDCLOAKSOFM\ ARKETGIRLSWASSONUARDFROMSHALOTTSOMETIMESATROOWOFDAMSELSGLADANABBOTONANAMBLINGWADSOMETIMES\ ACPRLYSHEWHERDLADORLONGHAIRDWAGEINCRIMSONCLADGOESBYTOTOUERDCAMELOTANDSOMETIMESTHROTHEMIRR\ ORBLPETHEKNIGHTSCOMERIDINGTUOANDTUOSHEHATHNOLOYALKNIGHTANDTRPETHELADYOFSHALOTTBPTINHERUEB\ SHESTILLDELIGHTSTOUEAVETHEMIRRORSMAGICSIGHTSFOROFTENTHROTHESILENTNIGHTSAFPNERALUITHWLPMES\ ANDLIGHTSANDMPSICUENTTOCAMELOTORUHENTHEMOONUASOVERHEADCAMETUOYOPNGLOVERSLATELYUEDIAMHALFS\ ICKOFSHADOUSSAIDTHELADYOFSHALOTTABOUSHOTFROMHERBOUEREAVESHERODEBETUEENTHEBARLEYSHEAVESTHE\ SPNCAMEDAJJLINGTHROTHELEAVESANDFLAMEDPWONTHEBRAJENGREAVESOFBOLDSIRLANCELOTAREDCROSSKNIGHT\ FOREVERKNEELDTOALADYINHISSHIELDTHATSWARKLEDONTHEYELLOUFIELDBESIDEREMOTESHALOTTTHEGEMMYBRI\ DLEGLITTERDFREELIKETOSOMEBRANCHOFSTARSUESEEHPNGINTHEGOLDENGALAXYTHEBRIDLEBELLSRANGMERRILY\ ASHERODEDOUNTOCAMELOTANDFROMHISBLAJONDBALDRICSLPNGAMIGHTYSILVERBPGLEHPNGANDASHERODEHISARM\ OPRRPNGBESIDEREMOTESHALOTTALLINTHEBLPEPNCLOPDEDUEATHERTHICKQEUELLDSHONETHESADDLELEATHERTH\ EHELMETANDTHEHELMETFEATHERBPRNDLIKEONEBPRNINGFLAMETOGETHERASHERODEDOUNTOCAMELOTASOFTENTHR\ OTHEWPRWLENIGHTBELOUTHESTARRYCLPSTERSBRIGHTSOMEBEARDEDMETEORTRAILINGLIGHTMOVESOVERSTILLSH\ ALOTTHISBROADCLEARBROUINSPNLIGHTGLOUDONBPRNISHDHOOVESHISUARHORSETRODEFROMPNDERNEATHHISHEL\ METFLOUDHISCOALBLACKCPRLSASONHERODEASHERODEDOUNTOCAMELOTFROMTHEBANKANDFROMTHERIVERHEFLASH\ DINTOTHECRYSTALMIRRORTIRRALIRRABYTHERIVERSANGSIRLANCELOTSHELEFTTHEUEBSHELEFTTHELOOMSHEMAD\ ETHREEWACESTHROTHEROOMSHESAUTHEUATERLILYBLOOMSHESAUTHEHELMETANDTHEWLPMESHELOOKDDOUNTOCAME\ LOTOPTFLEUTHEUEBANDFLOATEDUIDETHEMIRRORCRACKDFROMSIDETOSIDETHECPRSEISCOMEPWONMECRIEDTHELA\ DYOFSHALOTTINTHESTORMYEASTUINDSTRAININGTHEWALEYELLOUUOODSUEREUANINGTHEBROADSTREAMINHISBAN\ KSCOMWLAININGHEAVILYTHELOUSKYRAININGOVERTOUERDCAMELOTDOUNSHECAMEANDFOPNDABOATBENEATHAUILL\ OULEFTAFLOATANDROPNDABOPTTHEWROUSHEUROTETHELADYOFSHALOTTANDDOUNTHERIVERSDIMEXWANSELIKESOM\ EBOLDSEERINATRANCESEEINGALLHISOUNMISCHANCEUITHAGLASSYCOPNTENANCEDIDSHELOOKTOCAMELOTANDATT\ HECLOSINGOFTHEDAYSHELOOSEDTHECHAINANDDOUNSHELAYTHEBROADSTREAMBOREHERFARAUAYTHELADYOFSHALO\ TTLYINGROBEDINSNOUYUHITETHATLOOSELYFLEUTOLEFTANDRIGHTTHELEAVESPWONHERFALLINGLIGHTTHROTHEN\ OISESOFTHENIGHTSHEFLOATEDDOUNTOCAMELOTANDASTHEBOATHEADUOPNDALONGTHEUILLOUYHILLSANDFIELDSA\ MONGTHEYHEARDHERSINGINGHERLASTSONGTHELADYOFSHALOTTHEARDACAROLMOPRNFPLHOLYCHANTEDLOPDLYCHA\ NTEDLOULYTILLHERBLOODUASFROJENSLOULYANDHEREYESUEREDARKENDUHOLLYTPRNDTOTOUERDCAMELOTFORERE\ SHEREACHDPWONTHETIDETHEFIRSTHOPSEBYTHEUATERSIDESINGINGINHERSONGSHEDIEDTHELADYOFSHALOTTPND\ ERTOUERANDBALCONYBYGARDENUALLANDGALLERYAGLEAMINGSHAWESHEFLOATEDBYDEADWALEBETUEENTHEHOPSES\ HIGHSILENTINTOCAMELOTOPTPWONTHEUHARFSTHEYCAMEKNIGHTANDBPRGHERLORDANDDAMEANDROPNDTHEWROUTH\ EYREADHERNAMETHELADYOFSHALOTTUHOISTHISANDUHATISHEREANDINTHELIGHTEDWALACENEARDIEDTHESOPNDO\ FROYALCHEERANDTHEYCROSSDTHEMSELVESFORFEARALLTHEKNIGHTSATCAMELOTBPTLANCELOTMPSEDALITTLESWA\ CEHESAIDSHEHASALOVELYFACEGODINHISMERCYLENDHERGRACETHELADYOFSHALOTT > swap("U","W",~kk); > zzz:=Enciphering(kk,xxx); > zzz; ONEITHERSIDETHERIVERLIELONGFIELDSOFBARLEYANDOFRYETHATCLOTHETHEWOLDANDMEETTHESKYANDTHROTHE\ FIELDTHEROADRPNSBYTOMANYTOWERDCAMELOTANDPUANDDOWNTHEUEOULEGOGAJINGWHERETHELILIESBLOWROPND\ ANISLANDTHEREBELOWTHEISLANDOFSHALOTTWILLOWSWHITENASUENSZPIVERLITTLEBREEJESDPSKANDSHIVERTH\ ROTHEWAVETHATRPNSFOREVERBYTHEISLANDINTHERIVERFLOWINGDOWNTOCAMELOTFOPRGRAYWALLSANDFOPRGRAY\ TOWERSOVERLOOKASUACEOFFLOWERSANDTHESILENTISLEIMBOWERSTHELADYOFSHALOTTBYTHEMARGINWILLOWVEI\ LDSLIDETHEHEAVYBARGESTRAILDBYSLOWHORSESANDPNHAILDTHESHALLOUFLITTETHSILKENSAILDSKIMMINGDOW\ NTOCAMELOTBPTWHOHATHSEENHERWAVEHERHANDORATTHECASEMENTSEENHERSTANDORISSHEKNOWNINALLTHELAND\ THELADYOFSHALOTTONLYREAUERSREAUINGEARLYINAMONGTHEBEARDEDBARLEYHEARASONGTHATECHOESCHEERLYF\ ROMTHERIVERWINDINGCLEARLYDOWNTOTOWERDCAMELOTANDBYTHEMOONTHEREAUERWEARYUILINGSHEAVESINPULA\ NDSAIRYLISTENINGWHISUERSTISTHEFAIRYLADYOFSHALOTTTHERESHEWEAVESBYNIGHTANDDAYAMAGICWEBWITHC\ OLOPRSGAYSHEHASHEARDAWHISUERSAYACPRSEISONHERIFSHESTAYTOLOOKDOWNTOCAMELOTSHEKNOWSNOTWHATTH\ ECPRSEMAYBEANDSOSHEWEAVETHSTEADILYANDLITTLEOTHERCAREHATHSHETHELADYOFSHALOTTANDMOVINGTHROA\ MIRRORCLEARTHATHANGSBEFOREHERALLTHEYEARSHADOWSOFTHEWORLDAUUEARTHERESHESEESTHEHIGHWAYNEARW\ INDINGDOWNTOCAMELOTTHERETHERIVEREDDYWHIRLSANDTHERETHESPRLYVILLAGECHPRLSANDTHEREDCLOAKSOFM\ ARKETGIRLSUASSONWARDFROMSHALOTTSOMETIMESATROOUOFDAMSELSGLADANABBOTONANAMBLINGUADSOMETIMES\ ACPRLYSHEUHERDLADORLONGHAIRDUAGEINCRIMSONCLADGOESBYTOTOWERDCAMELOTANDSOMETIMESTHROTHEMIRR\ ORBLPETHEKNIGHTSCOMERIDINGTWOANDTWOSHEHATHNOLOYALKNIGHTANDTRPETHELADYOFSHALOTTBPTINHERWEB\ SHESTILLDELIGHTSTOWEAVETHEMIRRORSMAGICSIGHTSFOROFTENTHROTHESILENTNIGHTSAFPNERALWITHULPMES\ ANDLIGHTSANDMPSICWENTTOCAMELOTORWHENTHEMOONWASOVERHEADCAMETWOYOPNGLOVERSLATELYWEDIAMHALFS\ ICKOFSHADOWSSAIDTHELADYOFSHALOTTABOWSHOTFROMHERBOWEREAVESHERODEBETWEENTHEBARLEYSHEAVESTHE\ SPNCAMEDAJJLINGTHROTHELEAVESANDFLAMEDPUONTHEBRAJENGREAVESOFBOLDSIRLANCELOTAREDCROSSKNIGHT\ FOREVERKNEELDTOALADYINHISSHIELDTHATSUARKLEDONTHEYELLOWFIELDBESIDEREMOTESHALOTTTHEGEMMYBRI\ DLEGLITTERDFREELIKETOSOMEBRANCHOFSTARSWESEEHPNGINTHEGOLDENGALAXYTHEBRIDLEBELLSRANGMERRILY\ ASHERODEDOWNTOCAMELOTANDFROMHISBLAJONDBALDRICSLPNGAMIGHTYSILVERBPGLEHPNGANDASHERODEHISARM\ OPRRPNGBESIDEREMOTESHALOTTALLINTHEBLPEPNCLOPDEDWEATHERTHICKQEWELLDSHONETHESADDLELEATHERTH\ EHELMETANDTHEHELMETFEATHERBPRNDLIKEONEBPRNINGFLAMETOGETHERASHERODEDOWNTOCAMELOTASOFTENTHR\ OTHEUPRULENIGHTBELOWTHESTARRYCLPSTERSBRIGHTSOMEBEARDEDMETEORTRAILINGLIGHTMOVESOVERSTILLSH\ ALOTTHISBROADCLEARBROWINSPNLIGHTGLOWDONBPRNISHDHOOVESHISWARHORSETRODEFROMPNDERNEATHHISHEL\ METFLOWDHISCOALBLACKCPRLSASONHERODEASHERODEDOWNTOCAMELOTFROMTHEBANKANDFROMTHERIVERHEFLASH\ DINTOTHECRYSTALMIRRORTIRRALIRRABYTHERIVERSANGSIRLANCELOTSHELEFTTHEWEBSHELEFTTHELOOMSHEMAD\ ETHREEUACESTHROTHEROOMSHESAWTHEWATERLILYBLOOMSHESAWTHEHELMETANDTHEULPMESHELOOKDDOWNTOCAME\ LOTOPTFLEWTHEWEBANDFLOATEDWIDETHEMIRRORCRACKDFROMSIDETOSIDETHECPRSEISCOMEPUONMECRIEDTHELA\ DYOFSHALOTTINTHESTORMYEASTWINDSTRAININGTHEUALEYELLOWWOODSWEREWANINGTHEBROADSTREAMINHISBAN\ KSCOMULAININGHEAVILYTHELOWSKYRAININGOVERTOWERDCAMELOTDOWNSHECAMEANDFOPNDABOATBENEATHAWILL\ OWLEFTAFLOATANDROPNDABOPTTHEUROWSHEWROTETHELADYOFSHALOTTANDDOWNTHERIVERSDIMEXUANSELIKESOM\ EBOLDSEERINATRANCESEEINGALLHISOWNMISCHANCEWITHAGLASSYCOPNTENANCEDIDSHELOOKTOCAMELOTANDATT\ HECLOSINGOFTHEDAYSHELOOSEDTHECHAINANDDOWNSHELAYTHEBROADSTREAMBOREHERFARAWAYTHELADYOFSHALO\ TTLYINGROBEDINSNOWYWHITETHATLOOSELYFLEWTOLEFTANDRIGHTTHELEAVESPUONHERFALLINGLIGHTTHROTHEN\ OISESOFTHENIGHTSHEFLOATEDDOWNTOCAMELOTANDASTHEBOATHEADWOPNDALONGTHEWILLOWYHILLSANDFIELDSA\ MONGTHEYHEARDHERSINGINGHERLASTSONGTHELADYOFSHALOTTHEARDACAROLMOPRNFPLHOLYCHANTEDLOPDLYCHA\ NTEDLOWLYTILLHERBLOODWASFROJENSLOWLYANDHEREYESWEREDARKENDWHOLLYTPRNDTOTOWERDCAMELOTFORERE\ SHEREACHDPUONTHETIDETHEFIRSTHOPSEBYTHEWATERSIDESINGINGINHERSONGSHEDIEDTHELADYOFSHALOTTPND\ ERTOWERANDBALCONYBYGARDENWALLANDGALLERYAGLEAMINGSHAUESHEFLOATEDBYDEADUALEBETWEENTHEHOPSES\ HIGHSILENTINTOCAMELOTOPTPUONTHEWHARFSTHEYCAMEKNIGHTANDBPRGHERLORDANDDAMEANDROPNDTHEUROWTH\ EYREADHERNAMETHELADYOFSHALOTTWHOISTHISANDWHATISHEREANDINTHELIGHTEDUALACENEARDIEDTHESOPNDO\ FROYALCHEERANDTHEYCROSSDTHEMSELVESFORFEARALLTHEKNIGHTSATCAMELOTBPTLANCELOTMPSEDALITTLESUA\ CEHESAIDSHEHASALOVELYFACEGODINHISMERCYLENDHERGRACETHELADYOFSHALOTT > /* > Now I can read it up to place where it says ROADRPNSBY > */ > swap("U","P",~kk); > zzz:=Enciphering(kk,xxx); > Score(zzz,Common); 8666 > /* > Wow! > */ > zzz; ONEITHERSIDETHERIVERLIELONGFIELDSOFBARLEYANDOFRYETHATCLOTHETHEWOLDANDMEETTHESKYANDTHROTHE\ FIELDTHEROADRUNSBYTOMANYTOWERDCAMELOTANDUPANDDOWNTHEPEOPLEGOGAJINGWHERETHELILIESBLOWROUND\ ANISLANDTHEREBELOWTHEISLANDOFSHALOTTWILLOWSWHITENASPENSZUIVERLITTLEBREEJESDUSKANDSHIVERTH\ ROTHEWAVETHATRUNSFOREVERBYTHEISLANDINTHERIVERFLOWINGDOWNTOCAMELOTFOURGRAYWALLSANDFOURGRAY\ TOWERSOVERLOOKASPACEOFFLOWERSANDTHESILENTISLEIMBOWERSTHELADYOFSHALOTTBYTHEMARGINWILLOWVEI\ LDSLIDETHEHEAVYBARGESTRAILDBYSLOWHORSESANDUNHAILDTHESHALLOPFLITTETHSILKENSAILDSKIMMINGDOW\ NTOCAMELOTBUTWHOHATHSEENHERWAVEHERHANDORATTHECASEMENTSEENHERSTANDORISSHEKNOWNINALLTHELAND\ THELADYOFSHALOTTONLYREAPERSREAPINGEARLYINAMONGTHEBEARDEDBARLEYHEARASONGTHATECHOESCHEERLYF\ ROMTHERIVERWINDINGCLEARLYDOWNTOTOWERDCAMELOTANDBYTHEMOONTHEREAPERWEARYPILINGSHEAVESINUPLA\ NDSAIRYLISTENINGWHISPERSTISTHEFAIRYLADYOFSHALOTTTHERESHEWEAVESBYNIGHTANDDAYAMAGICWEBWITHC\ OLOURSGAYSHEHASHEARDAWHISPERSAYACURSEISONHERIFSHESTAYTOLOOKDOWNTOCAMELOTSHEKNOWSNOTWHATTH\ ECURSEMAYBEANDSOSHEWEAVETHSTEADILYANDLITTLEOTHERCAREHATHSHETHELADYOFSHALOTTANDMOVINGTHROA\ MIRRORCLEARTHATHANGSBEFOREHERALLTHEYEARSHADOWSOFTHEWORLDAPPEARTHERESHESEESTHEHIGHWAYNEARW\ INDINGDOWNTOCAMELOTTHERETHERIVEREDDYWHIRLSANDTHERETHESURLYVILLAGECHURLSANDTHEREDCLOAKSOFM\ ARKETGIRLSPASSONWARDFROMSHALOTTSOMETIMESATROOPOFDAMSELSGLADANABBOTONANAMBLINGPADSOMETIMES\ ACURLYSHEPHERDLADORLONGHAIRDPAGEINCRIMSONCLADGOESBYTOTOWERDCAMELOTANDSOMETIMESTHROTHEMIRR\ ORBLUETHEKNIGHTSCOMERIDINGTWOANDTWOSHEHATHNOLOYALKNIGHTANDTRUETHELADYOFSHALOTTBUTINHERWEB\ SHESTILLDELIGHTSTOWEAVETHEMIRRORSMAGICSIGHTSFOROFTENTHROTHESILENTNIGHTSAFUNERALWITHPLUMES\ ANDLIGHTSANDMUSICWENTTOCAMELOTORWHENTHEMOONWASOVERHEADCAMETWOYOUNGLOVERSLATELYWEDIAMHALFS\ ICKOFSHADOWSSAIDTHELADYOFSHALOTTABOWSHOTFROMHERBOWEREAVESHERODEBETWEENTHEBARLEYSHEAVESTHE\ SUNCAMEDAJJLINGTHROTHELEAVESANDFLAMEDUPONTHEBRAJENGREAVESOFBOLDSIRLANCELOTAREDCROSSKNIGHT\ FOREVERKNEELDTOALADYINHISSHIELDTHATSPARKLEDONTHEYELLOWFIELDBESIDEREMOTESHALOTTTHEGEMMYBRI\ DLEGLITTERDFREELIKETOSOMEBRANCHOFSTARSWESEEHUNGINTHEGOLDENGALAXYTHEBRIDLEBELLSRANGMERRILY\ ASHERODEDOWNTOCAMELOTANDFROMHISBLAJONDBALDRICSLUNGAMIGHTYSILVERBUGLEHUNGANDASHERODEHISARM\ OURRUNGBESIDEREMOTESHALOTTALLINTHEBLUEUNCLOUDEDWEATHERTHICKQEWELLDSHONETHESADDLELEATHERTH\ EHELMETANDTHEHELMETFEATHERBURNDLIKEONEBURNINGFLAMETOGETHERASHERODEDOWNTOCAMELOTASOFTENTHR\ OTHEPURPLENIGHTBELOWTHESTARRYCLUSTERSBRIGHTSOMEBEARDEDMETEORTRAILINGLIGHTMOVESOVERSTILLSH\ ALOTTHISBROADCLEARBROWINSUNLIGHTGLOWDONBURNISHDHOOVESHISWARHORSETRODEFROMUNDERNEATHHISHEL\ METFLOWDHISCOALBLACKCURLSASONHERODEASHERODEDOWNTOCAMELOTFROMTHEBANKANDFROMTHERIVERHEFLASH\ DINTOTHECRYSTALMIRRORTIRRALIRRABYTHERIVERSANGSIRLANCELOTSHELEFTTHEWEBSHELEFTTHELOOMSHEMAD\ ETHREEPACESTHROTHEROOMSHESAWTHEWATERLILYBLOOMSHESAWTHEHELMETANDTHEPLUMESHELOOKDDOWNTOCAME\ LOTOUTFLEWTHEWEBANDFLOATEDWIDETHEMIRRORCRACKDFROMSIDETOSIDETHECURSEISCOMEUPONMECRIEDTHELA\ DYOFSHALOTTINTHESTORMYEASTWINDSTRAININGTHEPALEYELLOWWOODSWEREWANINGTHEBROADSTREAMINHISBAN\ KSCOMPLAININGHEAVILYTHELOWSKYRAININGOVERTOWERDCAMELOTDOWNSHECAMEANDFOUNDABOATBENEATHAWILL\ OWLEFTAFLOATANDROUNDABOUTTHEPROWSHEWROTETHELADYOFSHALOTTANDDOWNTHERIVERSDIMEXPANSELIKESOM\ EBOLDSEERINATRANCESEEINGALLHISOWNMISCHANCEWITHAGLASSYCOUNTENANCEDIDSHELOOKTOCAMELOTANDATT\ HECLOSINGOFTHEDAYSHELOOSEDTHECHAINANDDOWNSHELAYTHEBROADSTREAMBOREHERFARAWAYTHELADYOFSHALO\ TTLYINGROBEDINSNOWYWHITETHATLOOSELYFLEWTOLEFTANDRIGHTTHELEAVESUPONHERFALLINGLIGHTTHROTHEN\ OISESOFTHENIGHTSHEFLOATEDDOWNTOCAMELOTANDASTHEBOATHEADWOUNDALONGTHEWILLOWYHILLSANDFIELDSA\ MONGTHEYHEARDHERSINGINGHERLASTSONGTHELADYOFSHALOTTHEARDACAROLMOURNFULHOLYCHANTEDLOUDLYCHA\ NTEDLOWLYTILLHERBLOODWASFROJENSLOWLYANDHEREYESWEREDARKENDWHOLLYTURNDTOTOWERDCAMELOTFORERE\ SHEREACHDUPONTHETIDETHEFIRSTHOUSEBYTHEWATERSIDESINGINGINHERSONGSHEDIEDTHELADYOFSHALOTTUND\ ERTOWERANDBALCONYBYGARDENWALLANDGALLERYAGLEAMINGSHAPESHEFLOATEDBYDEADPALEBETWEENTHEHOUSES\ HIGHSILENTINTOCAMELOTOUTUPONTHEWHARFSTHEYCAMEKNIGHTANDBURGHERLORDANDDAMEANDROUNDTHEPROWTH\ EYREADHERNAMETHELADYOFSHALOTTWHOISTHISANDWHATISHEREANDINTHELIGHTEDPALACENEARDIEDTHESOUNDO\ FROYALCHEERANDTHEYCROSSDTHEMSELVESFORFEARALLTHEKNIGHTSATCAMELOTBUTLANCELOTMUSEDALITTLESPA\ CEHESAIDSHEHASALOVELYFACEGODINHISMERCYLENDHERGRACETHELADYOFSHALOTT > /* > GAJINGWHERETHELILIESBLOW should be GAZING WHERE THE LILIES BLOW > */ > swap("J","Z",~kk); > zzz:=Enciphering(kk,xxx); > Score(zzz,Common); 8666 > /* > Same as before. Too bad! GAZING is a word, GAJING isn't. > Probably it's all right now, unless there is some obscure Q in there > somewhere that is still wrong. > */ > zzz; ONEITHERSIDETHERIVERLIELONGFIELDSOFBARLEYANDOFRYETHATCLOTHETHEWOLDANDMEETTHESKYANDTHROTHE\ FIELDTHEROADRUNSBYTOMANYTOWERDCAMELOTANDUPANDDOWNTHEPEOPLEGOGAZINGWHERETHELILIESBLOWROUND\ ANISLANDTHEREBELOWTHEISLANDOFSHALOTTWILLOWSWHITENASPENSJUIVERLITTLEBREEZESDUSKANDSHIVERTH\ ROTHEWAVETHATRUNSFOREVERBYTHEISLANDINTHERIVERFLOWINGDOWNTOCAMELOTFOURGRAYWALLSANDFOURGRAY\ TOWERSOVERLOOKASPACEOFFLOWERSANDTHESILENTISLEIMBOWERSTHELADYOFSHALOTTBYTHEMARGINWILLOWVEI\ LDSLIDETHEHEAVYBARGESTRAILDBYSLOWHORSESANDUNHAILDTHESHALLOPFLITTETHSILKENSAILDSKIMMINGDOW\ NTOCAMELOTBUTWHOHATHSEENHERWAVEHERHANDORATTHECASEMENTSEENHERSTANDORISSHEKNOWNINALLTHELAND\ THELADYOFSHALOTTONLYREAPERSREAPINGEARLYINAMONGTHEBEARDEDBARLEYHEARASONGTHATECHOESCHEERLYF\ ROMTHERIVERWINDINGCLEARLYDOWNTOTOWERDCAMELOTANDBYTHEMOONTHEREAPERWEARYPILINGSHEAVESINUPLA\ NDSAIRYLISTENINGWHISPERSTISTHEFAIRYLADYOFSHALOTTTHERESHEWEAVESBYNIGHTANDDAYAMAGICWEBWITHC\ OLOURSGAYSHEHASHEARDAWHISPERSAYACURSEISONHERIFSHESTAYTOLOOKDOWNTOCAMELOTSHEKNOWSNOTWHATTH\ ECURSEMAYBEANDSOSHEWEAVETHSTEADILYANDLITTLEOTHERCAREHATHSHETHELADYOFSHALOTTANDMOVINGTHROA\ MIRRORCLEARTHATHANGSBEFOREHERALLTHEYEARSHADOWSOFTHEWORLDAPPEARTHERESHESEESTHEHIGHWAYNEARW\ INDINGDOWNTOCAMELOTTHERETHERIVEREDDYWHIRLSANDTHERETHESURLYVILLAGECHURLSANDTHEREDCLOAKSOFM\ ARKETGIRLSPASSONWARDFROMSHALOTTSOMETIMESATROOPOFDAMSELSGLADANABBOTONANAMBLINGPADSOMETIMES\ ACURLYSHEPHERDLADORLONGHAIRDPAGEINCRIMSONCLADGOESBYTOTOWERDCAMELOTANDSOMETIMESTHROTHEMIRR\ ORBLUETHEKNIGHTSCOMERIDINGTWOANDTWOSHEHATHNOLOYALKNIGHTANDTRUETHELADYOFSHALOTTBUTINHERWEB\ SHESTILLDELIGHTSTOWEAVETHEMIRRORSMAGICSIGHTSFOROFTENTHROTHESILENTNIGHTSAFUNERALWITHPLUMES\ ANDLIGHTSANDMUSICWENTTOCAMELOTORWHENTHEMOONWASOVERHEADCAMETWOYOUNGLOVERSLATELYWEDIAMHALFS\ ICKOFSHADOWSSAIDTHELADYOFSHALOTTABOWSHOTFROMHERBOWEREAVESHERODEBETWEENTHEBARLEYSHEAVESTHE\ SUNCAMEDAZZLINGTHROTHELEAVESANDFLAMEDUPONTHEBRAZENGREAVESOFBOLDSIRLANCELOTAREDCROSSKNIGHT\ FOREVERKNEELDTOALADYINHISSHIELDTHATSPARKLEDONTHEYELLOWFIELDBESIDEREMOTESHALOTTTHEGEMMYBRI\ DLEGLITTERDFREELIKETOSOMEBRANCHOFSTARSWESEEHUNGINTHEGOLDENGALAXYTHEBRIDLEBELLSRANGMERRILY\ ASHERODEDOWNTOCAMELOTANDFROMHISBLAZONDBALDRICSLUNGAMIGHTYSILVERBUGLEHUNGANDASHERODEHISARM\ OURRUNGBESIDEREMOTESHALOTTALLINTHEBLUEUNCLOUDEDWEATHERTHICKQEWELLDSHONETHESADDLELEATHERTH\ EHELMETANDTHEHELMETFEATHERBURNDLIKEONEBURNINGFLAMETOGETHERASHERODEDOWNTOCAMELOTASOFTENTHR\ OTHEPURPLENIGHTBELOWTHESTARRYCLUSTERSBRIGHTSOMEBEARDEDMETEORTRAILINGLIGHTMOVESOVERSTILLSH\ ALOTTHISBROADCLEARBROWINSUNLIGHTGLOWDONBURNISHDHOOVESHISWARHORSETRODEFROMUNDERNEATHHISHEL\ METFLOWDHISCOALBLACKCURLSASONHERODEASHERODEDOWNTOCAMELOTFROMTHEBANKANDFROMTHERIVERHEFLASH\ DINTOTHECRYSTALMIRRORTIRRALIRRABYTHERIVERSANGSIRLANCELOTSHELEFTTHEWEBSHELEFTTHELOOMSHEMAD\ ETHREEPACESTHROTHEROOMSHESAWTHEWATERLILYBLOOMSHESAWTHEHELMETANDTHEPLUMESHELOOKDDOWNTOCAME\ LOTOUTFLEWTHEWEBANDFLOATEDWIDETHEMIRRORCRACKDFROMSIDETOSIDETHECURSEISCOMEUPONMECRIEDTHELA\ DYOFSHALOTTINTHESTORMYEASTWINDSTRAININGTHEPALEYELLOWWOODSWEREWANINGTHEBROADSTREAMINHISBAN\ KSCOMPLAININGHEAVILYTHELOWSKYRAININGOVERTOWERDCAMELOTDOWNSHECAMEANDFOUNDABOATBENEATHAWILL\ OWLEFTAFLOATANDROUNDABOUTTHEPROWSHEWROTETHELADYOFSHALOTTANDDOWNTHERIVERSDIMEXPANSELIKESOM\ EBOLDSEERINATRANCESEEINGALLHISOWNMISCHANCEWITHAGLASSYCOUNTENANCEDIDSHELOOKTOCAMELOTANDATT\ HECLOSINGOFTHEDAYSHELOOSEDTHECHAINANDDOWNSHELAYTHEBROADSTREAMBOREHERFARAWAYTHELADYOFSHALO\ TTLYINGROBEDINSNOWYWHITETHATLOOSELYFLEWTOLEFTANDRIGHTTHELEAVESUPONHERFALLINGLIGHTTHROTHEN\ OISESOFTHENIGHTSHEFLOATEDDOWNTOCAMELOTANDASTHEBOATHEADWOUNDALONGTHEWILLOWYHILLSANDFIELDSA\ MONGTHEYHEARDHERSINGINGHERLASTSONGTHELADYOFSHALOTTHEARDACAROLMOURNFULHOLYCHANTEDLOUDLYCHA\ NTEDLOWLYTILLHERBLOODWASFROZENSLOWLYANDHEREYESWEREDARKENDWHOLLYTURNDTOTOWERDCAMELOTFORERE\ SHEREACHDUPONTHETIDETHEFIRSTHOUSEBYTHEWATERSIDESINGINGINHERSONGSHEDIEDTHELADYOFSHALOTTUND\ ERTOWERANDBALCONYBYGARDENWALLANDGALLERYAGLEAMINGSHAPESHEFLOATEDBYDEADPALEBETWEENTHEHOUSES\ HIGHSILENTINTOCAMELOTOUTUPONTHEWHARFSTHEYCAMEKNIGHTANDBURGHERLORDANDDAMEANDROUNDTHEPROWTH\ EYREADHERNAMETHELADYOFSHALOTTWHOISTHISANDWHATISHEREANDINTHELIGHTEDPALACENEARDIEDTHESOUNDO\ FROYALCHEERANDTHEYCROSSDTHEMSELVESFORFEARALLTHEKNIGHTSATCAMELOTBUTLANCELOTMUSEDALITTLESPA\ CEHESAIDSHEHASALOVELYFACEGODINHISMERCYLENDHERGRACETHELADYOFSHALOTT > /* > Yes, I've got JUIVER instead of QUIVER. J and Q are round the wrong way. > */ > swap("J","Q",~kk); > zzz:=Enciphering(kk,xxx); > Score(zzz,Common); 8666 > /* > The score still hasn't changed. No doubt QUIVER and GAZING do not appear > in our list of common words. But I think that i can now read the whole thing. > */ > zzz; ONEITHERSIDETHERIVERLIELONGFIELDSOFBARLEYANDOFRYETHATCLOTHETHEWOLDANDMEETTHESKYANDTHROTHE\ FIELDTHEROADRUNSBYTOMANYTOWERDCAMELOTANDUPANDDOWNTHEPEOPLEGOGAZINGWHERETHELILIESBLOWROUND\ ANISLANDTHEREBELOWTHEISLANDOFSHALOTTWILLOWSWHITENASPENSQUIVERLITTLEBREEZESDUSKANDSHIVERTH\ ROTHEWAVETHATRUNSFOREVERBYTHEISLANDINTHERIVERFLOWINGDOWNTOCAMELOTFOURGRAYWALLSANDFOURGRAY\ TOWERSOVERLOOKASPACEOFFLOWERSANDTHESILENTISLEIMBOWERSTHELADYOFSHALOTTBYTHEMARGINWILLOWVEI\ LDSLIDETHEHEAVYBARGESTRAILDBYSLOWHORSESANDUNHAILDTHESHALLOPFLITTETHSILKENSAILDSKIMMINGDOW\ NTOCAMELOTBUTWHOHATHSEENHERWAVEHERHANDORATTHECASEMENTSEENHERSTANDORISSHEKNOWNINALLTHELAND\ THELADYOFSHALOTTONLYREAPERSREAPINGEARLYINAMONGTHEBEARDEDBARLEYHEARASONGTHATECHOESCHEERLYF\ ROMTHERIVERWINDINGCLEARLYDOWNTOTOWERDCAMELOTANDBYTHEMOONTHEREAPERWEARYPILINGSHEAVESINUPLA\ NDSAIRYLISTENINGWHISPERSTISTHEFAIRYLADYOFSHALOTTTHERESHEWEAVESBYNIGHTANDDAYAMAGICWEBWITHC\ OLOURSGAYSHEHASHEARDAWHISPERSAYACURSEISONHERIFSHESTAYTOLOOKDOWNTOCAMELOTSHEKNOWSNOTWHATTH\ ECURSEMAYBEANDSOSHEWEAVETHSTEADILYANDLITTLEOTHERCAREHATHSHETHELADYOFSHALOTTANDMOVINGTHROA\ MIRRORCLEARTHATHANGSBEFOREHERALLTHEYEARSHADOWSOFTHEWORLDAPPEARTHERESHESEESTHEHIGHWAYNEARW\ INDINGDOWNTOCAMELOTTHERETHERIVEREDDYWHIRLSANDTHERETHESURLYVILLAGECHURLSANDTHEREDCLOAKSOFM\ ARKETGIRLSPASSONWARDFROMSHALOTTSOMETIMESATROOPOFDAMSELSGLADANABBOTONANAMBLINGPADSOMETIMES\ ACURLYSHEPHERDLADORLONGHAIRDPAGEINCRIMSONCLADGOESBYTOTOWERDCAMELOTANDSOMETIMESTHROTHEMIRR\ ORBLUETHEKNIGHTSCOMERIDINGTWOANDTWOSHEHATHNOLOYALKNIGHTANDTRUETHELADYOFSHALOTTBUTINHERWEB\ SHESTILLDELIGHTSTOWEAVETHEMIRRORSMAGICSIGHTSFOROFTENTHROTHESILENTNIGHTSAFUNERALWITHPLUMES\ ANDLIGHTSANDMUSICWENTTOCAMELOTORWHENTHEMOONWASOVERHEADCAMETWOYOUNGLOVERSLATELYWEDIAMHALFS\ ICKOFSHADOWSSAIDTHELADYOFSHALOTTABOWSHOTFROMHERBOWEREAVESHERODEBETWEENTHEBARLEYSHEAVESTHE\ SUNCAMEDAZZLINGTHROTHELEAVESANDFLAMEDUPONTHEBRAZENGREAVESOFBOLDSIRLANCELOTAREDCROSSKNIGHT\ FOREVERKNEELDTOALADYINHISSHIELDTHATSPARKLEDONTHEYELLOWFIELDBESIDEREMOTESHALOTTTHEGEMMYBRI\ DLEGLITTERDFREELIKETOSOMEBRANCHOFSTARSWESEEHUNGINTHEGOLDENGALAXYTHEBRIDLEBELLSRANGMERRILY\ ASHERODEDOWNTOCAMELOTANDFROMHISBLAZONDBALDRICSLUNGAMIGHTYSILVERBUGLEHUNGANDASHERODEHISARM\ OURRUNGBESIDEREMOTESHALOTTALLINTHEBLUEUNCLOUDEDWEATHERTHICKJEWELLDSHONETHESADDLELEATHERTH\ EHELMETANDTHEHELMETFEATHERBURNDLIKEONEBURNINGFLAMETOGETHERASHERODEDOWNTOCAMELOTASOFTENTHR\ OTHEPURPLENIGHTBELOWTHESTARRYCLUSTERSBRIGHTSOMEBEARDEDMETEORTRAILINGLIGHTMOVESOVERSTILLSH\ ALOTTHISBROADCLEARBROWINSUNLIGHTGLOWDONBURNISHDHOOVESHISWARHORSETRODEFROMUNDERNEATHHISHEL\ METFLOWDHISCOALBLACKCURLSASONHERODEASHERODEDOWNTOCAMELOTFROMTHEBANKANDFROMTHERIVERHEFLASH\ DINTOTHECRYSTALMIRRORTIRRALIRRABYTHERIVERSANGSIRLANCELOTSHELEFTTHEWEBSHELEFTTHELOOMSHEMAD\ ETHREEPACESTHROTHEROOMSHESAWTHEWATERLILYBLOOMSHESAWTHEHELMETANDTHEPLUMESHELOOKDDOWNTOCAME\ LOTOUTFLEWTHEWEBANDFLOATEDWIDETHEMIRRORCRACKDFROMSIDETOSIDETHECURSEISCOMEUPONMECRIEDTHELA\ DYOFSHALOTTINTHESTORMYEASTWINDSTRAININGTHEPALEYELLOWWOODSWEREWANINGTHEBROADSTREAMINHISBAN\ KSCOMPLAININGHEAVILYTHELOWSKYRAININGOVERTOWERDCAMELOTDOWNSHECAMEANDFOUNDABOATBENEATHAWILL\ OWLEFTAFLOATANDROUNDABOUTTHEPROWSHEWROTETHELADYOFSHALOTTANDDOWNTHERIVERSDIMEXPANSELIKESOM\ EBOLDSEERINATRANCESEEINGALLHISOWNMISCHANCEWITHAGLASSYCOUNTENANCEDIDSHELOOKTOCAMELOTANDATT\ HECLOSINGOFTHEDAYSHELOOSEDTHECHAINANDDOWNSHELAYTHEBROADSTREAMBOREHERFARAWAYTHELADYOFSHALO\ TTLYINGROBEDINSNOWYWHITETHATLOOSELYFLEWTOLEFTANDRIGHTTHELEAVESUPONHERFALLINGLIGHTTHROTHEN\ OISESOFTHENIGHTSHEFLOATEDDOWNTOCAMELOTANDASTHEBOATHEADWOUNDALONGTHEWILLOWYHILLSANDFIELDSA\ MONGTHEYHEARDHERSINGINGHERLASTSONGTHELADYOFSHALOTTHEARDACAROLMOURNFULHOLYCHANTEDLOUDLYCHA\ NTEDLOWLYTILLHERBLOODWASFROZENSLOWLYANDHEREYESWEREDARKENDWHOLLYTURNDTOTOWERDCAMELOTFORERE\ SHEREACHDUPONTHETIDETHEFIRSTHOUSEBYTHEWATERSIDESINGINGINHERSONGSHEDIEDTHELADYOFSHALOTTUND\ ERTOWERANDBALCONYBYGARDENWALLANDGALLERYAGLEAMINGSHAPESHEFLOATEDBYDEADPALEBETWEENTHEHOUSES\ HIGHSILENTINTOCAMELOTOUTUPONTHEWHARFSTHEYCAMEKNIGHTANDBURGHERLORDANDDAMEANDROUNDTHEPROWTH\ EYREADHERNAMETHELADYOFSHALOTTWHOISTHISANDWHATISHEREANDINTHELIGHTEDPALACENEARDIEDTHESOUNDO\ FROYALCHEERANDTHEYCROSSDTHEMSELVESFORFEARALLTHEKNIGHTSATCAMELOTBUTLANCELOTMUSEDALITTLESPA\ CEHESAIDSHEHASALOVELYFACEGODINHISMERCYLENDHERGRACETHELADYOFSHALOTT > UnsetLogFile();