95 Personagens ASCII… 95 Citações de Filmes

119

Atualização: O vencedor foi decidido, mas o desafio não acabou!

Por fim, quase três meses após o início da pergunta, alguém permaneceu o último respondedor por mais de uma semana! Parabéns jimmy23013 por sua resposta P1eq!

Ainda há no entanto 8 caracteres à esquerda: 48KSaclw. Se alguém é realmente ambicioso, pode continuar tentando com eles: D

Muito obrigado a todos que participaram, especialmente àqueles que mantiveram o concurso por tanto tempo com várias respostas, principalmente o KennyTM com 25 respostas incríveis !!

Além disso, obrigado a todos que mantiveram a lista de respostas atualizada, foi uma grande ajuda :) (especialmente desde que estive longe do SE por alguns meses: P).


Pergunta original:

Em 2005, o American Film Institute produziu AFI's 100 Years ... 100 Movie Quotes , uma lista das melhores citações do cinema americano. Aqui estão listados exatamente como devem ser usados ​​neste desafio:

(answer  6) 1. "Frankly, my dear, I don't give a damn." - Rhett Butler
(answer  7) 2. "I'm gonna make him an offer he can't refuse." - Vito Corleone
(answer  5) 3. "You don't understand! I coulda had class. I coulda been a contender. I could've been somebody, instead of a bum, which is what I am." - Terry Malloy
(answer  3) 4. "Toto, I've a feeling we're not in Kansas anymore." - Dorothy Gale
5. "Here's looking at you, kid." - Rick Blaine
(answer  2) 6. "Go ahead, make my day." - Harry Callahan
(answer 11) 7. "All right, Mr. DeMille, I'm ready for my close-up." - Norma Desmond
(answer  8) 8. "May the Force be with you." - Han Solo
(answer 12) 9. "Fasten your seatbelts. It's going to be a bumpy night." - Margo Channing
(answer 13) 10. "You talking to me?" - Travis Bickle
(answer 16) 11. "What we've got here is failure to communicate." - Captain
(answer 15) 12. "I love the smell of napalm in the morning." - Lt. Col. Bill Kilgore
(answer  4) 13. "Love means never having to say you're sorry." - Jennifer Cavilleri Barrett
14. "The stuff that dreams are made of." - Sam Spade
(answer 18) 15. "E.T. phone home." - E.T.
(answer 20) 16. "They call me Mister Tibbs!" - Virgil Tibbs
17. "Rosebud." - Charles Foster Kane
(answer 10) 18. "Made it, Ma! Top of the world!" - Arthur "Cody" Jarrett
(answer 17) 19. "I'm as mad as hell, and I'm not going to take this anymore!" - Howard Beale
(answer 25) 20. "Louis, I think this is the beginning of a beautiful friendship." - Rick Blaine
(answer 26) 21. "A census taker once tried to test me. I ate his liver with some fava beans and a nice Chianti." - Hannibal Lecter
(answer  9) 22. "Bond. James Bond." - James Bond
(answer 22) 23. "There's no place like home." - Dorothy Gale
(answer 29) 24. "I am big! It's the pictures that got small." - Norma Desmond
25. "Show me the money!" - Rod Tidwell
(answer 31) 26. "Why don't you come up sometime and see me?" - Lady Lou
(answer 27) 27. "I'm walking here! I'm walking here!" - "Ratso" Rizzo
(answer 14) 28. "Play it, Sam. Play 'As Time Goes By.'" - Ilsa Lund
(answer 28) 29. "You can't handle the truth!" - Col. Nathan R. Jessup
(answer 23) 30. "I want to be alone." - Grusinskaya
(answer 30) 31. "After all, tomorrow is another day!" - Scarlett O'Hara
(answer  1) 32. "Round up the usual suspects." - Capt. Louis Renault
(answer 24) 33. "I'll have what she's having." - Customer
(answer 36) 34. "You know how to whistle, don't you, Steve? You just put your lips together and blow." - Marie "Slim" Browning
(answer 19) 35. "You're gonna need a bigger boat." - Martin Brody
(answer 39) 36. "Badges? We ain't got no badges! We don't need no badges! I don't have to show you any stinking badges!" - "Gold Hat"
(answer 40) 37. "I'll be back." - The Terminator
(answer 33) 38. "Today, I consider myself the luckiest man on the face of the earth." - Lou Gehrig
(answer 37) 39. "If you build it, he will come." - Shoeless Joe Jackson
(answer 43) 40. "My mama always said life was like a box of chocolates. You never know what you're gonna get." - Forrest Gump
(answer 34) 41. "We rob banks." - Clyde Barrow
(answer 38) 42. "Plastics." - Mr. Maguire
43. "We'll always have Paris." - Rick Blaine
(answer 49) 44. "I see dead people." - Cole Sear
(answer 21) 45. "Stella! Hey, Stella!" - Stanley Kowalski
(answer 32) 46. "Oh, Jerry, don't let's ask for the moon. We have the stars." - Charlotte Vale
(answer 35) 47. "Shane. Shane. Come back!" - Joey Starrett
(answer 42) 48. "Well, nobody's perfect." - Osgood Fielding III
(answer 51) 49. "It's alive! It's alive!" - Henry Frankenstein
(answer 41) 50. "Houston, we have a problem." - Jim Lovell
(answer 45) 51. "You've got to ask yourself one question: 'Do I feel lucky?' Well, do ya, punk?" - Harry Callahan
(answer 55) 52. "You had me at "hello."" - Dorothy Boyd
(answer 46) 53. "One morning I shot an elephant in my pajamas. How he got in my pajamas, I don't know." - Capt. Geoffrey T. Spaulding
(answer 44) 54. "There's no crying in baseball!" - Jimmy Dugan
(answer 59) 55. "La-dee-da, la-dee-da." - Annie Hall
(answer 60) 56. "A boy's best friend is his mother." - Norman Bates
(answer 47) 57. "Greed, for lack of a better word, is good." - Gordon Gekko
(answer 56) 58. "Keep your friends close, but your enemies closer." - Michael Corleone
(answer 48) 59. "As God is my witness, I'll never be hungry again." - Scarlett O'Hara
(answer 50) 60. "Well, here's another nice mess you've gotten me into!" - Oliver
(answer 65) 61. "Say "hello" to my little friend!" - Tony Montana
(answer 66) 62. "What a dump." - Rosa Moline
(answer 52) 63. "Mrs. Robinson, you're trying to seduce me. Aren't you?" - Benjamin Braddock
(answer 61) 64. "Gentlemen, you can't fight in here! This is the War Room!" - President Merkin Muffley
(answer 68) 65. "Elementary, my dear Watson." - Sherlock Holmes
(answer 64) 66. "Take your stinking paws off me, you damned dirty ape." - George Taylor
(answer 53) 67. "Of all the gin joints in all the towns in all the world, she walks into mine." - Rick Blaine
(answer 72) 68. "Here's Johnny!" - Jack Torrance
(answer 71) 69. "They're here!" - Carol Anne Freeling
(answer 73) 70. "Is it safe?" - Dr. Christian Szell
(answer 54) 71. "Wait a minute, wait a minute. You ain't heard nothin' yet!" - Jakie Rabinowitz/Jack Robin
(answer 77) 72. "No wire hangers, ever!" - Joan Crawford
(answer 67) 73. "Mother of mercy, is this the end of Rico?" - Cesare Enrico "Rico" Bandello
(answer 70) 74. "Forget it, Jake, it's Chinatown." - Lawrence Walsh
(answer 74) 75. "I have always depended on the kindness of strangers." - Blanche DuBois
(answer 78) 76. "Hasta la vista, baby." - The Terminator
(answer 75) 77. "Soylent Green is people!" - Det. Robert Thorn
(answer 76) 78. "Open the pod bay doors, HAL." - Dave Bowman
(answer 80) 79. Striker: "Surely you can't be serious." Rumack: "I am serious...and don't call me Shirley." - Ted Striker and Dr. Rumack
(answer 84) 80. "Yo, Adrian!" - Rocky Balboa
(answer 81) 81. "Hello, gorgeous." - Fanny Brice
(answer 83) 82. "Toga! Toga!" - John "Bluto" Blutarsky
(answer 63) 83. "Listen to them. Children of the night. What music they make." - Count Dracula
(answer 87) 84. "Oh, no, it wasn't the airplanes. It was Beauty killed the Beast." - Carl Denham
(answer 88) 85. "My precious." - Gollum
(answer 86) 86. "Attica! Attica!" - Sonny Wortzik
(answer 57) 87. "Sawyer, you're going out a youngster, but you've got to come back a star!" - Julian Marsh
(answer 82) 88. "Listen to me, mister. You're my knight in shining armor. Don't you forget it. You're going to get back on that horse, and I'm going to be right behind you, holding on tight, and away we're gonna go, go, go!" - Ethel Thayer
(answer 58) 89. "Tell 'em to go out there with all they got and win just one for the Gipper." - Knute Rockne
(answer 90) 90. "A martini. Shaken, not stirred." - James Bond
(answer 85) 91. "Who's on first." - Dexter
(answer 62) 92. "Cinderella story. Outta nowhere. A former greenskeeper, now, about to become the Masters champion. It looks like a mirac...It's in the hole! It's in the hole! It's in the hole!" - Carl Spackler
(answer 69) 93. "Life is a banquet, and most poor suckers are starving to death!" - Mame Dennis
(answer 89) 94. "I feel the need - the need for speed!" - Lt. Pete "Maverick" Mitchell and Lt. Nick "Goose" Bradshaw
(answer 79) 95. "Carpe diem. Seize the day, boys. Make your lives extraordinary." - John Keating
(answer 91) 96. "Snap out of it!" - Loretta Castorini
(answer 92) 97. "My mother thanks you. My father thanks you. My sister thanks you. And I thank you." - George M. Cohan
(answer 93) 98. "Nobody puts Baby in a corner." - Johnny Castle
(answer 94) 99. "I'll get you, my pretty, and your little dog, too!" - Wicked Witch of the West
(answer 95) 100. "I'm the king of the world!" - Jack Dawson

(Sinta-se à vontade para marcar aspas como usadas.)

Existem 95 caracteres ASCII imprimíveis (códigos hexadecimais 20 a 7E), que são bem próximos de 100:

 !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~

Nesse desafio, os usuários se revezam na criação de programas que imprimem uma das citações do filme usando uma nova linguagem de programação e um subconjunto menor de ASCII imprimível a cada vez.

Como isso funciona

Eu já enviei a primeira resposta e a rotulei como 95 desde que me foi permitido usar todos os 95 caracteres ASCII imprimíveis no meu programa. É um programa Python que imprime a 100ª citação "I'm the king of the world!" - Jack Dawson, para stdout.

A segunda pessoa a responder precisa escolher uma nova cotação, uma nova linguagem de programação e um dos 95 caracteres ASCII imprimíveis para excluir do código. Eles devem escrever um programa sem usar esse caractere que imprime a cotação escolhida no stdout. Eles devem marcar sua resposta como 94, pois possuem 94 caracteres ASCII imprimíveis para trabalhar (pense nisso como uma contagem regressiva).

A terceira pessoa a responder deve escolher uma citação e idioma que não tenham sido usados ​​em nenhuma resposta anterior (apenas 95 e 94 neste caso) e um novo personagem a ser abandonado. Eles não devem usar esse caractere ou qualquer caractere anteriormente proibido em seu código. Eles marcam sua resposta como 93.

Esse processo de atendimento continua assim até que todos os caracteres ASCII imprimíveis sejam proibidos e alguém dê a resposta "1", ou muito mais provavelmente, ninguém pode descobrir como responder novamente.

Regras (leia com atenção)

É importante entender que apenas uma pessoa pode responder de cada vez e cada resposta depende da resposta anterior. Nunca deve haver duas respostas com o mesmo número, citação ou linguagem de programação.

É provável que haja respostas conflitantes enviadas ao mesmo tempo, e tudo bem. Se isso acontecer, a pessoa que tecnicamente respondeu mais tarde deve excluir rapidamente (como 10 min ou menos) sua publicação ou editá-la para que se torne a próxima resposta. Caso contrário, não edite o código, a menos que seja realmente necessário . A edição de postagens para corrigir apenas a formatação é incentivada.

Regras Específicas

  • Um usuário que acabou de responder deve esperar pelo menos uma hora antes de responder novamente.
  • Um usuário não pode responder duas vezes seguidas.
  • O número da cotação que você escolher não deve exceder 5 abaixo do número da sua resposta. Por exemplo, a resposta 90 pode escolher qualquer cotação não utilizada do número 85 a 100. Isso deixa as cotações melhores para as respostas mais difíceis. Além desta regra, a numeração da cotação é irrelevante.
  • Os programas podem conter apenas guias, novas linhas e o caractere ASCII imprimível que não são proibidos até o momento. (Guias e novas linhas nunca são proibidas.)
  • Não há limite de duração do programa, mas pode não haver mais de 64 guias ou 64 novas linhas no seu programa.
  • Os idiomas são considerados distintos se forem comumente referidos por nomes diferentes. Versões diferentes de linguagens de programação não são consideradas distintas. (Linguagens de marcação como HTML contam, mas são preferidas as linguagens de programação.) Sua linguagem deve ter existido antes do início deste concurso.
  • Se seu idioma não possui stdout, use algum mecanismo de saída de texto semelhante.
  • Seu programa não deve receber informações ou ter efeitos colaterais inesperados, como a criação de arquivos.

Verifique se o seu programa é válido. Ele deve ser capaz de executar como um programa completo como está, não apenas em um ambiente REPL .

Observe que a "cotação" que você deve exibir inclui as aspas e a pessoa que a disse (mas não o número da cotação). Seu programa deve produzir apenas sua cotação exatamente como aparece na lista acima (uma nova linha inicial / final é boa).

Formatação

Por favor, formate suas respostas assim, {stuff in curly braces}precisa ser substituído:

#{answer number}. {language}, uses no <code>{the forbidden character you just chose}</code>

    {program}

Output is quote {quote number}:

    {program output, should be identical to quote}

[Previously forbidden:]({url of previous answer (hit "share" just below it)}) <code>{the previous answerer's forbidden character followed by his previously forbidden list}</code>

{anything else you wish to say}

As <code>tags podem ser substituídas por backticks ( `), desde que não ocorra backtick dentro deles.

Pontuação

O objetivo comum desse desafio é manter as respostas por tanto tempo quanto possível.

O vencedor oficial é o usuário que responde por último, depois de uma semana sem respostas adicionais. Eu aceitarei a última resposta deles.

Lista de respostas (mais recentes primeiro)

  1. 4 Unário progressivo
  2. a Bueue
  3. c Udage
  4. S 1L_a105
  5. w Binaryfuck
  6. K Subskin
  7. l 23

  1. n P1eq
  2. t Addleq
  3. 9 Código da máquina x86
  4. r BSM
  5. D ShaFuck 0.2
  6. u Villmark
  7. O Código da máquina PDP-11
  8. f ProgFk
  9. i NUMPAD
  10. H Tri
  11. 2 ferNANDo
  12. P Pontudo
  13. m Subleq
  14. G FlogScript
  15. ? Nqubl
  16. % Glypho
  17. ! 3var
  18. q ETA
  19. j BrainSpace 1.0
  20. V Insônia
  21. ` asdf
  22. 6 Lazy K
  23. C ! Py! Lote 1.5
  24. T Fuckfuck
  25. F PoGo
  26. R Golunar
  27. b Código da máquina 6502 + Monitor do sistema Apple II
  28. Y Headsecks
  29. I BRB
  30. U Braincrash
  31. Z Em êxtase
  32. M Fazenda
  33. A Enema
  34. L AJUSTAR
  35. $ Beatnik
  36. N Rebmu
  37. g Dupdog
  38. B Gammaplex
  39. J Fuck4
  40. 5 A0A0
  41. W gs2
  42. : l33t
  43. h Tonoco
  44. E Malbolge
  45. k D1ffe7e45e
  46. 1 mal
  47. Q CaneCode
  48. d Relva
  49. # URSL
  50. | Burlesque
  51. x Emmental
  52. ~ Applesoft BASIC
  53. ^ Adiante
  54. 7 Código da máquina 80386 + DOS
  55. _ Argh!
  56. v Rexx
  57. } Alpha Beta
  58. o Super Stack!
  59. e Pyth
  60. z Plain TeX
  61. > WASD
  62. ] Shell POSIX
  63. & Gibberish
  64. / GolfScript
  65. * montagem x86_64
  66. 0 AppleScript
  67. X Peixe-morto ~
  68. , Colher
  69. - oOo CODE
  70. = J
  71. @ Mathematica
  72. . Perl
  73. + DNA #
  74. < Pi
  75. ) Postscript
  76. [ abc
  77. s dc
  78. { HTML
  79. ( Unário
  80. ; Ook!
  81. ' CJam
  82.   PHP
  83. " Brainfuck
  84. \ Marbelous
  85. 3 C ++
  86. y Rubi
  87. p Javascript
  88.      Pitão

(Sinta-se à vontade para editar se estiver incorreto ou desatualizado)

Esta pergunta funciona melhor quando você classifica por "mais antigo".

NOTA: Como minha última pergunta , este é um teste de um novo tipo de desafio em que cada resposta depende da última e aumenta em dificuldade. Venha para o chat ou meta para discutir uma questão ou a ideia em geral.

Passatempos de Calvin
fonte
Que estranho. Todo mundo sabe como fazer o nº 2, mas ninguém quer fazer isso (principalmente porque o nº 1 se tornaria impossível). Se esse desafio fosse reiniciado, provavelmente seria finalizável.
CalculatorFeline
Eu farei isso!
Christopher
@CalculatorFeline como você faz 2?
Christopher
Da mesma maneira que você faz # 1. Linguagem. Claro, isso mataria o desafio.
CalculatorFeline
O @CalculatorFeline Lenguage foi compensado por esse desafio, que é uma brecha padrão . (Veja o link na primeira linha.)
jimmy23013

Respostas:

19

8. P1eq (não usa n)

Ele exige que a plataforma de 64 bits não Windows funcione corretamente, assim como a resposta do Addleq. Ele usou o mesmo truque para o -1.

Possui 64 novas linhas e 57 guias.

É lento e terminou em cerca de 18 minutos no meu computador.

844 844 88888   848
844 4
844 444
444
8   448
444 448 4
484
884 488
488
488
484 488 88
84  48
48
844 4444
4444
848 844 88888
88884884    888484  4484
8884484 4444848 4848888
4448448 4488    4444848
488 88  44888
4884848 4488    4444848
8488884 4488    4444848
484884888   48848   4848888
4448448 4444848 8884484
88  4488848 884484
88884884    4444848 4844848
4444848 4444888 4484
44884   4444848 8
444844  88  8484484
48  884
844 484
88
4444
444 4448
4444    4448    4
4448
444 4448    88888888888888888888
48  4444
444 4448
4444    4448    4
4448
4448
444 4448    4
444
444
444
444
444
444
444
444
444
444
444
444
444
444
444
444
444
444
444
444
444 88888888888888888888
848 844 4

A saída é citação 8:

"May the Force be with you." - Han Solo

Proibido anteriormente :

?!"#$%&'()*+,-./01235679:;<=>@[\]^_` AbBCdDeEfFgGhHiIjJkLmMNoOpPqQrRstTuUvVWxXyYzZ{|}~

Remanescente:

  • Números: 4 8
  • Maiúsculas: K S
  • Minúsculas: a c l w

P1eq é exatamente como Subleq e Addleq, com a instrução B = A + 1 e pula se B não for alterado.

Explicação:

844 844 88888        # *844 = 1.
848 addr4:844 4 7    # Jump back to 4. And add some nonsense values to *4,
                     #   which is never read. Note that if it jumps to 8, 
                     #   neither *44 nor *48 could be a jump target.
844 444 10           # Initialize *444 to 2.
addr10: 444 444 13   # Increment *444.
8 448 16             # *448 = 445.
444 448 4            # If *444 == 444, jump back to 4.
484 484 22           # Increment *484.
884 488 25           # *488 = *884 + 1.
488 488 28           # Increment *488 two times. This prevents the infinite
488 488 31           #   loop when *884 is uninitialized.
484 488 88           # If *484 + 1 == *488, jump to 88.
84 48 37             # *48 = 10.
48 48 40
844 4444 43          # *4444 = 3.
4444 4444 46
848 844 addr48:88888 # Jump back to 10.

# Data.

88884884 888484 4484
8884484 4444848 4848888
4448448 4488 4444848
488 88 44888
4884848 4488 4444848
8488884 4488 4444848
484884888 48848 4848888
4448448 4444848 8884484
88 4488848 884484
88884884 4444848 4844848
4444848 4444888 4484
44884 4444848 addr84:8    # The 8 is for getting 10 in the loop.
444844 88 8484484

addr88:48 884 91     # *884 = content of current cell. 48 is also the last
                     #   data cell, which will be 88, the address of itself
                     #   when read. 884 is also the end-of-data marker.
                     # *444 will be (current cell value mod 441) + 3
844 484 94           # Reset *484 to 1.
88 88 97             # Increment the data pointer.
4444 4444 100        # *4444 = 4.
444 4448 103
4444 4448 4          # If *884 was uninitialized, skip.
4448 4448 109
444 4448 (-1)        # If it is at the end of data (2 mod 441), stop.
48 4444 115          # *4444 = 10
444 4448 118
4444 4448 4          # If the current cell value is 8, skip.
4448 4448 124
4448 4448 127
444 4448 4           # If the current cell value is 10 (the jump target), skip.
444 444 133          # *444 += 20. This makes the last cell value 88 outputs the
444 444 136          #   last character "o".
444 444 139          # *444 will be (current cell value mod 441) + 23, which is
444 444 142          #   either the character to output, or the character to
444 444 145          #   output + 256. Some characters' minimum mod 441
444 444 148          #   representations using only 4 and 8 overflowed 32 bit
444 444 151          #   integer. But those characters plus 256 worked well.
444 444 154
444 444 157
444 444 160
444 444 163
444 444 166
444 444 169
444 444 172
444 444 175
444 444 178
444 444 181
444 444 184
444 444 187
444 444 190
444 (-1) 193         # Output the character.
848 844 4            # Jump back to the loop.

Este programa incrementa * 444 e * 484 juntos e redefine * 444 quando se torna um determinado valor. Quando * 484 for igual aos dados, * 444 será o restante dos dados dividido por algum valor.

Apenas 6 células de memória no código são endereçáveis ​​diretamente com 4 e 8. Devo reutilizar algumas delas. Isso também fez algumas operações não na ordem que eu queria, como o uso de variáveis ​​não inicializadas. Mas posso simplesmente descartar o que for retornado na primeira vez do loop e inicializar depois disso.


Algumas outras línguas acharam interessantes, mas não são mais utilizáveis:

  • Mais variantes unárias
  • Idiomas usando números
    • NULO Eu acreditava que deveria funcionar sem números ímpares. Infelizmente não.
    • Smith #

Agora eu tenho 3 idiomas restantes.

Para quem quiser escrever mais respostas, aqui estão algumas instruções para procurar:

  • Códigos de máquina reais, se tiverem formatos que não exijam um cabeçalho de arquivo e tenham instruções de entrada / saída de texto.
  • OISC baseado em número.
  • Idiomas não esotéricos, que possuem instruções de caracteres únicos por alguns motivos. Talvez a família APL.
  • Código binário auto-modificável.
  • Idiomas projetados para algumas idéias sobre a aparência do idioma.
  • Os idiomas que não estão no wiki esolangs e não têm uma descrição em inglês, o que significa que dificilmente são conhecidos por outros usuários.

Para ser exato, eu tinha:

  • Uma linguagem hexadecimal que deve poder imprimir uma cotação com algum código de extração automática.
  • Uma linguagem 2D que funciona com dois caracteres distintos (exceto novas linhas).
  • Um idioma não documentado que pode usar comprimentos de linha como instruções.
jimmy23013
fonte
1
Uau, pensei que P1Eq não é possível em 64 linhas. +1. Excluindo "Linguagem", ainda tenho 1 idioma para a resposta nº 3. "Wunnel" seria um candidato perfeito para a resposta 2, mas imprime 0s e 1s literais em vez de bits. Totalmente desperdiçado.
Kennytm
1
@KennyTM Ainda não testei minha resposta # 2. E acho que não haverá cotação imprimível com o idioma da minha resposta nº 1 depois que alguém postar uma resposta nº 2. Agora estou procurando outras fontes de idiomas além do wiki, mas não encontrei nada que funcione.
jimmy23013
1
@KennyTM Encontrei outra maneira de imprimir strings com o idioma da resposta nº 1, que pode imprimir até 62 caracteres. Na verdade, é exatamente assim que o exemplo padrão funciona, mas fiquei com preguiça de ler a fonte e aprender essa linguagem não documentada.
jimmy23013
1
Estou fora da SE há um tempo, mas, a menos que esteja enganado, esta resposta ganhou! Isso foi publicado em 17 de dezembro e já se passaram algumas semanas. Bom trabalho!
Passatempos de Calvin
126

90. Brainfuck, não usa "

     ++++             ++++        [>+>++>+++>++++>+  ++++>++++++>+++++++
   >+++++++         +>++++++      +++>++++++++++>+   ++ ++   ++++++>++++
  +++    +++       ++>    +++     +++       ++++  +++>++++++++
 +++      +++     >++      +++             ++++  ++ ++     ++
>+++      ++++   ++++      ++++           +<<<  <<   <   <<
<<<<      <<<<   -]>>      >>++          .-->  >>>+.-<<<<.>
>>>>      >>>>   >---      .+++         <<+.
->>+      +.--   >---      -.++        ++<<
 +.-      >--     .++      <+.        -<<<
  <<<    <--       .++    <<.       >>>>>
   >+++.---         >>>.<+.-       >+++.--
     ----             .+++        >--.++<<<

<<<<<----.++++<<.>>>>>>>>>>--.+.+>----.++++<<<<<<<<<<<.>>>>>>>>>>+++.--->----.
++++<<+.->++..--<---.-.++++<<<<<<<--.++<<++.--.>>---.+++<<.>>>>>++.-->>>+.->>-
--.+++<---.+++>+++.---<<<<<<<<<<.>>>>++.-->>>>>>-.-.++<----.++++<<<<<<<<<<<<<.

Saída é citação 90:

"A martini. Shaken, not stirred." - James Bond

Proibido anteriormente: py3\

Alguém tinha que fazer isso antes que qualquer um .+-fosse proibido.
Experimente aqui: http://ideone.com/dlu8VE

Michael M.
fonte
28
Absolutamente lindo.
Flonk
13
Por que você removeria "? Isso é meio cruel para todas as pessoas atrás de você.
Peter Olson
75

51. Malbolge (não usa E)

(As novas linhas são apenas para esclarecimento e não fazem parte da fonte.)

ba`r:?!!6l:jVVw5ut2rqML:nllHFFhDfAcR?P`ut:rqZYtm2qCRhPPNNihgf%qFF!!2AA??TSwutOTr55PImGFKJCBfFc
cbONq9!!6Y4W8hCf4ttOONL:JlHGFFDgfAS?b``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??gfw::tr`64nn!ljjihffw?
ct``:?!!6l:jihwfut?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??gfw::tr`64nn!ljjihffw?
ct``:?!!6l:jihwfut?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??gfw::tr`64nn!ljjihffw?
ct``:?!!6l:jihwfut?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??gfw::tr`64nn!ljjihffw?
ct``:?!!6l:jihwfut?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??gfw::tr`64nn!ljjihffw?
ct``:?KJZHGWWDUBRRPONNMKnlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!DBBWVUZSRWPONMRKPO!ljjihffw?
ct``:?KJZHGWWDUBRRPONNMKnlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!DBBWVUZSRWPONMRKPO!ljjihffw?
ct``:?KJZHGWWDUBRRPONNMKnlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!DBBWVUZSRWPONMRKPO!ljjihffw?
ct``:?KJZHGWWDUBRRPONNMKnlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!DBBWVUZSRWPONMRKPO!ljjihffw?
ct``:?!!6l:jWDUBRR?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??ZSRWPOr`64nn!ljjihffw?
ct``:?!!6l:jWDUBRR?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??ZSRWPOr`64nn!ljjihffw?
ct``:?!!6l:jWDUBRR?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??ZSRWPOr`64nn!ljjihffw?
ct``:?!!6l:jWDUBRR?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??ZSRWPOr`64nn!ljjihffw?
ct``:?!!6l:jWDUBRR?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??ZSRWPOr`64nn!ljjihffw?
ct``:?!!6l:jWDUBRR?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??ZSRWPOr`64nn!ljjihffw?
ct``:?!!6l:jWDUBRR?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??ZSRWPOr`64nn!ljjihffw?
ct``:?!!6l:jWDUBRR?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??ZSRWPOr`64nn!ljjihffw?
ct``:?!!6l:jWDUBRR?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??ZSRWPOr`64nn!ljjihffw?
ct``:?!!6l:jWDUBRR?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??ZSRWPOr`64nn!ljjihffw?
ct``:?!!6l:jWDUBRR?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??ZSRWPOr`64nn!ljjihffw?
ct``:?!!6l:jWDUBRR?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??ZSRWPOr`64nn!ljjihffw?
ct``:?!!6l:jWDUBRR?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??ZSRWPOr`64nn!ljjihffw?
ct``:?!!6l:jWDUBRR?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??ZSRWPOr`64nn!ljjihffw?
ct``:?!!6l:jWDUBRR?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??ZSRWPOr`64nn!ljjihffw?
ct``:?!!6l:jWDUBRR?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??ZSRWPOr`64nn!ljjihffw?
ct``:?KJZHGWWDUBRRPONNMKnlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!DBBWVUZSRWPONMRKPO!ljjihffw?
ct``:?KJZHGWWDUBRRPONNMKnlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!DBBWVUZSRWPONMRKPO!ljjihffw?
ct``:?KJZHGWWDUBRRPONNMKnlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!DBBWVUZSRWPONMRKPO!ljjihffw?
ct``:?KJZHGWWDUBRRPONNMKnlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!DBBWVUZSRWPONMRKPO!ljjihffw?
ct``:?!!6l:jihwfut?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??gfw::tr`64nn!ljjihffw?
ct``:?!!6l:jihwfut?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??gfw::tr`64nn!ljjihffw?
ct``:?!!6l:jihwfut?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??gfw::tr`64nn!ljjihffw?
ct`NMLKJZHGWWDUBRRPONNMKKIHjj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqGFDDBBWVUZSRWPONMRKPONMFjihffw?
ct`NMLKJZHGWWDUBRRPONNMKKIHjj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqGFDDBBWVUZSRWttNML4nOlMFjhCBAF?
cC%A:9!!65492Vw5uu2rqMMKKIHjj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqGFDDBBWVUZSRWPONMRKPONMFjihffw?
ct`NMLKJZHGWWDUBRRPONNMKKIHjj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqGFDDBBWVUZSRWPONMRKPONMFjihffw?
ct``:?!!6l:jWDUBRR?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??ZSRWPOr`64nn!ljjihffw?
ct``:?!!6l:jWDUBRR?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??ZSRWPOr`64nn!ljjihffw?
ct``:?!!6l:jWDUBRR?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??ZSRWPOr`64nn!ljjihffw?
ct``:?!!6l:jWDUBRR?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??ZSRWPOr`64nn!ljjihffw?
ct``:?!!6l:jWDUBRR?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??ZSRWPOr`64nn!ljjihffw?
ct``:?!!6l:jWDUBRR?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??ZSRWPOr`64nn!ljjihffw?
ct``:?!!6l:jWDUBRR?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??ZSRWPOr`64nn!ljjihffw?
ct``:?!!6l:jWDUBRR?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??ZSRWPOr`64nn!ljjihffw?
ct``:?!!6l:jWDUBRR?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??ZSRWPOr`64nn!ljjihffw?
ct``:?!!6l:jWDUBRR?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??ZSRWPOr`64nn!ljjihffw?
ct``:?!!6l:jWDUBRR?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??ZSRWPOr`64nn!ljjihffw?
ct``:?!!6l:jWDUBRR?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??ZSRWPOr`64nn!ljjihffw?
ct``:?!!6l:jWDUBRR?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??ZSRWPOr`64nn!ljjihffw?
ct``:?!!6l:jWDUBRR?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??ZSRWPOr`64nn!ljjihffw?
ct``:?!!6l:jWDUBRR?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??ZSRWPOr`64nn!ljjihffw?
ct``:?!!6l:jWDUBRR?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??ZSRWPOr`64nn!ljjihffw?
ct``:?!!6l:jWDUBRR?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??ZSRWPOr`64nn!ljjihffw?
ct``:?!!6l:jWDUBRR?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??ZSRWPOr`64nn!ljjihffw?
ct``:?!!6l:jWDUBRR?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??ZSRWPOr`64nn!ljjihffw?
ct``:?!!6l:jWDUBRR?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??ZSRWPOr`64nn!ljjihffw?
ct``:?!!6l:jihwfut?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??gfw::tr`64nn!ljjihffw?
ct``:?!!6l:jihwfut?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??gfw::tr`64nn!ljjihffw?
ct``:?!!6l:jihwfut?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??gfw::tr`64nn!ljjihffw?
ct``:?!!6l:jWDUBRR?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??ZSRWPOr`64nn!ljjihffw?
ct``:?!!6l:jWDUBRR?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??ZSRWPOr`64nn!ljjihffw?
ct``:?!!6l:jWDUBRR?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??ZSRWPOr`64nn!ljjihffw?
ct``:?!!6l:jWDUBRR?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??ZSRWPOr`64nn!ljjihffw?
ct``:?!!6l:jWDUBRR?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??ZSRWPOr`64nn!ljjihffw?
ct``:?!!6l:jWDUBRR?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??ZSRWPOr`64nn!ljjihffw?
ct``:?!!6l:jWDUBRR?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??ZSRWPOr`64nn!ljjihffw?
ct``:?!!6l:jWDUBRR?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??ZSRWPOr`64nn!ljjihffw?
ct``:?!!6l:jihwfut?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??gfw::tr`64nn!ljjihffw?
ct``:?!!6l:jihwfut?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??gfw::tr`64nn!ljjihffw?
ct``:?!!6l:jihwfRuPrr`L:nlljj!hffTc!?``u::88ZYWmr2SSRglOjihgfI%FFDCBAWV?ZYw::8Tr54JImGFKDCgAF?
DC%%:98!654WWDUBRRPONqLLnlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!m2AWVUZSRWPONMR54m!ljjihffw?
ct``:?8nmHGWWDUBRRPONqLLnlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!m2AWVUZSRWPONMR54m!ljjihffw?
ct`%qLKJZHGWWDUBRRPONNMKnlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rq6b4!BBW?UZYw:99Nr64JO2MFjDgffw?
ct`%qLKJZZGWWDTB4RPONNMKnlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rq6b4DBBWVUZSRWPONMRKPO!ljjihffw?
ct`NMLKJZ549ihwfut2bqNMKnlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqGFDDBBjihgfw::tTqLKPO!ljjihffw?
ct`NMLKJZ549ihwfut2bqNMKnlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqGFDDBBjihgfw::tTqLKPO!ljjihffw?
ct`NMLKJZl:jihwfut?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqGFDDBBj??gfw::tr`64nn!ljjihffw?
ct`NMLKJZl:jihwfut?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqGFDDBBj??gfw::tr`64nn!ljjihffw?
ct`NMLKJZHGW8hTfut?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqGFDDBBWVUTww::tr`64nn!ljjihffw?
ct`NMLKJZHGW8hTfut?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqGFDDBBWVUTww::tr`64nn!ljjihffw?
ct`%qLKJZHGWWDUBRRPONqLLnlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rq6b4DBBWVUZSRWPONMR54m!ljjihffw?
ct`%qLKJZHGWWDUBRRPONqLLnlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rq6b4DBBWVUZSRWPONMR54m!ljjihffw?
ct``:?!!6HGWWDUBRRPONNMKm%ljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAWVUZSRWPONMRKPOmlLjihffw?
ct``:?!!6HGWWDUBRRPONNMKm%ljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAWVUZSRWPONMRKPOmlLjihffw?
ct``:?!!6l:jihwT4uPONNMKKIHjj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??gfwu98NMRKPONMFjihffw?
ct``:?!!6l:jihwT4uPONNMKKIHjj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??gfwu98NMRKPONMFjihffw?
ct``:?!!6l:jihwfut?rrNMKKIHjj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??gfw::tr`6KPONMFjihffw?
ct``:?!!6l:jihwfut?rrNMKKIHjj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??gfw::tr`6KPONMFjihffw?
ct`NML8nml:jihwfut2bqNMKKIHjj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqGFDm2Aj??gfw::tTqLKPONMFjihffw?
ct`NML8nml:jihwfut2bqNMKKIHjj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqGFDm2Aj??gfw::tTqLKPONMFjihffw?
ct`NMLKJZHGWWDUBRRPONNMKm%ljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqGFDDBBWVUZSRWPONMRKPOmlLjihffw?
ct`NMLKJZHGWWDUBRRPONNMKm%ljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqGFDDBBWVUZSRWPONMRKPOmlLjihffw?
ct``:?KJZHGWWDUBRRPONqLLnlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!DBBWVUZSRWPONMR54mHMLKDCgAF?
DC%A:9!!65:92Vw5uttONqLLnlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!DBBWVUZSRWPONMR54m!ljjihffw?
ct``:?!!6l:jihwfut?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??gfw::tr`64nn!ljjihffw?
ct``:?!!6l:jihwfut?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??gfw::tr`64nn!ljjihffw?
ct``:?!!6l:jihwfut?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??gfw::tr`64nn!ljjihffw?
ct``:?!!6l:jihwfut?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??gfw::tr`64nn!ljjihffw?
ct``:?!!6l:jihwfut?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??gfw::tr`64nn!ljjihffw?
ct``:?!!6l:jihwfut?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??gfw::tr`64nn!ljjihffw?
ct``:?!!6l:jihwfut?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??gfw::tr`64nn!ljjihffw?
ct``:?!!6l:jihwfut?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??gfw::tr`64nn!ljjihffw?
ct``:?!!6l:jihwfut?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??gfw::tr`64nn!ljjihffw?
ct``:?!!6l:jihwfut?rr`L:nIljiFhfBTc!?``N:98Z65t42qjRRgfNMLLK9HHG5DZ2AA??gww:ttN6RKPOHlFKDCBGF?
DCB%:98!6Y:jihwfut?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??gfw::tr`64nn!ljjihffw?
ct``:?!!6l:jihwfut?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??gfw::tr`64nn!ljjihffw?
ct``:?!!6l:jihwfut?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??gfw::tr`64nn!ljjihffw?
ct``:?!!6l:jihwfut?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??gfw::tr`64nn!ljjihffw?
ct``:?!!6l:jihwfut?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??gfw::tr`64nn!ljjihffw?
ct``:?!!6549WDUBRR2bq`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAjihZSRWPOTqL4nn!ljjihffw?
ct``:?!!6549WDUBRR2bq`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAjihZSRWPOTqL4nn!ljjihffw?
ct``:?!!6l:jWDUBRR?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??ZSRWPOr`64nn!ljjihffw?
ct``:?!!6l:jWDUBRR?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??ZSRWPOr`64nn!ljjihffw?
ct``:?!!6HGWWDUBRRPON`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAWVUZSRWPONMR4nn!ljjihffw?
ct``:?!!6HGWWDUBRRPON`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAWVUZSRWPONMR4nn!ljjihffw?
ct``:?!!6HGWWDUBRRPON`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAWVUZSRWPONMR4nn!ljjihffw?
ct``:?!!6HGWWDUBRRPON`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAWVUZSRWPONMR4nn!ljjihffw?
ct``:?8nmHGWihwfutPONqLLnlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!m2AWVUgfw::tNMR54m!ljjihffw?
ct``:?8nmHGWihwfutPONqLLnlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!m2AWVUgfw::tNMR54m!ljjihffw?
ct``:?!!6HGW8hTT4uPON`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAWVUTwwu98NMR4nn!ljjihffw?
ct``:?!!6HGW8hTT4uPON`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAWVUTwwu98NMR4nn!ljjihffw?
ct``:?KJZHGWihwfutPONNMKnlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!DBBWVUgfw::tNMRKPO!ljjihffw?
ct``:?KJZHGWihwfutPONNMKnlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!DBBWVUgfw::tNMRKPO!ljjihffw?
ct``:?KJZHGWWDUBRRPONNMKnlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!DBBWVUZSRWPONMRKPO!ljjihffw?
ct``:?KJZHGWWDUBRRPONNMKnlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!DBBWVUZSRWPONMRKPO!ljjihffw?
ct``:?KJZHGWWDUBRRPONNMKnlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!DBBWVUZSRWPONMRKPO!ljjihffw?
ct``:?KJZHGWWDUBRRPONNMKnlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!DBBWVUZSRWPONMRKPO!ljjihffw?
ct`%qLKJZHGWihwfutPONNMKm%ljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rq6b4DBBWVUgfw::tNMRKPOmlLjihffw?
ct`%qLKJZHGWihwfutPONNMKm%ljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rq6b4DBBWVUgfw::tNMRKPOmlLjihffw?
ct`NMLKJZHGWihwfutPONNMKKIHjj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqGFDDBBWVUgfw::tNMRKPONMFjihffw?
ct`NMLKJZHGWihwfutPONNMKKIHjj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqGFDDBBWVUgfw::tNMRKPONMFjihffw?
ct`NMLKJZ549ihwfut2bqNMKKIHjj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqGFDDBBjihgfw::tTqLKPONMFjihffw?
ct`NMLKJZ549ihwfut2bqNMKKIHjj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqGFDDBBjihgfw::tTqLKPONMFjihffw?
ct``:?!!6l:jihwfut?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??gfw::tr`64nn!ljjihffw?
ct``:?!!6l:jihwfut?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??gfw::tr`64nn!ljjihffw?
ct``:?!!6l:jihwfut?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??gfw::tr`64nn!ljjihffw?
ct`NMLKJZl:jihwfut?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqGFDDBBj??gfw::tr`64nn!ljjihffw?
ct`NMLKJZl:jihwfut?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqGFDDBBj??gfw::tr`64nn!ljjihffw?
ct`NMLKJZl:jihwfut?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rq6F!DBBAVUTSw:99Nr54J22MFjDCBAF?
DC%A:9!!6549Vhwfut?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqGFDDBBj??gfw::tr`64nn!ljjihffw?
ct`NMLKJZl:jihwfut?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqGFDDBBj??gfw::tr`64nn!ljjihffw?
ct`NMLKJZl:jihwfut?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqGFDDBBj??gfw::tr`64nn!ljjihffw?
ct`NMLKJZl:jihwfut?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqGFDDBBj??gfw::tr`64nn!ljjihffw?
ct`NMLKJZl:jihwfut?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqGFDDBBj??gfw::tr`64nn!ljjihffw?
ct`NMLKJZl:jihwfut?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqGFDDBBj??gfw::tr`64nn!ljjihffw?
ct`NMLKJZl:jihwfut?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqGFDDBBj??gfw::tr`64nn!ljjihffw?
ct`NMLKJZl:jihwfut?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqGFDDBBj??gfw::tr`64nn!ljjihffw?
ct`NMLKJZl:jihwfut?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqGFDDBBj??gfw::tr`64nn!ljjihffw?
ct`NMLKJZl:jihwfut?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqGFDDBBj??gfw::tr`64nn!ljjihffw?
ct`NMLKJZl:jihwfut?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqGFDDBBj??gfw::tr`64nn!ljjihffw?
ct`NMLKJZl:jihwfut?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqGFDDBBj??gfw::tr`64nn!ljjihffw?
ct`NMLKJZl:jihwfut?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqGFDDBBj??gfw::tr`64nn!ljjihffw?
ct`NMLKJZl:jihwfut?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqGFDDBBj??gfw::tr`64nn!ljjihffw?
ct`NMLKJZl:jihwfut?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqGFDDBBj??gfw::tr`64nn!ljjihffw?
ct`NMLKJZl:jihwfut?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqGFDDBBj??gfw::tr`64nn!ljjihffw?
ct`NMLKJZl:jihwfut?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqGFDDBBj??gfw::tr`64nn!ljjihffw?
ct`NMLKJZHGWWDUBRRPONNMKKIHjj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqGFDDBBWVUZSRWPONMRKPONMFjihffw?
ct`NMLKJZHGWWDUBRRPONNMKKIHjj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqGFDDBBWVUZSRWPONMRKPONMFjihffw?
ct`NMLKJZHGWWDUBRRPONNMKKIHjj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqGFDDBBWVUZSRWPONMRKPONMFjihffw?
ct`NMLKJZHGWWDUBRRPONNMKKIHjj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqGFDDBBWVUZSRWPONMRKPONMFjihffw?
ct``:?!!6l:jihwfut?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??gfw::tr`64nn!ljjihffw?
ct``:?!!6l:jihwfut?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??gfw::tr`64nnlGFjJIBGF?
cC%%:?8!65:9Vhwfut?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??gfw::tr`64nn!ljjihffw?
ct``:?KJZHGWWDUBRRPONNMKnlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!DBBWVUZSRWPONMRKPO!ljjihffw?
ct``:?KJZHGWWDUBRRPONNMKnlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!DBBWVUZSRWPONMRKPO!ljjihffw?
ct``:?KJZHGWWDUBRRPONNMKnlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!DBBWVUZSRWPONMRKPO!ljjihffw?
ct``:?KJZHGWWDUBRRPONNMKnlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!DBBWVUZSRWPONMRKPO!ljjihffw?
ct``:?!!6l:jWDUBRR?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??ZSRWPOr`64nn!ljjihffw?
ct``:?!!6l:jWDUBRR?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??ZSRWPOr`64nn!ljjihffw?
ct``:?!!6l:jWDUBRR?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??ZSRWPOr`64nn!ljjihffw?
ct``:?!!6l:jWDUBRR?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??ZSRWPOr`64nn!ljjihffw?
ct``:?!!6l:jWDUBRR?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??ZSRWPOr`64nn!ljjihffw?
ct``:?!!6l:jWDUBRR?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??ZSRWPOr`64nn!ljjihffw?
ct``:?!!6l:jWDUBRR?rr`L:nlljj!hffTc!?``u::rw6uWVUTSSRPlOjihgJI%FFDCCAAV?ZYw:98NMR5Jn2GFKDCHGF?
DCBA:9!!Zl:jWDUBRR?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??ZSRWPOr`64nn!ljjihffw?
ct``:?!!6l:jWDUBRR?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??ZSRWPOr`64nn!ljjihffw?
ct``:?!!6l:jWDUBRR?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??ZSRWPOr`64nn!ljjihffw?
ct``:?!!6l:jWDUBRR?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??ZSRWPOr`64nn!ljjihffw?
ct``:?!!6l:jWDUBRR?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??ZSRWPOr`64nn!ljjihffw?
ct``:?!!6l:jWDUBRR?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??ZSRWPOr`64nn!ljjihffw?
ct``:?!!6l:jWDUBRR?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??ZSRWPOr`64nn!ljjihffw?
ct``:?!!6l:jWDUBRR?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??ZSRWPOr`64nn!ljjihffw?
ct``:?!!6l:jWDUBRR?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??ZSRWPOr`64nn!ljjihffw?
ct``:?KJZHGWWDUBRRPONNMKnlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!DBBWVUZSRWPONMRKPO!ljjihffw?
ct``:?KJZHGWWDUBRRPONNMKnlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!DBBWVUZSRWPONMRKPO!ljjihffw?
ct``:?KJZHGWWDUBRRPONNMKnlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!DBBWVUZSRWPONMRKPO!ljjihffw?
ct``:?KJZHGWWDUBRRPONNMKnlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!DBBWVUZSRWPONMRKPO!ljjihffw?
ct``:?!!6l:jihwfut?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??gfw::tr`64nn!ljjihffw?
ct``:?!!6l:jihwfut?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??gfw::tr`64nn!ljjihffw?
ct``:?!!6l:jihwfut?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??gfw::tr`64nn!ljjihffw?
ct`NMLKJZ549ihwfut2bqNMKKIHjj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqGFDDBBjihgfw::tTqLKPONMFjihffw?
ct`NMLKJZ549ihwfut2bqNMKKIHjj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqGFDDBBjihgfw::tTqLKPONMFjihffw?
ct`NMLKJZl:jihwfut?rrNMKKIHjj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqGFDDBBj??gfw::tr`6KPONMFjihffw?
ct`NMLKJZl:jihwfut?rrNMKKIHjj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqGFDDBBj??gfw::tr`6KPONMFjihffw?
ct`%qLKJZHGWihwfutPONNMKm%ljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rq6b4DBBWVUgfw::tNMRKPOmlLjihffw?
ct`%qLKJZHGWihwfutPONNMKm%ljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rq6b4DBBWVUgfw::tNMRKPOmlLjihffw?
ct`%qLKJZHGWihwfutPONNMKm%ljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rq6b4DBBWVUgfw::tNMRKPOmlLjihffw?
ct`%qLKJZHGWihwfutPONNMKm%ljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rq6b4DBBWVUgfw::tNMRKPOmlLjihffw?
ct``:?KJZHGWihwfutPONNMKnlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!DBBWVUgfw::tNMRKPO!ljjihffw?
ct``:?KJZHGWihwfutPONNMKnlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!DBBWVUgfw::tNMRKPO!ljjihffw?
ct``:?KJZHGW8hTT4uPONNMKnlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!DBBWVUTwwu98NMRKPO!ljjihffw?
ct``:?KJZHGW8hTT4uPONNMKnlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!DBBWVUTwwu98NMRKPO!ljjihffw?
ct``:?KJZHGW8hTT4uPONNMKnlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!DBBWVUTwwu98NMRKPO!ljjihffw?
ct``:?KJZHGW8hTT4uPONNMKnlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!DBBWVUTwwu98NMRKPO!ljjihffw?
ct``:?8nmHGWWDUBRRPONqLLnlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!m2AWVUZSRWPONMR54m!ljjihffw?
ct``:?8nmHGWWDUBRRPONqLLnlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!m2AWVUZSRWPONMR54m!ljjihffw?
ct``:?!!6HGWWDUBRRPON`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAWVUZSRWPONMR4nn!ljjihffw?
ct``:?!!6HGWWDUBRRPON`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAWVUZSRWPONMR4nn!ljjihffw?
ct``:?!!6HGWWDUBRRPON`L:nlljj!hffTc!?``u::8qZun4!2SRAm?OjLhgJIHGF!!CAW?UTYRWu8NrLKPnHGFKDCBfF?
DC%%:9!!6YGWWDUSAttrNMLKJ%lGFFggUBc??P`NM9Kw6ut4!2jinm?Ojcu:`rqc5!`lAWVUZSRWPONMR4nn!ljjihffw?
ct``:?!!6HGWWDUBRRPON`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAWVUZSRWPONMR4nn!ljjihffw?
ct``:?!!6HGWWDUBRRPON`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAWVUZSRWPONMR4nn!ljjihffw?
ct``:?!!6l:jWDUBRR?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??ZSRWPOr`64nn!ljjihffw?
ct``:?!!6l:jWDUBRR?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??ZSRWPOr`64nn!ljjihffw?
ct``:?!!6l:jihwfut?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??gfw::tr`64nn!ljjihffw?
ct``:?!!6l:jihwfut?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??gfw::tr`64nn!ljjihffw?
ct``:?!!6l:jihwfut?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??gfw::tr`64nn!ljjihffw?
ct`NMLKJZHGWWDUBRRPONNMKKIHjj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqGFDDBBWVUZSRWPONMRKPONMFjihffw?
ct`NMLKJZHGWWDUBRRPONNMKKIHjj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqGFDDBBWVUZSRWPONMRKPONMFjihffw?
ct`NMLKJZHGWWDUBRRPONNMKKIHjj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqGFDDBBWVUZSRWPONMRKPONMFjihffw?
ct`NMLKnZHGWWDUBRRPONNMKKIHjj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqGFDDBBWVUZSRWPONMRKPONMFjihffw?
ct`NMLKJZl:jihwfut?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqGFDDBBj??gfw::tr`64nn!ljjihffw?
ct`NMLKJZl:jihwfut?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqGFDDBBj??gfw::tr`64nn!ljjihffw?
ct`NMLKJZl:jihwfut?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqGFDDBBj??gfw::tr`64nn!ljjihffw?
ct`NMLKJZl:jihwfut?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqGFDDBBj??gfw::tr`64nn!ljjihffw?
ct`NMLKJZl:jihwfut?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqGFDDBBj??gfw::tr`64nn!ljjihffw?
ct`NMLKJZl:jihwfut?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqGFDDBBj??gfw::tr`64nn!ljjihffw?
ct`NMLKJZHGWWDUBRRPONNMKnlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqGFDDBBWVUZSRWPONMRKPO!ljjihffw?
ct`NMLKJZHGWWDUBRRPONNMKnlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqGFDDBBWVUZSRWPONMRKPO!ljjihffw?
ct`NMLKJZHGWWDUBRRPONNMKnlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqGFDDBBWVUZSRWPONMRKPO!ljjihffw?
ct`NMLKJZHGWWDUBRRPONNMKnlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqGFDDBBWVUZSRWPONMRKPO!ljjihffw?
ct`NMLKJZl:jihwfut?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqGFDDBBj??gfw::tr`64nn!ljjihffw?
ct`NMLKJZl:jihwfut?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqGFDDBBj??gfw::tr`64nn!ljjihffw?
ct`NMLKJZl:jihwfut?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqGFDDBBj??gfw::tr`64nn!ljjihffw?
ct`NMLKJZl:jihwfut?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqGFDDBBj??gfw::tr`64nn!ljjihffw?
ct`NMLKJZl:jihwfut?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqGFDDBBj??gfw::tr`64nn!ljjihffw?
ct`NMLKJZl:jihwfut?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqGFDDBBj??gfw::tr`64nn!ljjihffw?
ct`NMLKJZHGWWDUBRRPONNMKKIHjj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqGFDDBBWVUZSRWPONMRKPONMFjihffw?
ct`NMLKJZHGWWDUBRRPONNMKKIHjj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqGFDDBBWVUZSRWPONMRKPONMFjihffw?
ct`NMLKJZHGWWDUBRRPONNMKKIHjj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqGFDDBBWVUZSRWPONMRKPONMFjihffw?
ct`NMLKJZHGWWDUBRRPONNMKKIHjj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqGFDDBBWVUZSRWPONMRKPONMFjihffw?
ct``:?!!6l:jihwfut?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??gfw::tr`64nn!ljjihffw?
ct``:?!!6l:jihwfut?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??gfw::tr`64nn!ljjihffw?
DC%%:?8!65:92Vw5uu2rqqL:nllGihg%BTc!?``u::rw6ut4!2jiAPONjchgJI%cbaDYBWV?ZYw:P9NMq5J2HlFKDCHAF?
DCB%:98!Zl:jWDUBRR?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??ZSRWPOr`64nn!ljjihffw?
ct``:?!!6l:jWDUBRR?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??ZSRWPOr`64nn!ljjihffw?
ct``:?!!6l:jWDUBRR?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??ZSRWPOr`64nn!ljjihffw?
ct``:?!!6l:jWDUBRR?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??ZSRWPOr`64nn!ljjihffw?
ct``:?!!6l:jWDUBRR?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??ZSRWPOr`64nn!ljjihffw?
ct``:?!!6l:jWDUBRR?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??ZSRWPOr`64nn!ljjihffw?
ct``:?!!6l:jWDUBRR?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??ZSRWPOr`64nn!ljjihffw?
ct``:?!!6l:jWDUBRR?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??ZSRWPOr`64nn!ljjihffw?
ct``:?!!6l:jWDUBRR?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??ZSRWPOr`64nn!ljjihffw?
ct``:?!!6l:jWDUBRR?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??ZSRWPOr`64nn!ljjihffw?
ct``:?!!6l:jWDUBRR?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??ZSRWPOr`64nn!ljjihffw?
ct``:?!!6l:jWDUBRR?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??ZSRWPOr`64nn!ljjihffw?
ct``:?!!6l:jWDUBRR?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??ZSRWPOr`64nn!ljjihffw?
ct``:?!!6l:jWDUBRR?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??ZSRWPOr`64nn!ljjihffw?
ct``:?!!6l:jWDUBRR?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??ZSRWPOr`64nn!ljjihffw?
ct``:?!!6l:jWDUBRR?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??ZSRWPOr`64nn!ljjihffw?
ct``:?!!6l:jihwfut?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??gfw::tr`64nn!ljjihffw?
ct``:?!!6l:jihwfut?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??gfw::tr`64nn!ljjihffw?
ct``:?!!6l:jWDUBRR?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??ZSRWPOr`64nn!ljjihffw?
ct``:?!!6l:jWDUBRR?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??ZSRWPOr`64nn!ljjihffw?
ct``:?!!6l:jWDUBRR?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??ZSRWPOr`64nn!ljjihffw?
ct``:?!!6l:jWDUBRR?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??ZSRWPOr`64nn!ljjihffw?
ct``:?!!6l:jihwfut?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??gfw::tr`64nn!ljjihffw?
ct``:?!!6l:jihwfut?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??gfw::tr`64nn!ljjihffw?
ct``:?!!6l:jihwfut?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??gfw::tr`64nn!ljjihffw?
ct``:?!!6l:jihwfut?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??gfw::tr`64nn!ljjihffw?
ct``:?!!6l:jihwfut?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??gfw::tr`64nn!ljjihffw?
ct``:?!!6l:jihwfut?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??gfw::tr`64nn!ljjihffw?
ct``:?!!6l:jihwfut?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??gfw::tr`64nn!ljjihffw?
ct``:?!!6l:jihwfut?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??gfw::tr`64nn!ljjihffw?
ct``:?!!6l:jihwfut?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??gfw::tr`64nn!ljjihffw?
ct``:?!!6l:jihwfut?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??gfw::tr`64nn!ljjihffw?
ct``:?!!6l:jihwfut?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??gfw::tr`64nn!ljjihffw?
ct``:?!!6l:jihwfut?rr`L:nlljj!hffTc!?``u::rw6ut4!2jinm?Ojcu:`rqc5!`lAj??gfw::tr`64nn!ljjihffw?
ct``:?!!6l:jihwfut?rr`L:nlljj!hffAcbaa`ut:rZYuWml2SRhPfOjchgJI%FbaDYBWV?ZYw:99NSLKPn2GFKDCBAF?
DC%A:98!65492Vw5utP

A saída é citação 49:

"It's alive! It's alive!" - Henry Frankenstein

Proibido anteriormente :"#&'()*+,-./0137;<=>@[\]^_ deopQksvxXyz{|}~

Caracteres restantes:

  • Símbolos: ! $ % : ? `
  • Números: 2 456 89
  • Maiúsculas: ABCD FGHIJKLMNOP RSTUVW YZ
  • Minúsculas: abc fghij lmn qr tu w

Você pode executá-lo com o intérprete de referência Malbolge .

ido_nativo
fonte
13
Esta resposta é incrível! Eu nunca vi um programa útil da Malbonge antes, muito menos um programa tão restrito. Bem feito!
Isaacg
10
Santa mãe de Deus. Como você escreveu isso?
Ingo Bürk 11/11
2
Eu realmente quero perguntar como você chegou a isso? Quero dizer, é obviamente gerado como todos os programas malbolge, mas como você trabalhou nas restrições de caracteres?
Ingo Bürk
23
Acabei de notar que o código está formatado de forma que soletra "Está vivo" em duas colunas. Dang, isso é incrível. Vale a pena uma recompensa, então eu vou colocar uma.
Ingo Bürk
3
@gone_native Detalhes então? Como você fez isso?
Pureferret 7/08/15
37

10. Código de Máquina x86, não usa 9

Quando percebi que os caracteres restantes incluíam os códigos de operação para 'Dec BX' e 'Push BX', concluí que um programa x86 ainda era possível.

Link para o código e o arquivo .com

O código parece uma versão muito mais longa disso:

44444444444444444444444444444444844444444444444444444444444444444444444444444
4444444444444444444444444444484444444444444444444444444444444444444444444444
444444444444444444444444444444444444444444448444444444444444444444444444444
444444444444444444444444444444444444444444444444444444444444448444444444444
4444444444444444444444444444444444444444444444444444444444444444444444444444
4444444448444444444444444444444444444448KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
KKKKKKKKKKKKKKKKKKKSSSSSSSSaKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKSKKKKKKKKKKKK
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKSKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
KKKKKKKKKKKKKKKKKKSSSSSSSSSSSSSSSSSSSSSSSSSSSSKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK

O código, compactado com bzip2e codificado em base 64, é este:

QlpoOTFBWSZTWSPev2AAAC3//IQAAE8AxAVVAljshO2a1CIgAAQCIAACQAKABEgwALtaISjAEwAC
YEwAE/RCKepoDIDQDQhgAATBEqUyYJ6TTCYm0RiYAmjE9y2DggyCjSr7QBKBBfLXbplPpVr0UZ9F
fce4QKIQigD2luNYchgZJSn9wWwWTL+vYVhM0o2SZAgIgLAWoqgeIwgnxBokBQJABPmuigiPswCA
CIqGH0GnHfFahZ987YEg6UpWEhB7jmzKcAOjGZxPEKJIMikhAUX/F3JFOFCQI96/YA==

A saída é citação 18:

"Conseguiu, mãe! Topo do mundo!" - Arthur "Cody" Jarrett

Proibido anteriormente :

?!"#$%&'()*+,-./0123567:;<=>@[\]^_` AbBCdDeEFfgGhHiIjJkLmMNoOpPqQRrsTuUvVWxXyYzZ{|}~

Caracteres restantes:

  • Números: 4 8
  • Maiúsculas: K S
  • Minúsculas: a c l n t w

É o código de modificação automática que cria o código de modificação automática, eis como ele funciona:

O texto é codificado primeiro digitando execuções de '4' terminadas por '8', que são mapeadas para instruções que são efetivamente NOPs para este programa. Em seguida, o BX é decrementado ('K') até ter o valor de onde o código de impressão terminará na pilha. Isso é pressionado 8 vezes ('S') e, em seguida, Pop All, 'a', é executado para configurar SI e DI para mais tarde. O BX é então repetidamente decrementado e pressionado para inserir os valores arbitrários do programa de impressão na pilha (o byte baixo), junto com um byte de lixo (o byte alto). Em seguida, uma longa sequência de decrementos leva BX ao valor 0xAAAD, que é as duas instruções de 1 byte 'Load Word' e 'Store Byte'. Cada par dessas instruções removerá um byte de lixo do código de impressão. Essas instruções são enviadas 28 vezes (o tamanho do programa de impressão), e o restante do arquivo é preenchido com mais instruções de decremento para atuar como NOPs. Esses NOPs serão executados até que a região da memória usada pela pilha seja atingida, que foi substituída pelo código de condensação. O código de condensação é executado, removendo os bytes de lixo no código da pilha (apontado por SI e DI, que foram configurados anteriormente). Finalmente, quando o código de condensação é concluído, o programa de impressão foi armazenado com sucesso na memória na próxima instrução a ser executada.

Código de montagem para gerar o código da máquina (FASM)

org 100h

; "Conseguiu, Ma! Topo do mundo!" - Arthur "Cody" Jarrett

repetir '"'
db '4'
repetição final
db '8'
repita 'M'-1
db '4'
repetição final
db '8'
repita 'a'-1
db '4'
repetição final
db '8'
repita 'd'-1
db '4'
repetição final
db '8'
repita 'e'-1
db '4'
repetição final
db '8'
repita '' -1
db '4'
repetição final
db '8'
repita 'i'-1
db '4'
repetição final
db '8'
repita 't'-1
db '4'
repetição final
db '8'
repita ',' - 1
db '4'
repetição final
db '8'
repita '' -1
db '4'
repetição final
db '8'
repita 'M'-1
db '4'
repetição final
db '8'
repita 'a'-1
db '4'
repetição final
db '8'
repita '!' - 1
db '4'
repetição final
db '8'
repita '' -1
db '4'
repetição final
db '8'
repita 'T'-1
db '4'
repetição final
db '8'
repita 'o'-1
db '4'
repetição final
db '8'
repita 'p'-1
db '4'
repetição final
db '8'
repita '' -1
db '4'
repetição final
db '8'
repita 'o'-1
db '4'
repetição final
db '8'
repita 'f'-1
db '4'
repetição final
db '8'
repita '' -1
db '4'
repetição final
db '8'
repita 't'-1
db '4'
repetição final
db '8'
repita 'h'-1
db '4'
repetição final
db '8'
repita 'e'-1
db '4'
repetição final
db '8'
repita '' -1
db '4'
repetição final
db '8'
repita 'w'-1
db '4'
repetição final
db '8'
repita 'o'-1
db '4'
repetição final
db '8'
repita 'r'-1
db '4'
repetição final
db '8'
repita 'l'-1
db '4'
repetição final
db '8'
repita 'd'-1
db '4'
repetição final
db '8'
repita '!' - 1
db '4'
repetição final
db '8'
repita '"' -1
db '4'
repetição final
db '8'
repita '' -1
db '4'
repetição final
db '8'
repita '-'- 1
db '4'
repetição final
db '8'
repita '' -1
db '4'
repetição final
db '8'
repita 'A'-1
db '4'
repetição final
db '8'
repita 'r'-1
db '4'
repetição final
db '8'
repita 't'-1
db '4'
repetição final
db '8'
repita 'h'-1
db '4'
repetição final
db '8'
repita 'u'-1
db '4'
repetição final
db '8'
repita 'r'-1
db '4'
repetição final
db '8'
repita '' -1
db '4'
repetição final
db '8'
repita '"' -1
db '4'
repetição final
db '8'
repita 'C'-1
db '4'
repetição final
db '8'
repita 'o'-1
db '4'
repetição final
db '8'
repita 'd'-1
db '4'
repetição final
db '8'
repita 'y'-1
db '4'
repetição final
db '8'
repita '"' -1
db '4'
repetição final
db '8'
repita '' -1
db '4'
repetição final
db '8'
repita 'J'-1
db '4'
repetição final
db '8'
repita 'a'-1
db '4'
repetição final
db '8'
repita 'r'-1
db '4'
repetição final
db '8'
repita 'r'-1
db '4'
repetição final
db '8'
repita 'e'-1
db '4'
repetição final
db '8'
repita 't'-1
db '4'
repetição final
db '8'
repita 't'-1
db '4'
repetição final
db '8'
string_end:

data_start:
repita 28 * 2 + 2
dez bx
repetição final
repita 8
push bx
repetição final
popa

repita 0x10000-0xFF21-28 * 2-2
dez bx
repetição final
push bx
repita 0xFF21-0xFECD
dez bx
repetição final
push bx
repita 0xFECD-0xFE4C
dez bx
repetição final
push bx
repita 0xFE4C-0xFDB4
dez bx
repetição final
push bx
repita 0xFDB4-0xFCEB
dez bx
repetição final
push bx
repita 0xFCEB-0xFC7C
dez bx
repetição final
push bx
repita 0xFC7C-0xFC12
dez bx
repetição final
push bx
repita 0xFC12-0xFBB7
dez bx
repetição final
push bx
repita 0xFBB7-0xFAFE
dez bx
repetição final
push bx
repita 0xFAFE-0xFA81
dez bx
repetição final
push bx
repita 0xFA81-0xFA61
dez bx
repetição final
push bx
repita 0xFA61-0xFA21
dez bx
repetição final
push bx
repita 0xFA21-0xF8CD
dez bx
repetição final
push bx
repita 0xF8CD-0xF802
dez bx
repetição final
push bx
repita 0xF802-0xF7B4
dez bx
repetição final
push bx
repita 0xF7B4-0xF760
dez bx
repetição final
push bx
repita 0xF760-0xF6F9
dez bx
repetição final
push bx
repita 0xF6F9-0xF674
dez bx
repetição final
push bx
repita 0xF674-0xF634
dez bx
repetição final
push bx
repita 0xF634-0xF53C
dez bx
repetição final
push bx
repita 0xF53C-0xF480
dez bx
repetição final
push bx
repita 0xF480-0xF442
dez bx
repetição final
push bx
repita 0xF442-0xF346
dez bx
repetição final
push bx
repita 0xF346-0xF2D2
dez bx
repetição final
push bx
repita 0xF2D2-0xF231
dez bx
repetição final
push bx
repita 0xF231-0xF201
dez bx
repetição final
push bx
repita 0xF201-0xF200
dez bx
repetição final
push bx
repita 0xF200-0xF1BE
dez bx
repetição final
push bx

; 28 bytes de código

; feito o armazenamento do código de impressão

repita 0xF1BE-0xAAAD
dez bx
repetição final
repita 28
push bx
repetição final


; feito o armazenamento de código compacto, preencha o espaço restante com 'dec bx'
; para agir como um nop até que o código modificado seja atingido
fill_pos:
repita 0xffff-fill_pos -2
dez bx
repetição final
Sir_Lagsalot
fonte
1
Minha resposta usou instruções 80386 ( IMULde um determinado tipo), por isso pode ser chamado de um "idioma" diferente. Eu nem tentei verificar se o x86 ainda é possível nesta fase - aparentemente é!
precisa saber é
2
E agora todos os números ímpares se foram :(
kennytm
@anatolyg Estou muito feliz em ouvir isso, editei a resposta para refletir isso.
precisa saber é o seguinte
24

61. código de máquina 80386 + DOS, não usa 7

u`t^cGFntlFmFnmaZKuacanftafightainahFrF!aThi2ai2ath$aWaraRLKm!calaPrFWidFntaMFrkinaMufflF8
$k!2!5%B!%!BH%!!%BAPH4?4#P^jAZj#Y1T!1L#1T41T61T?1LA1LC1TE1TI1TJ1TL1TM1TU5
1LW1T^1La1Th1Lj1LuF1Ld1Tn1TO1TZ1TuF1TO1L%1TZ1T:F1TZF1L%5
FF1T%F1T%F1L%Fj$Y1L%1LY1LOkLqEQFF1T%k|q6^1|A1|C5!   ZBBBBA!O

A saída é citação 64:

"Gentlemen, you can't fight in here! This is the War Room!" - President Merkin Muffley

Proibido anteriormente: "'&()*+-,./\03;<=>@X_[sovy pez]{}


Criar um arquivo executável que use apenas ASCII imprimível não é uma tarefa fácil. Felizmente, muitos caracteres não foram proibidos por respostas anteriores, então eu só precisava de alguns patches aqui e ali.

Para executar este programa, copie-o para um arquivo com extensão .come execute-o (as quebras de linha usam o formato DOS 0d 0a; há um TABcaractere no código). É uma pena que os sistemas Windows modernos de 64 bits não suportem código de 16 bits; é necessário um sistema Windows de 32 bits ou DOSBox para executar o código.

Eu usei o debug.comdepurador do DOS para desenvolver o código. Para "montar" o "código fonte", redirecione-o para o depurador. No DOSBox:

debugar <quote.asm

Código fonte:

a100
    jnz 162; jump over the output data, to have it at a convenient address 104
    jz  162; (continued)
    db 'cGFntlFmFnmaZKuacanftafightainahFrF!aThi2ai2ath$aWaraRLKm!calaPrFWidFntaMFrkinaMufflF8',d,a,'$'
    ;   "Gentlemen, you can't fight in here! This is the War Room!" - President Merkin Muffley
    ; Some weird numbers; see explanations below
    dw 216b, 2132
    ; Padding
    db 35
    and ax, 2142
    and ax, 4221
    dec ax
    and ax, 2121
    and ax, 4142
    push ax; push the value 100; we will need it later
    dec ax
    xor al, 3f
    xor al, 23
    push ax
    pop si; now si points to the output message
    push byte ptr 41
    pop dx
    push byte ptr 23
    pop cx
    ; Fix the forbidden characters in the output message
    xor [si+21],dx
    xor [si+23],cx
    xor [si+34],dx
    xor [si+36],dx
    xor [si+3f],dx
    xor [si+41],cx
    xor [si+43],cx
    xor [si+45],dx
    xor [si+49],dx
    xor [si+4a],dx
    xor [si+4c],dx
    xor [si+4d],dx
    xor [si+55],dx
    xor ax, a0d
    xor [si+57],cx
    xor [si+5e],dx
    xor [si+61],cx
    xor [si+68],dx
    xor [si+6a],cx
    xor [si+75],cx
    inc si
    xor [si+64],cx
    xor [si+6e],dx
    xor [si+4f],dx
    xor [si+5a],dx
    xor [si+75],dx
    inc si
    xor [si+4f],dx
    xor [si+25],cx
    xor [si+5a],dx
    xor [si+3a],dx
    inc si
    xor [si+5a],dx
    inc si
    xor [si+25],cx
    xor ax, a0d
    inc si
    inc si
    xor [si+25],dx
    inc si
    xor [si+25],dx
    inc si
    xor [si+25],cx
    inc si
    push byte ptr 24
    pop cx
    xor [si+25],cx
    xor [si+59],cx
    xor [si+4f],cx
    ; Done with the output message
    ; Now fix the code (program patches itself)
    imul cx, [si+71], 45; "calculate" the address of the code
    push cx
    inc si
    inc si
    xor [si+25],dx; message patching was not finished... now it is
    imul di, [si+71], 36; "calculate" the patch value 0x8c
    pop si
    xor [si+41], di; make code "0xcd 0x21" - DOS function call
    xor [si+43], di; make code "0xc3" - terminate the program
    xor ax, 921; select DOS function 9 (output a string)
    pop dx; set dx to point to the output message
    inc dx
    inc dx
    inc dx
    inc dx
    db 41, 21, 4f

rcx 11b
n quote.com
w
q

Algumas notas:

  • A mensagem de saída possui todos os caracteres proibidos com máscara XOR com uma das três máscaras 0x41, 0x23e0x24 . Eu escolhi máscaras que não eram proibidas.
  • O código que produz a saída contém caracteres proibidos, ou pior - bytes não ASCII 0xcde 0xc3. Eles também são mascarados com XOR, portanto, o código deve se modificar.
  • Todos os acessos à memória são realizados com um deslocamento: os ponteiros nunca apontam para o material em si, mas vários bytes mais baixos. O motivo é que, ao usar o acesso à memória sem deslocamento, os códigos de instrução não são ASCII.
  • O personagem ké muito importante aqui: codifica a IMULinstrução de multiplicação. Eu o uso para adquirir valores constantes: por exemplo, a constante 0x216b, quando multiplicada por 0x45, fornece a constante útil 0x01d7, que é um ponteiro (com um deslocamento, como descrito acima) para o código que precisa ser corrigido. De maneira semelhante, a máscara de correção é 0x2132*0x36=0x8c(não se importe com o truncamento).
  • Como descrito acima, a obtenção de constantes é uma grande dor. Para piorar, não assumi nada sobre os valores iniciais dos registros. DOS normalmente define-los a 0, mas nunca se pode ter certeza ... Isso levou a um exercício divertido em inicializar um registrador para 0: and ax, 2142; and ax, 4221.
  • Eu adicionei 2 quebras de linha para "legibilidade" (felizmente, isso não é código-golfe!). Eles são especificados como "xor ax, a0d" no código; deve haver um número par deles, para que o valor de axnão seja alterado.

Editar: não usar mais o _personagem (tempo ruim no post) - não pode usar pop di, portanto, use o diregistro muito menos agora.

anatolyg
fonte
@já foi proibido em 78, escolha outro símbolo, por favor.
Kennytm
3
Adereços, senhor, adereços.
Claudiu
3
"Criar um arquivo executável que use apenas ASCII imprimível não é uma tarefa fácil." Você pode achar este artigo interessante: cs.jhu.edu/~sam/ccs243-mason.pdf
Russell Borogove
22

85. HTML5 (usa no {)

&#x22&#x57&#x68&#x6f&#x27&#115&#x20&#x6f&#x6e&#x20&#x66&#x69&#x72&#115&#x74&#x2e&#x22&#x20&#x2d&#x20&#x44&#x65&#x78&#x74&#x65&#x72

A saída é citada 91.

"Who's on first." - Dexter 

Proibido anteriormente : py3\" ';(

kennytm
fonte
8
O que na terra ...
Ethan Bierlein
19

12. ShaFuck 0.2 (não usa D)

O código-fonte tem exatamente 4.784.128 bytes, contendo todos os caracteres permitidos, exceto D. Parece que:

atawSaa(a×1017)KKla8Kc(a×1017)atawSaa(a×1017)KKla8Kc(a×1017)…atawSaa(a×1017)4cwtrtr(a×1017)

aqui (a × 1017) significa o caractere "a" repetido 1017 vezes. O arquivo compactado bzip2 codificado em base64 (247 bytes) é:

QlpoOTFBWSZTWW9SDOgAgfoPgIRgAAgIACgFFIAAeEAB+52sQ2KYACaCT1VQ0AATUqgBoAUlSTEyemk+qV2BSuKhVc
hIq6AoeKqI5BEe6qI+gUpfOZshoMraraVbDZsFiti1YtEbRawVajWLbCW0mybWwthG0qrZDGrYqirG21o1BrYq2xtD
NNyCI9CoPYAiOuARHABEeqqI6FQfIjiqiOhUHdEYVKvFW2qvv6QtEYjJhpkkxEKo2qKjWjWo1jRGrFUUaNUVaNqNYq
xqNFYtqNtbVFWgzaNhW1WYtaapVPGEpxEdRHYER3iMARH+LuSKcKEg3qQZ0A==

A soma SHA1 do arquivo original deve ser 1250ecf73c61ef93a31c4f7dfaa0a7631ada50bf.

A saída é citação 9:

"Fasten your seatbelts. It's going to be a bumpy night." - Margo Channing

Proibido anteriormente :

?!"#$%&'()*+,-./0123567:;<=>@[\]^_` AbBCdeEFfgGhHiIjJkLmMNoOpPqQRsTuUvVWxXyYzZ{|}~

Caracteres restantes:

  • Números: 4 8 9
  • Maiúsculas: K S
  • Minúsculas: a c l n r t w

ShaFuck é uma variante do Brainfuck. Ele pega cada pedaço de 1024 bytes, calcula o resumo do SHA-1 e usa a saída de 20 bytes como um programa Brainfuck. Conforme explicado na postagem do blog vinculada ao wiki, há uma "vulnerabilidade" na v0.2 que a saída SHA-1 do formulário:

valid-bf-program[(garbage)]valid-bf-program

é aceito. Isso permite uma conversão direta de um comando brainfuck para um pedaço de 2048 bytes. O codificador usa a- zcomo o conjunto de caracteres, o que não é adequado para nós. Então, precisamos escrever um "mineiro". Agora, existem 13 caracteres válidos disponíveis. Assumindo que a saída SHA-1 é aleatória, se queremos corrigir os 3 primeiros bytes, isso corresponde a 3 × log₁₃ (256) ~ 6,5 caracteres de entrada. Portanto, precisamos iterar todas as seqüências de 7 caracteres feitas com esses 13 alfabetos:

import hashlib
import itertools

characters = b'aclnrtwDKS489'

starts = {b'+>[', b'->[', b'.>[', b'.<[', b'+<[', b'-<[', b'>[', b'<['}
ends = {b']<+', b']<-', b']<.', b']>.', b']>+', b']>-', b']>', b']<'}

for i, group in enumerate(itertools.product(characters, repeat=7)):
    seq = bytes(reversed(group)) + b'a'*(1024-7)
    sha = hashlib.sha1(seq).digest()

    for s in starts:
        if sha.startswith(s):
            starts.remove(s)
            print(seq, sha)
            break

    for e in ends:
        if sha.endswith(e):
            ends.remove(e)
            print(seq, sha)
            break

    if i % 1000000 == 0:
        print('***', i, seq[:7])

Poderíamos rapidamente obter esses equivalentes:

>[(garbage)  = atawSaaaaaaa…
(garbage)]<- = 9t9nctaaaaaa…
(garbage)]<+ = KKla8Kcaaaaa…
(garbage)]<. = 4cwtrtraaaaa…

- = >[(garbage)]<- = atawSaaaaaaa…9t9nctaaaaaa…
+ = >[(garbage)]<+ = atawSaaaaaaa…KKla8Kcaaaaa…
. = >[(garbage)]<. = atawSaaaaaaa…4cwtrtraaaaa…

Então, finalmente, temos este codificador direto:

def encode(quote):
    SUFFIX = 'a' * (1024 - 7)
    PREFIX = 'atawSaa' + SUFFIX
    MINUS = PREFIX + '9t9ncta' + SUFFIX
    PLUS = PREFIX + 'KKla8Kc' + SUFFIX
    DOT = PREFIX + '4cwtrtr' + SUFFIX
    value = 0
    for c in quote:
        char = ord(c)
        if char > value:
            yield PLUS * (char - value)
        elif char < value:
            yield MINUS * (value - char)
        yield DOT
        value = char

with open('1.txt', 'w') as f:
    for seg in encode('''"Fasten your seatbelts. It's going to be a bumpy night." - Margo Channing'''):
        f.write(seg)
kennytm
fonte
1
SUFFIX = 'a' * (1024 - 7)- no caso de 1024 - 7nem sempre ser 1017? :-)
Joe
1
@ Joe: Sim, é.
Kennytm
1
Droga, lá vai a minha resposta # 2.
precisa saber é o seguinte
@gone_native Eu também tinha isso. Mas ainda tenho outra resposta # 2 ...
jimmy23013
1
@ Joe, (1024 - 7)é mais legível.
Vi.
18

87. Ook !, não usa ;

Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook!Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook!Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook!Ook.Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook.Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook!Ook.Ook.Ook.Ook!Ook.Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook.Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook!Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook!Ook.Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook!Ook.Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook!Ook.Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook.Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook!Ook.Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook!Ook.Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook.Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook.Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook!Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook!Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook!Ook.Ook!Ook!Ook!Ook!Ook!Ook.Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook.Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook!Ook.Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook!Ook.Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook.Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook!Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook!Ook.Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook!Ook.Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook!Ook.Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook!Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook!Ook.Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook!Ook.Ook!Ook!Ook!Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook!Ook.Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook!Ook.Ook!Ook!Ook!Ook!Ook!Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook!Ook.Ook!Ook.Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook.Ook!Ook!Ook!Ook.Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook!Ook.Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook.Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook.Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook!Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook!Ook.Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook!Ook.Ook.Ook.Ook!Ook.Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook.Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook.Ook!Ook!Ook!Ook!Ook!Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook!Ook.Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook!Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook!Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook!Ook.Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook.Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook!Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook!Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook!Ook.Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook.Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook!Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook.Ook!Ook.

A saída é citação 84:

"Oh, no, it wasn't the airplanes. It was Beauty killed the Beast." - Carl Denham

Proibido anteriormente: py3\" '

stevecross
fonte
Você escreveu isso sozinho?
Beta Decay
4
Eu escrevi um programa Java que converte uma String em um Ook! programa que gera a String. Mas ele não usa loops, apenas aumentando e diminuindo.
stevecross
1
@feuerball então ... isso é realmente ineficiente Ook! programa que você gerou lá. (em termos de espaço)
tomsmeding
2
Eu sei, mas pelo menos faz o que deveria fazer.
stevecross
1
Essa é uma combinação perfeita de linguagem e citação. Acho que você leu Imagens em Movimento ?
TRiG
18

76. oOo CODE , não usa-

WhaT_the_FuCk_iS_thE_coDe_i_Am_rEadIng_herE?
iT_AcTuaLlY_WorkS_liKe_oTHer_VaLid_CodE_in_The_ProGraMming_lAnGuaGe_CAlleD_oOO_CoDe
I_oNlY_wrOte_The_codE_hEre_To_MAke_iT_LoOk_bEttEr
tHe_cOde_CouLd_bE_wrIttEn_iN_loTS_oF_tHE_lETtER_o
BUt_I_DeCIdED_tO_MaKE_ReAdinG_iT_a_niceR_eXPeRIeNCe
NOw_I_am_RuNNing_Out_OF_cOdiNg_tIme_aNd_Fun_thiNgS_To_WRiTE
tHerEfORe_i_dECiDed_To_dO_thE_reSt_oF_thE_thIng_WitH_juSt_tHe_lETtEr_o
So_eNjoY
OoOooOoooOoOooOooOoooooOoOooOoOOoooOooOOooOoOooOoooooOoOOoOOoOOoOOoOOoOOoOooOoOOoooOOoOooOOoOooOooOooOooOooOooOooOooOooOooOooOOoOoooOoOooOooOoooooOoOooOoOOoooOooOOooOoOoooooOoOOoOOoOooOoOOoooOoOOoOOOoOooOOoOoOoOoOooOooOoooooOoOooOoOOoooOoOOoOOoOOOoOoooOoOooOooOooOoooooOoOooOoOOoooOoOOoOOOoOoOoOoOoooooOoOOoOOoOooOoOOoooOoOOOoOoOOoOOoOOoOOoOOoOOoOOoOOoOOoOOoOOOoOOoOoOOoOOoOOOoOoOOOoOoooOoOoOOoOoooOooOooOooooOoOOoooOoOOOoOooOooOooOooOooOooOooOooOooOooOooOooOOoOoOOoOOoOOoOoOoOoooooOoOOoOooOoOOoooOOoOooOooOooOooOooOooOooOOoOoOOoOOoOOoOOoOOoOOoOOoOOoOOoOOoOOOooOoOoooooOoOOoOOoOOoOooOoOOoooOooOooOOoOooOooOooOooOooOooOooOooOooOooOooOooOOoOooOooOOoOooOoooOoOooOoooooOoOOoOOoOooOoOOoooOOooOoOooOooOoooooOoOOoOooOoOOoooOoOOoOOOoOoOOoOoOoOoooooOoOOoOooOoOOoooOOoOooOoooOoOooOoooooOoOOoOOoOooOoOOoooOooOooOOoOoOoOoOooOooOoooooOoOooOoOOoooOOoOoOoOoOoooooOoOOoOOoOooOoOOoooOOoOooOoooOoOooOooOoooooOoOooOoOOoooOooOOoOoOoOoOoooooOoOOoOooOoOOoooOOoOoooOoOooOooOoooooOoOooOoOOoooOoOOoOOoOOoOOOoOoOOoOOoOOoOOoOOoOOoOOoOOOoOooOooOooOooOooOooOooOooOooOooOOoOooOooOooOooOooOooOooOooOooOooOooOooOOoOoOOoOOoOOoOOoOOoOOoOOoOOoOOoOOoOOoOOoOOOo

A saída é citação 78:

"Open the pod bay doors, HAL." - Dave Bowman

Proibido anteriormente :py3\" ';({s[)<+.@=

Não publicarei outro equivalente / derivado de BF. Promessa.

EDIT: Eu atualizei o código para ser mais legível. (risos) Não afeta nenhum personagem proibido.

Eu usei essa ferramenta para gerar meu BF puro. Eu o converti para oOo CODE:

'<lots of bf code>'.replace(/>/g,'ooo').replace(/</g,'ooO').replace(/\[/g,'oOo').replace(/\]/g,'oOO').replace(/-/g,'Ooo').replace(/\+/g,'OoO').replace(/\./g,'OOo')

E então usei esse script Python para obter a versão "legível" do puro oOo CODE e um texto de entrada:

ooocode = '<lots of oOo CODE>'
alphabet = [chr(x) for x in range(ord('A'), ord('Z') + 1)] + [chr(x) for x in range(ord('a'), ord('z') + 1)]
if len(ooocode) % 3: print("INVALID CODE")
inp = input()
index = 0
while inp != '':
    for char in list(inp):
        if char in alphabet:
            case = ooocode[index]
            if case.upper() == case:
                print(char.upper(), end='')
            else:
                if char.lower() in 'py3\\" \';({s[)<+.@=':
                    print("INVALID INPUT")
                else:
                    print(char.lower(), end='')
            index += 1
        elif char in 'py3\\" \';({s[)<+.@=':
            print("INVALID INPUT")
        else: print(char, end='')
    print("")
    inp = input()
print(ooocode[index:])
PurkkaKoodari
fonte
2
E por alguma razão, eu sempre leio com uma voz fantasma.
ASCIIThenANSI
18

9. Addleq (não usa t)

Usa sqasm.cppna página esolang para montar. Requer plataforma não-Windows de 64 bits para funcionar corretamente.

Existem exatamente 64 guias e 64 novas linhas (sem novas linhas à direita). Ufa.

8   448
448
88  448
448
88  444
444
448 444
444 844
448 844
844 848
88  848
8   848
84  884
884
8   884
8   4844
4844
884 4844
88  488
488
8   488
488
444 488
488 4444
4444
8   4444
4444    888
88  888
44  4488
448 88888888888888888888
844 4488
4444    4484
8   4484
88  4448
4484    4448
844 88888888888888888888
4488    88888888888888888888
4484    88888888888888888888
888 88888888888888888888
488 88888888888888888888
444 88888888888888888888
848 88888888888888888888
884 88888888888888888888
4448    88888888888888888888
4444    88888888888888888888
4844    88888888888888888888
444 88888888888888888888
844 88888888888888888888
4488    88888888888888888888
4484    88888888888888888888
888 88888888888888888888
488 88888888888888888888
448 88888888888888888888
444 88888888888888888888
44  88888888888888888888
444 88888888888888888888
848 88888888888888888888
884 88888888888888888888
4448    88888888888888888888
4444    88888888888888888888
4844    88888888888888888888
444 88888888888888888888
844 88888888888888888888
4488    88888888888888888888
4484    88888888888888888888    4   888 88888888888888888888    4   8888    8888    88888888888888888888

A saída é citação 22:

"Bond. James Bond." - James Bond

Proibido anteriormente :

?!"#$%&'()*+,-./01235679:;<=>@[\]^_` AbBCdDeEFfgGhHiIjJkLmMNoOpPqQRrsTuUvVWxXyYzZ{|}~

Remanescente:

  • Números: 4 8
  • Maiúsculas: K S
  • Minúsculas: a c l n w

"Addleq" um OISC é semelhante ao "Subleq", mas usa adição em vez de subtração.

Construindo "-1"

A saída no Addleq funciona escrevendo no endereço de memória -1. Como todos os números ímpares são proibidos, não podemos construir um -1 por meios normais. No entanto, podemos induzir o montador a criar um -1:

int str2int(const string &s)
{
        int ret=0;
        sscanf(s.c_str(),"%d",&ret);
        return ret;
}

Aqui sscanf(s, "%d", &ret)se comporta como ret = strtol(s, NULL, 10);(C11 §7.21.6.2 / 12) e, quando a entrada strtolexceder , retornará LONG_MAX (C11 §7.22.1.4 / 8). Assim, se sizeof(long) > sizeof(int)deveríamos obter ret == -1. No entanto, em plataformas como, sizeof(long) == sizeof(int)por exemplo , plataformas de 32 bits ou Windows, obteríamos 0x7fffffff tornando a solução acima inválida.

Salvando guias com o assembler

No addleq de baixo nível, cada instrução tem três números. Como temos apenas um orçamento de 128 espaços em branco, precisamos imprimir a sequência inteira com instruções 129/3 = 43. Isso é completamente insuficiente, pois a cotação mais curta (escolhida aqui) tem 32 caracteres.

No entanto, o assembler suporta alguma notação abreviada:

  1. Se uma linha contiver apenas 2 números, ela fornecerá automaticamente o terceiro número como o endereço da próxima instrução
  2. Se uma linha contiver apenas 1 número, esse número será copiado e um terceiro número será fornecido usando a regra nº 1.

A regra nº 2 foi projetada para "subleq" para zerar rapidamente um endereço. Mas, para "addleq", permite dobrar um valor sem nenhuma guia.

Isso nos permite encaixar mal o programa inteiro em 129 números.

Criando números

A cotação é escolhida porque é curta e possui muitos caracteres duplicados. Os números que precisamos criar são:

32  space
34  "
45  -
46  .
66  B
74  J
97  a
100 d
101 e
109 m
110 n
111 o
115 s

Poderíamos usar números no endereço 4, 8, 44, 48, 84, 88, .... A regra 1 do montador já colocou "9" em * 8 e "45" em * 44, portanto, apenas os usaremos. (é bom que sejam números ímpares). Além disso, tentaremos ajustar "-1", "8" e "44" nesses endereços movendo os cálculos. O resultado é a primeira metade do código:

# *448 = 34 = (9×2 - 1)×2 = (*8×2 + *88)×2
8   448
448
88  448     # Here we get *8 == 9.
448

# *444 = 32 = -2 + 34 = (*88×2) + *448
88  444
444
448 444

# *844 = 66 = 32 + 34 = *444 + *448
444 844
448 844

# *848 = 74 = 66 + 9 - 1 = *844 + *8 + *88
844 848
88  848
8   848

# *884 = 97 = 44×2 + 9 = *884×2 + *8
84  884
884
8   884     # Here we get *44 == 45.

# *4844 = 115 = 9×2 + 97 = *8×2 + *884
8   4844
4844
884 4844

# *488 = 46 = (-2 + 9)×2 + 32 = (*88×2 + *8)×2 + *444
88  488
488
8   488
488
444 488

# *4444 = 101 = 46×2 + 9 = *488×2 + *8
488 4444
4444
8   4444

# *888 = 100 = 101 - 1 = *4444 + *88
4444    888
88  888

# *4488 = 111 = 45 + 66 = *44 + *844
# The line in the middle prints '"', and also set *88 == -1
44  4488    # Here we get *84 == *44
448 88888888888888888888    # Here we get *88 == -1
844 4488

# *4484 = 110 = 101 + 9 = *4444 + *8
4444    4484
8   4484

# *4448 = 109 = 110 - 1 = *4484 + *88
88  4448
4484    4448

A última linha

Depois que todos os números forem construídos, podemos imprimir cada caractere. O programa final, no entanto, possui mais de 67 linhas, duas a mais. Portanto, devemos combinar as três últimas linhas:

# From:
4484    88888888888888888888
888 88888888888888888888
8888    8888    88888888888888888888

# To:
4484    88888888888888888888    4   888 88888888888888888888    4   8888    8888    88888888888888888888

Como a linha possui mais de 2 números, precisamos fornecer manualmente o terceiro parâmetro das instruções. Isso significa que trocamos cada nova linha por 2 guias. Felizmente, antes da combinação, usamos 60 guias, então o resultado final mal passou nos requisitos.

kennytm
fonte
1
Que lista impressionante de coincidências! Parece que quase tudo fazia parte do seu plano astuto.
Anatolyg
@ anatolyg: Esta é realmente a terceira versão do código :), as equações são reescritas várias vezes para minimizar o número de linhas. As versões mais antigas têm ~ 3 linhas a mais.
kennytm
Seria ainda melhor se em vez de 4e 8houvesse 0e 7.
Vi.
@Vi. Ou pelo menos 8 e 9 ... Parece que ainda existe alguma linguagem baseada em número.
precisa saber é o seguinte
17

89. PHP, não usa

$j=chr(46);$k=chr(0x20);$l=chr(0x22);$z=chr(112);$q=<<<H
${l}I${k}feel${k}the${k}need${k}-${k}the${k}need${k}for${k}s${z}eed!$l$k-${k}Lt.${k}Pete$k${l}Maverick$l${k}Mitchell${k}and${k}Lt.${k}Nick$k${l}Goose$l${k}Bradshaw
H;
echo$q;

A saída é citação 94:

"I feel the need - the need for speed!" - Lt. Pete "Maverick" Mitchell and Lt. Nick "Goose" Bradshaw

Proibido anteriormente :py3\"

es1024
fonte
24
Você maldito homem mau.
Joshpbarron
Alguém bloqueia 'agora !!!
Optimizer
7
@Optimizer done
Martin Ender
16

81. PI , não usa<

9.1415926525897922284626422822795028841971692992751058209749445927078164062862089986280048252421170679821480865102822066470928446095505822017252594081284811174502841027019285211055596446229489549200819644288109756659224461284756482227867801652712019091456485669224602486104542266482122906072602491412727245870066062155881748815209209628292540917152642678925902600112005205488204665212841469519415116094220572702657595919520921861172819026117921051185480744622799627495672518857527248912279281820119491298226720624406566420860212949462952247271907021798609427027705292171762921767522846748184676694051220005681271452605608277857712427577896091726271787214684409012249524201465495852710507922796892589225420199561121290219608640244181598126297747712099605187072110499999982729780499510597217228160962185950244594552469082026425222082522446850252619211881710100001278287528865875222082814206171776691472025982524904287554687211595628628822527875907519577818577805221712268066120019278766111959092164201989280952572010654858622788659261522818279682202019520252018529689957726225994128912497217752804791215155748572424541506959508295221168617278558890750982817546274649292192550604009277016711290098488240128582616025627076601047101819429555961989467678274494482552797747268471040475246462080466842590694912902126770289891521047521620569660240580281501925112522824200255876402474964722629141992726042699227967822547816260092417216412199245862150202861829745557067498085054945885869269956909272107975092029552211652449872027559602264806654991198818247977525662698074265425278625518184175746728909777727928000816470600161452491921722172147722501414419725685481612611572525521224757418494684285211219071941411145477624168625189815694855620992192221842725502542568876717904946016514668049886272127917860857841818279679766814541009518817861609506800642251252051171929848960841284886269456042419652850222106611864067442786220891949450471207107869609560640719172874677646575729624128908658526459958144904780275900994657640789512694681981525957098258226205224894077267194782684826014769909026401161944074550050682004962524517490996514014298091906592509072216964615157098580874105978859597729754989001617509284681582686818689427741559918559252459519594110499725246808459872716446958486518167162226260991246080512418841904512441065497627807977156914059977001296160894416948685558484060504220722258284886481584560285060168427094522674676788952521085225499546667278209864565961160548862005774564980055906045681740241125150760694794510965960940252288797108941456691468672287489405601015045086179286809208747609178249285890097149096759852612655497818921297848216829989487226588048575640142704775551121796414515217462141645428584447952658678210511411547157195211114271661021159695162114429524849071871101457654005902799044007420070105785090621980874478084784896800214457108687519405064002184501910484810050706146806749192781911979499520614196644287544406447451247181921799985910159195618146751426912297489409071864942219615679452080951465502252216028819101420917621178559566189177870810190697920771467221825625996615014215010680184477145492026054146659252014974428507125186660021124140881907104860017046496514509057962685610055081066587969981605747060840525714591028970641401109712062804090097595156771577004200078699060072005587601764594218741251471205429281918261861258674215791984148488291644706095752706957220917567116722910981690915280175506712748582222871825209252965725121081579151169882091444210067510114671101141267111169908658516198115019701651511685171417657618151556508849099898599821871455281116055076479185058902261854896021029000898570642046752590709154814165498594616071802709819940099244889575712828905920200260972997120844005742654895822911912597461667105816041428118810120182490175898524174417029112765618091771444010707469211201910020000080197621101100449290215160842444859607669848952286847841245526582141449576857262452441892029686426242410771226978028071189154411010446821252716201052652272111660196665571092547110557851760466820650109896526918620564769012570586056620185581007295606598764861179104511488501461116576867502494416680096265797877185560845529654126654085006140444018586769751456614068007002078776591044017127494704205622005089945610140711270004078547002699090814546646458807972708266840654228587856981052158089110657574067954571617752542021149557615814002501262285941102164715509792592109907965471761255176567511575178296664547791745011299614890104619947112962107140407518957059614589019089710111790429782856475002001986915140287080859904801094121472210179476477726224142548545400021571850061422881075850400600217518297986622471721591607716692547487589866549494501146540628421661917900197692656721461851067160965712091807618127166416274888800786925602902284721040117211860820419000422966171196177921117575114959501566049611862947265470642520081770067515906705020507280540567040086740510622224771589150495009844489000096040878076922599297805419541447477441842641298608099888687411260472156951621965864571021611598191195167151812974167729478672422924654166800980676928218280689964004824154017014161149658979409241217896907069779422062508221688957080798620001590776471651228905786015881617557829705200446042815126272007040146501977774160419906655418765979292144195215411418994854447145671811624991419111814809277771018618771411772075456545122077709212019051660962804909261601975988281610020166606528619026686006062705676000544776280050450777205547105859548702790814056240145171806246446267945612754181440785202262542127819449751824172058151114771199260618111467768796959701098119110771098704085910074641442822772604659470474587847787201927715280701767907707157210444700605700700492406901108050490160128404251219256517980694114528015147012047816417885185290928545201165819141965621149141415956258658655705526904965209858011850722426482919728584781161057777560688876446248246857926019515277148010480290058760758251047470916409610626760449256274204208020856611906254540072101505958450687724602901618766795240616042522577195429162991900645507799140070404028752628889609958794757291746426057455254079091451457111469410911949525191076020825202618798521887705842972591677812149699009019211697172727847684726860849001177024242916511005005168121164150189517029891922114517220118128069650117844087451960121228599171621110171144484640900890644954440061986907548516026027505298049187407866808818008510228004508504860825009002100219715518400605455007668282949004127765527929751754612955984684494618104746119966518581518420568511862186725211402810871121282789212507712629461229561989898915821167456270102181564622010496715188190970008119800497040720961006854066441949509790190699659552452005450580685501956720229219119119185680144901982059551002261505061920419947455085908102242955449597785779024742161727111724641415419478221818528624085140066604410258885698670540154706965747458550002521142107101545940516551790686627000799585115625784022988270720198987571415957811196458440059408750681216028764962867446047746491599505497274256269010490277819868259181465741268049256487985561451721478671101904688080406046555794986419270561872911748721120807601120029911067908627089408799062016295154100714248928007220126901475466847654576164774794675200490757155527819655621222926406160116158155907422020201187277605277219005561484255518792510141511984425122141576200610642506090497500865627109505919465897514101004822769006247405060256916078154781811528406679570611086150215044521274759245449454246828860611408414861776700961207151249140410272518607648216141411462151897576645216411767969011495019108575984421919862916421909949072062046468441170940026591840440780510008945257420995082965912285085558215725001071257012668002402929525220118726767562204154205161841604847565169998116141010029960780869092916040288400269104140792886215078424516709087000699282120660418471806555567252522567522861291042487761825829765157959847015622262914860014158722980514989650226291748788202714209222245119856264766914905562842501912757710284027998066165825488926488025456610172967026640765590429099456815065265105171829412701169110785178609040708667114965580404047690085781711086455870678120014587687126600489109095620099090610010291616152881484479099042517472261948045759114911405297614757481191567091101177517210080115590248510906692017671922011229094114676851422144771790907517004406619910400075111705471918550464490260655128162288244625759160000091072250807421821408805086572917715096828874782656995995744906617585441475221970968140800515598491754171818819994469748676265516582765848158845114277568790029095170281529716144562129640415211176006651012412006597558512761785818292041974844216080071910457618912049229279650198751872127267507981255470958904556057921221000546697499215610254947802490114195212182815109114079070860251522742995818072471625916685451000120948049470791191502670400282441860414262629548000448002670496248201792896476697585184271414251702969214889627668440121260927524960157996469256504916818160900121809290459588970695065049406004021665440755890045602882250545255640564482465151875471196218440965825007540885690941100015095261790780029741207665147909425902989695946995565761218656196722786256256125216420862869222104274889218654164802296780705765615144612046927906821207188177814211562821608961208068222468012248261177185896181409181901671672220888121511755600072798094004152970028780076670944474560104556417254070906979096122571429894671540578468788614445812014590571984922528471605049221242470141214780570455105008019086996000027604787081081754501192071412254908661918119529425786905076411006181519814189141596111854147546495569781018290097164651408407007070604112070599840452251610507027056205266012764848008407611800100527902054274628654006026745228651057065874882256981579267897669742205750596854408697450201410206724585020072452256426511410559240190274216248419140159989515194590944070469120914091870012645600162174288021092764579110657922955249887275846101264816999892256959688159205600101655256175678566722796619885782794848855814197518744545512965604404800966420557982906804052202770984294202500022576041807009476994159791594500069752148290066555661567874640054666564165474217045902521229542529169414599041608751201868179170214888689479151071617852902145292440771659495610510074210871426114974595615118498711757047101787957110422969066670214498617464595280824569445789772

A saída é citação 81:

"Hello, gorgeous." - Fanny Brice

Proibido anteriormente: py3\" ';({s[)

O que ? Pi sem 3?
Meu intérprete aqui (desculpe pela interface rudimentar da interface do usuário, com base nesta resposta ): http://migl.io/projects/pi/index.php

Michael M.
fonte
16

79. Perl 5, não usa .

$PRINT=lc
q|PRINT|and$Q=chr
0x22
and$C=q|C|and$ARPE=lc
q|ARPE|and$W=chr
0x20
and$DIEM=q|diem|and$T=chr
46
and$SEIZE=q|Seize|and$THE=q|the|and$DAY=lc
q|DAY|and$BOYS=lc
q|BOYS|and$MAKE=q|Make|and$YOUR=lc
q|YOUR|and$LIVES=lc
q|LIVES|and$EXTRA=lc
q|EXTRAORDINARY|and$JOHN=q|John|and$KEAT=q|Keating|and
eval
qq|$PRINT
q^$Q$C$ARPE$W$DIEM$T$W$SEIZE$W$THE$W$DAP,$W$BOYS$T$W$MAKE$W$YOUR$W$LIVES$W$EXTRA$T$Q$W-$W$JOHN$W$KEAT^|

A saída é citação 95:

"Carpe diem. Seize the day, boys. Make your lives extraordinary." - John Keating

Proibido anteriormente: py3\" ';({s[)<+


Como uma linguagem TMTOWTDI, o Perl oferece muitas maneiras de contornar as restrições. O método usado aqui é construir a instruçãoprint "that quote" como uma string e avaliá-la.

Embora 'e "seja banido, o Perl também permite expressar seqüências usando q«…»e qq«…»respectivamente. E embora ;seja proibido, como todas as declarações não são falsas, poderíamos usar andpara encadear declarações. Desde as letras maiúsculas P, Y, Sainda são permitidas, poderíamos colocar p, y, sna seqüência final, utilizando a lcfunção (em minúsculas), enquanto chrpode ser usado para colocar os símbolos "e .

kennytm
fonte
Posso estar entendendo mal as regras, mas isso usa tanto P e Y quanto S
GeoffWilson 29/04
1
@ G_Wilson: Maiúsculas e minúsculas são diferentes.
Kennytm
Desculpe, minha culpa. Esqueci que eles têm valores ASCII diferentes.
GeoffWilson
"todas as declarações não são falsas": você quer dizer que todas essas declarações não são falsas, certo? ( $foo=0é falso, é claro.) De qualquer forma, muito legal; +1.
Msh210
@ msh210 Sim, todas essas declarações não são falsas.
Kennytm
15

54. CaneCode (usa no Q)

(Novas linhas e espaços não são necessários.)

                                 111111111111
                            1111111111111111111111
                         8111111111111111111111111111
                      111111111111111111111111118111111
                    1111811111111811111111111822222222222
                   222222222222222222222222222222222222222
                 222222222222222222222222222222222281111111
               111111111111111111111111111111111111111111111
              11111111111111822222222222222222222222222222222
             2222222222222222222222222222222281111111111111111
            111111111111111111111111111111111111111111111111111
           11111111118222281111181111111828222222222222222822222
          2222222222222222222222222222222222222222222222222222822
         222222222281111111111                 1111111111111111111
        1111111111111111111                      11111111111111111
       111111111111111111                          1111822222222222
      222222222228111111                            118111111111118
      2222222222222222                               222222222222222
     2222222222222222                                 22222222222222
    2222222222222222                                   22222228111111
    111111111111111                                    11111111111111
   111111111111111                                      1111111111111
   11822222222222                                        2222222222222
   2222222222222                                         2222222222222
  22222222222222                                         2811111111111
  1111111111111                                           111111111111
 1111111111111                                            1111111111111
 1111111111111                                             118222281111
 181111111828                                              222222222222
 222822222222                                              222222222222
 222222222222                                              222222222222
2222222222282                                              2222222222222
8111111111111                                              1111111111111
1111111111111                                              1111111111111
1111118111111                                              1111111111111
1118111111822                                               222222222222
2222222222222                                               222222222222
2222222222222                                               222222222222
2222222222222                                               222222228111
1111111111111                                              1111111111111
1111111111111                                              1111111111111
1111111111811                                              1111118111118
2222222222222                                              2222222222222
 222222222222                     2222                     2222222222222
 2222222222222                  22281111                   111111111111
 1111111111111                 1111111111                 1111111111111
 11111111111111                11111111111                8222222222222
  2222222222222               2222222222222              22222222222222
  22222222222222              22222222222222            22228111111111
   1111111111111              111111111111111           11111111111111
   11111111111111             1111111822282222         81111111111111
    11118222222222             2222282222222222      2222222222222222
    222222222222222            22222222222222222    2222222222811111
     111111111111111            11111111111111111  1111111111111111
     1111111111111111           11111111181811111822222222222281811
      11182222222222222          222222222222222222222222222222222
       22222222222222222          2222222282222222811111111111111
       1111111111111111111         11111111111111111111111111111
        1111111111111111111111111118222222222222222222228111111
         11111111182222222222222222222222222222222222222222222
          222222222222222222222222222222222222222281822811111
           1111111182222222222222811111111111111111111111111
            111111111111111181111111111111111111111181111111
             111822822228222222222222222222222222222222222222
               22222222222222222222222222222222281111111111111
                11111111111111111111111111111111111118111111111
                  1111118181111111811111818111111118222222222222
                   2281111111111181111118222222222222222222222222
                      22222222222222222222222222222222222222222222
                        222222281111111111111    1111111111111181111
                            111111111111          1111111811811111111
                                                    822222222222222222
                                                     222222222222222222
                                                      222222222222222222
                                                       222222222222222222
                                                        222281111111111111
                                                         111111111111111111
                                                           1111111111111111
                                                            111811111111111
                                                             11111111111111
                                                               11118222222
                                                                2222222811
                                                                 11111811
                                                                   1118

A saída é citação 71:

"Wait a minute, wait a minute. You ain't heard nothin' yet!" - Jakie Rabinowitz/Jack Robin

Proibido anteriormente :"#&'()*+,-./037;<=>@[\]^_ deopsvxXyz{|}~


CaneCode é apenas mais um derivado de BF, com o mapeamento:

  • 1 → +
  • 2 → -
  • 3 → <
  • 4 →>
  • 5 → [
  • 6 →]
  • 7 →,
  • 8 →.

Apenas uma observação: os caracteres restantes são:

  • Símbolos: ! $ % : ? `
  • Números: 12 456 89
  • Maiúsculas: ABCDEFGHIJKLMNOP RSTUVW YZ
  • Minúsculas: abc fghijklmn qr tu w
kennytm
fonte
18
Tenho certeza de que eu ver um Q lá
de Calvino Hobbies
14

6. Subskin (não usa K)

A linha 9 no programa a seguir é substituída por algo testável. Ele tem duas novas linhas à direita e exatamente 64 novas no total.

a
a
cc

88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888c
cc
cc
cc
8c6ec6862e611a909aefef7133fc410dff7e22f63f7493b2f8e452888467b057b57bea88a311cadb514028e5cdc7397ab03a55e312d5a0a7d93b880f26cfd6c679f780c1f1ce3691cc9d92c228b0159a5f0f0c6a1a7dddec2791621b1782567e16273ff2019feb3d44320fec1073a536acc0b06462
cc
4
a
a8

a
ac
ac
a
aa
aa
a
aa
ac
aa
ac
aa
aa
c8
8
a8
cc
c8
aa
ca
a8
8
a8
4
ca
4
c8
cc
cc
ac
aa

a
c8
4
c
aa
c
8
a8
c4
a8
c8
8
c4
c8
a8
ac
aa

Para satisfazer os critérios, a linha 9 deve ser substituída pelo número grande a seguir. Eu acho que isso deve ser válido como as variantes Unary.

  • Tem dígitos.
  • Cada dígito que tem 4109527714173620014271192135615819980149748934951677499623857818618801276212206327654950831404071330954232878836395346962954202538476535987403920483325378835064959624187891476909072253512354662379230835497647226755470473642747146485760293230336401802073590883942400000000000000000 * dígitos k à sua direita é um a. Assim, o último dígito é um aonde k = 0, e há 159321460184447640588063043795531819638245990121854536131792918542864566418397339281153516086677425424423723475531974684547855358001230183547851703274577276601612622258171727288003902331619018508731805969660163575803761844794365403871421372122820829226554024584224464882571689865777 deles.
  • Todo dígito que não está nessas posições é um 8.

Observe que o número construído está na base 16 (mas os números na descrição acima estão na base 10). Se meu cálculo estiver correto, deve ser o mesmo que o número original no programa mod 8 * (16 ^ 234-1) / 15. Qualquer número grande o suficiente e que atenda a esse critério deve funcionar, mas não sei como construir um menor com apenas4 8 a c .

A saída é citação 1:

"Frankly, my dear, I don't give a damn." - Rhett Butler

com uma nova linha à esquerda e à direita.

Proibido anteriormente:

?!"#$%&'()*+,-./01235679:;<=>@[\]^_` AbBCdDeEfFgGhHiIjJklLmMnNoOpPqQrRstTuUvVWxXyYzZ{|}~

Caracteres restantes: 4 8 S a c w .

Explicação

Subskin é um OISC em que a instrução deve subtrair e pule a próxima instrução se o resultado for negativo. Os três primeiros campos da memória são mapeados para o ponteiro, saída e entrada da instrução. O ponteiro de instruções pode ser usado como "ir", e a leitura pode gerar alguns números que não estão disponíveis usando os únicos caracteres úteis.

No começo, tentei comprimir o código nos dígitos em alguma base. Mas não consegui jogar em 64 linhas. Então mudei para a abordagem de módulo que removeu um nível de loop.

É basicamente apenas o maior algoritmo divisor comum. A / B é extraído em cada etapa. Em seguida, defina A = B e B = A mod B e continue.

Mais precisamente, quando A> B incrementa os dados atuais, caso contrário, troca os números e move o ponteiro. Depois disso, o número menor é subtraído do número maior.

Finalmente, o código de auto-extração substitui algo no loop e o quebra, e continua com o código extraído. O código extraído é bastante direto.

Código

a       Start execution at 10.
a       The first byte of output cannot be suppressed without the minus character.
        But fortunately it can still output a leading newline,
        and this is allowed in the question.
cc      Input, not used.
0       Only used in the extracted code.
A  (*4) Data number A + 4, or the accumulator at run-time.
cc
cc
cc
B  (*8) Data number B.
cc
4  (*a) Start execution here. It moves A to *a8 at the first time,
        and the accumulator - 4 to the current position at later times.
a       Minus 4, which is the smallest addressable number defined at the beginning.
a8 (*c) The pointer for self-extraction. Initially it point to the position of A
        at run-time, and this instruction moves *4 there. Then it is decremented,
        and the memory before *a8 is used for storing the extracted code.
        Constant definitions:
0       *ac = current address - 4 = 9.
a
ac
ac      *aa = 5.
a
aa
aa      *aa = 1.
a
aa
ac      *ac = 8.
aa
ac
aa      *c8 = 0.
aa
c8
8       Check if B > A. True at the first time so the initializations could be done.
a8
cc
c8        If yes, *ca = -1 (just another constant), and skip the next instruction.
aa
ca
a8        If no (B <= A), A -= B.
8
a8
4       Increment the accumulator. It has no effects if B > A.
ca
4
c8      If B < A (before the A -= B if that is executed):
cc
cc
ac        Go back to the starting position.
aa
0
a       Reset the accumulator to 4 (which means 0 when writing to the target position).
c8
4
c       Decrement the pointer for extraction.
aa
c
8       Swap A and B and A -= B.
a8
c4
a8
c8
8
c4
c8
a8
ac      Go back to the starting position.
aa
0       Finally the extraction code overrides this field and change it to 4,
        making it a no-op, so the execution continues.
6e      Jump to the beginning of extracted code.
aa
0
(29 times 0, not used.)
a6(*60) The pointer for output. And this just output the character at the pointer.
3
1
60      Decrement the pointer for output.
aa
60
60      Check if there is still data to output.
6d
4
6e        If yes, continue the output loop.
aa
0
a9        If no, access the undefined address *a9 to end the program.
6f(*6d) The position of the end of output.
5e(*6e) The starting position of the output loop.
(The reversed data.)
X       The junk data at the beginning of the extraction.
A (*a8) Number A at run-time.

Geração

Suponha que A e B após o progresso da extração sejam n e m. É fácil reverter esse progresso e obter A e B (antes que os dados úteis comecem) em termos de n e m. E A = an + bm, B = cn + dm. Defina A como um número arbitrário que seja grande o suficiente e possa tornar n e m ambos positivos (e usa apenas os caracteres disponíveis). n e m podem ser calculados usando inversão modular. Então B é determinado por n e m.

Mas não é fácil fazer B também consistir apenas desses caracteres. Eu usei uma etapa extra que deve extrair apenas alguns dados de lixo inofensivo. Portanto, o novo B seria kA + B, onde k é um número inteiro positivo. É fácil ver que tal ak existe. Mas não tenho certeza se é possível encontrar um que seja curto o suficiente para ser testável. E usei o pequeno teorema de Fermat para encontrar um que funcione em teoria.

Eu tenho apenas um idioma # 2 restante.

jimmy23013
fonte
13

78. Mathematica, não usa @

2986092695862452869648821144242466624048554924749885449420879769410086580524-10000011000000001010001000000000000000000000000000000001//#/87790498804444451827485960720854800964024844465254951684711241427814652487~Subtract~100001101000000000000000000000000001010000001000000000000000001000000&//ContinuedFraction//FromCharacterCode

A saída é citação 76:

"Hasta la vista, baby." - The Terminator

Proibido anteriormente: py3\" ';({s[)<+.

Gerado da seguinte forma:

str = "\"Hasta la vista, baby.\" - The Terminator";
chrs = ToCharacterCode @ str;
fraction = FromContinuedFraction @ chrs;
n = Numerator @ fraction;
d = Denominator @ fraction;
ndiff = Boole[# == 3]& /@ IntegerDigits @ n // FromDigits;
ddiff = Boole[# == 3]& /@ IntegerDigits @ d // FromDigits;
n2 = n + ndiff;
d2 = d + ddiff;

O programa é então:

n2 - ndiff // # / d2 ~ Subtract ~ ddiff & // ContinuedFraction // FromCharacterCode

com valores inseridos para n2, ndiff, d2e ddiffe todos os espaços removidos.


Minha idéia original era usar ToString, FromDigits, IntegerDigits, Partitione FromCharacterCode. No entanto, ambos FromDigitse IntegerDigitstem um sneles que eu não tinha notado.

Tyilo
fonte
5
Porra, estava trabalhando em um Befunge.
PurkkaKoodari
11

72. montagem x86_64 (nasm), não usa *

BITS    64
extern  _exit
global  main

q:  dd  21111642486/11
    dd  7621846918/14
    dd  44456111856/24
    dd  572619118
    dd  21141585696/17
    dd  5982995755/11
    dd  49922657928/26
    dd  27216242192/16
    dd  11&~1

main:
    dd  89851824/6
    db  255
    db  255
    db  255
    db  72
    db  184
    dq  q
    db  72
    db  274/2
    db  198
    dd  2416/2
    db  2
    dd  87241517818/26
    dd  17268/2
    db  2/4
    db  15
    db  5

    db  49
    db  255
    call    _exit

Usa 61 guias e 36 novas linhas.

A saída é citação 68:

"Here's Johnny!" - Jack Torrance

Proibido anteriormente: py3\" ';({s[)<+.@=-,X0

Isso usa uma writechamada de sistema com o número 0x2000001, que provavelmente só funciona no OS X. Montagem, vinculação e execução:

nasm -f macho64 codegolf.asm
ld -e main codegolf.o -lc
./a.out
Tyilo
fonte
Melhor. Citar. Sempre. Parabéns!
Conor O'Brien
11

71. GolfScript, não usa /

:?546]84]616]869]121]295]114]1125]288]872]2149]882]2661]289]1826]544]45]1568]67]97]2162]111]876]1824]65]622]878]2917]2592]582]2418]4197]4965]1644]617]1646]615]?^

A saída é citação 69:

"They're here!" - Carol Anne Freeling

Proibido anteriormente: py3\" ';({s[)<+.@=-,X0*

Agradeço a Peter Taylor, que me explicou algumas peculiaridades do GolfScript por construir a string. Primeiro, posso obter uma string vazia sem usar aspas, atribuindo o conteúdo STDIN (vazio) a uma variável ( ?neste caso). Então, estou construindo uma matriz aninhada de números que, tirada no mod 256, são os pontos de código desejados. Ao adicionar múltiplos de 256, posso evitar duplicatas e números contendo 0e 3. Por fim, empurro a corda vazia com ?a diferença simétrica do conjunto. Isso nivela a matriz e a coage em uma string, onde o GolfScript se importa apenas com o restante do mod 256.

Teste aqui.

Martin Ender
fonte
10

91. Marbelous , não usa\

6D......69
72726F7169
+1+1......
7460204261
......+1..
4C6E726574
2121202D20
6F65206974
206E757420
22526E6170
..+1......

A saída é citação 96:

"Snap out of it!" - Loretta Castorini

Proibido anteriormente :py3

es1024
fonte
10

95. Python

print('"I\'m the king of the world!" - Jack Dawson')

A saída é citação 100:

"I'm the king of the world!" - Jack Dawson

Nenhuma proibida.

Passatempos de Calvin
fonte
20
A diferença de votos entre esta resposta e esta resposta é o enigma que é o Stack Exchange.
Passatempos de Calvin
10

73. AppleScript, não usa 0

(Todos os "espaços" são "guias", conforme permitido pelo OP. Existem 25 guias e 8 novas linhas.)

Set c   to  146/2&115&2*16&525/5&116&2*16&115&97&51*2&1111/11&126/2&2*17&2*16&45&2*16&68&114&46&2*16&67&2*52&114&525/5&115&116&525/5&97&2*55&2*16&166/2&122&1111/11&2*54&2*54
Set e   to  2*17
Set d   to  aScii   character   of  e
rePeat  with    i   in  c
Set d   to  d&aScii character   of  i
end rePeat
diSPlaY alert   d

A saída é citação 70:

"Is it safe?" - Dr. Christian Szell

Proibido anteriormente :py3\" ';({s[)<+.@=-,X


Aqui, construímos primeiro a variável cque é uma lista de códigos ASCII da cotação. No AppleScript, number & numberproduz a lista de 2 elementos {number, number}e list & numberanexa o número à lista, para evitar o uso de {ou ,. Além disso, &tem prioridade mais baixa que *e/ , portanto, podemos criar a lista inteira em uma linha, evitando a (criação de variáveis ​​(que desperdiçam 3 guias).

Depois disso, convertemos a lista de números cna string d. Novamente usamos &aqui, pois string & stringé concatenação. O AppleScript não faz distinção entre maiúsculas e minúsculas, portanto, poderíamos usar diSPlaYpara contornar os pyscaracteres.

kennytm
fonte
Ah, eu tentei fazer uma resposta AppleScript também, mas não sabia que as palavras-chave não diferenciavam maiúsculas de minúsculas, então não pude usar sete falhei. Eu tinha resposta para a citação # 62, mas não posso usá-la agora; P
Tyilo
10

57. Burlesco (não usa |)

Novas linhas são apenas para esclarecimento, mas as guias são necessárias. Existem 4 abas.

??9!!JJJJJJJJJJJJJJJJ
?iJ
?iJJ
?i?i?i?i?iJJ
?i?i?i?i?iJJ
?i
61118256541846584114424692216989142925962811646445822862641986546895526246185888152124859614142688
    41224222121111121111121111211111111114221112222112121211424411124111124222222211114424211211111121
$$6tdfCtiB!
j54ia
j5ia
j29ia
j9ia
j41?d?d?d?dia
j1?dia
j59ia
j59ia
j8?dia
j14ia
j21?dia
j24ia
j26ia
j41?d?d?d?dia
j41ia
j48ia
j52ia
j55ia
j61?dia
j65ia
j68?dia
j69?i?i?i?i?iia
j69?i?i?i?i?i?i?iia
j82ia
86
    29B!ZZ1!!1ia
61
    21B!ZZ1!!81?d?d?dia
48
    26B!ZZ1!!85ia
Q

A saída é citação 87:

"Sawyer, you're going out a youngster, but you've got to come back a star!" - Julian Marsh

Proibido anteriormente :"'&()*+-,./\037;<=>@_[sovy pezxX]^{}~


Burlesco é semelhante ao GolfScript, mas geralmente cada comando tem 2 caracteres. A construção é assim:

  1. Burlesque suporta inteiro de precisão arbitrária e também permite a conversão para a base 36. Portanto, primeiro codificamos todos os caracteres minúsculos na base 36:

       awyeryouregoingoutayoungsterbutyouvegottocomebackastarulianarsh₃₆
    == 3379063095879820583038345369081212641008420750861587542962343112066870047037314854758539\
       9600704049₁₀
    
  2. Infelizmente, esse número contém 0, 3 e 7 em excesso e todos os símbolos aritméticos ( +-*/) são proibidos ... Normalmente, podemos usar o módulo, mas Burlesque usa a sequência em .%que o ponto também está indisponível. Felizmente, o operador xor é estranhamente $$, então podemos tentar construir isso xorando dois números livres de 0, 3, 7. Essa é a razão do grande número 41224222….

  3. Finalmente, insira os símbolos restantes, como ,, , etc volta para a string. A má notícia é que a função "chr" usa a sequência L[que é novamente proibida! A boa notícia é que existem várias maneiras de construir uma string existente (por exemplo, ??cria a string da versão "Burlesque - 1.7.3"que contém um "espaço") e, em seguida, extrai ( !!) um caractere dela.

  4. Os operadores de incremento e decremento também usar os caracteres proibidos .+, .-, no entanto, existem alternativas ?i, ?dque têm o mesmo efeito. Assim, poderíamos gerar todo o espectro ASCII a partir disso.

kennytm
fonte
10

34. código da máquina 6502 + monitor do sistema Apple II (não usa b)

(Usa 1 guia)

262G    a!mwfl%mDmqli!flqlPmqljjPfuGf!T%wGK!96H4wGH4K2O!R!F%w9uGwGr?wGi299D!H2T%wGw%K2K!K!96F!9%jjjjjflPwP!fmjjjjjPwfmfm6m%lHjjPwflflflflclclclclfljclflclVljHHjjPqPDClflClflflclclclclclclflflflflflflflflflflflflflflflflflflflflflfljj6mP6

A saída é citação 41:

"We rob banks." - Clyde Barrow

Proibido anteriormente :"#$&'()*+,-./01357:;<=>@[\]^_ ABdeEghIJLMNopQksUvWxXyYzZ{|}~

Caracteres restantes:

  • Símbolos: ! % ? `
  • Números: 2 4 6 89
  • Maiúsculas: CD FGH K OP RST V
  • Minúsculas: a c f ij lmn qr tu w

Execute na Apple // e (ou emulador). Verifique se o caractere da guia é copiado como uma guia e não como espaços.


Essa é uma combinação das idéias do código de máquina 80386 + resposta do DOS e minha resposta anterior do Applesoft BASIC .

Para aqueles que não estão familiarizados, o Monitor do Sistema nos computadores Apple II é um interpretador / depurador de nível muito baixo que permite modificar a memória e executar o código (se você estiver executando um interpretador BASIC, poderá entrar no Monitor do Sistema fazendo isso CALL -151). A maneira usual de inserir código de máquina no System Monitor seria <addr>: <hex_byte> <hex_byte> ...e o código em execução é feito por<addr>G (G para "Ir"). A inserção de código da maneira usual usa caracteres proibidos; no entanto, o buffer de entrada para inserir uma linha de texto inicia na memória 0x200. Portanto, o one-liner diz ao System Monitor para ir para 0x262 e depois incorporar o código conforme ASCII a seguir.

Apesar de não ser uma linguagem esotérica, as restrições sobre códigos opcionais utilizáveis ​​tornam o código mais parecido com um derivado do cérebro. Tudo o que está disponível: lendo a memória (mas não escrevendo), aumentando e diminuindo a memória, subtraindo do acumulador e ramificando-se em não 0. Somente algumas instruções foram corrigidas: uma chamada para a rotina Monitor que gera um caractere e o retorno para finalizar o programa.

Desmontagem. Observe que todos os caracteres introduzidos recebem seu conjunto de bits alto:

; Branch here when done to return (patched from E1)
0205-   60          RTS
;
; Output loop: at this point, $EC-$ED points to the beginning of the
; phrase, which starts at 0x21F. Each character is encoded as 2 bytes.
; The ASCII value (with high bit set) is determined by doing:
; 2 - Byte1 - 0xA1 - Byte2, where subtraction with borrow is used (and
; borrow is always set for the first subtraction).
;
; Monitor routine to output (patched from A1 ED F7)
0206-   20 ED FD    JSR   $FDED
0209-   E6 EC       INC   $EC
020B-   A5 ED       LDA   $ED
020D-   C4 ED       CPY   $ED
020F-   F1 EC       SBC   ($EC),Y
0211-   E9 A1       SBC   #$A1
0213-   E6 EC       INC   $EC
0215-   F1 EC       SBC   ($EC),Y
0217-   D0 ED       BNE   $0206
; Computed value 0. We're done, so branch to the return instruction.
0219-   F1 EC       SBC   ($EC),Y
021B-   EA          NOP   
021C-   EA          NOP   
021D-   D0 E6       BNE   $0205
;
; Encoded string resides from 0x21F-0x25C
;
025D-   EA          NOP   
025E-   EA          NOP   
025F-   EA          NOP   
0260-   EA          NOP   
0261-   EA          NOP
; Execution begins here
; First, set up $EC-$ED to point to 0x200. No writes, so
; increment until the values are 0, then increment MSB twice.
0262-   E6 EC       INC   $EC
0264-   D0 F7       BNE   $025D
0266-   D0 A1       BNE   $0209 ; Boing!
0268-   E6 ED       INC   $ED
026A-   EA          NOP   
026B-   EA          NOP   
026C-   EA          NOP   
026D-   EA          NOP   
026E-   EA          NOP   
026F-   D0 F7       BNE   $0268
0271-   E6 ED       INC   $ED
0273-   E6 ED       INC   $ED
; Zero out A, X, Y registers
0275-   B6 ED       LDX   $ED,Y
0277-   A5 EC       LDA   $EC
0279-   C8          INY   
027A-   EA          NOP   
027B-   EA          NOP   
027C-   D0 F7       BNE   $0275
; Patch up tab character to make it a return so Monitor doesn't
; parse anything after the "262G"
027E-   E6 EC       INC   $EC
0280-   E6 EC       INC   $EC
0282-   E6 EC       INC   $EC
0284-   E6 EC       INC   $EC
; "isc" is undocumented instruction that increments memory then
; subtracts the result from accumulator.
0286-   E3 EC       isc   ($EC,X)   
0288-   E3 EC       isc   ($EC,X)   
028A-   E3 EC       isc   ($EC,X)   
028C-   E3 EC       isc   ($EC,X)   
028E-   E6 EC       INC   $EC
0290-   EA          NOP   
; Patch up RTS and JSR instructions at 0x205 and 0x206
; This loop adds 0x80 to the original values to get close
0291-   E3 EC       isc   ($EC,X)   
0293-   E6 EC       INC   $EC
0295-   E3 EC       isc   ($EC,X)   
0297-   D6 EC       DEC   $EC,X
0299-   EA          NOP   
029A-   C8          INY   
029B-   C8          INY   
029C-   EA          NOP   
029D-   EA          NOP   
029E-   D0 F1       BNE   $0291
02A0-   D0 C4       BNE   $0266 ; Boing!
; Finish patching RTS and JSR
; "dcp" undocumented "decrement then compare"
02A2-   C3 EC       dcp   ($EC,X)
02A4-   E6 EC       INC   $EC
02A6-   C3 EC       dcp   ($EC,X)
; Patch address of character output call F7ED -> FDED
02A8-   E6 EC       INC   $EC
02AA-   E6 EC       INC   $EC
02AC-   E3 EC       isc   ($EC,X)   
02AE-   E3 EC       isc   ($EC,X)   
02B0-   E3 EC       isc   ($EC,X)   
02B2-   E3 EC       isc   ($EC,X)   
02B4-   E3 EC       isc   ($EC,X)   
02B6-   E3 EC       isc   ($EC,X)   
; Move pointer up to start of encoded string
02B8-   E6 EC       INC   $EC
02BA-   E6 EC       INC   $EC
02BC-   E6 EC       INC   $EC
02BE-   E6 EC       INC   $EC
02C0-   E6 EC       INC   $EC
02C2-   E6 EC       INC   $EC
02C4-   E6 EC       INC   $EC
02C6-   E6 EC       INC   $EC
02C8-   E6 EC       INC   $EC
02CA-   E6 EC       INC   $EC
02CC-   E6 EC       INC   $EC
02CE-   E6 EC       INC   $EC
02D0-   E6 EC       INC   $EC
02D2-   E6 EC       INC   $EC
02D4-   E6 EC       INC   $EC
02D6-   E6 EC       INC   $EC
02D8-   E6 EC       INC   $EC
02DA-   E6 EC       INC   $EC
02DC-   E6 EC       INC   $EC
02DE-   E6 EC       INC   $EC
02E0-   E6 EC       INC   $EC
02E2-   E6 EC       INC   $EC
02E4-   EA          NOP   
02E5-   EA          NOP   
02E6-   B6 ED       LDX   $ED,Y
; Setup done, bounce our way up to the output loop at 0x209
02E8-   D0 B6       BNE   $02A0
ido_nativo
fonte
10

14. Código de máquina PDP-11, não usa O

4
rar
raw
rrrlratarltararltararltararlratarltararlratarlratarltararlratarlratarltararlratarltararlratarltararlratarltararlratarltararlra4cw
rrrlratarlratarltararlratarlratarlratarltararltararlratarlratarlratarltararlra8cw
rrrltararlratarlratarlratarltararltararltararlratarlratarltararlratarlratarltararltararltararlralaw
rrrlratarltararlratarltararltararlratarltararltararlratarltararlratarltararlratarlratarltararlratarltararlratarltararlranaw
rrrltararltararltararltararltararltararlratarltararlratarlratarltararlratarlratarltararltararlrarcw
rrrltararltararltararltararlratarltararlratarltararltararlratarlratarlratarltararltararltararlratcw
rrrlratarltararltararltararlratarlratarltararlratarltararltararlratarlratarltararlratarltararlratarltararlra449nlarc9nnatcrl4K4KDcDcDcDc    u444444DuS4S4S4SaS4S4S4S4SaDuc4cac4c4c4c4caKac4caDuSaKaKaSaSaS4KaSaS4S4SaKaSaDuc4c4cacacaKac4c4cac4DuS4S4S4S4S4S4S4S4S4Ducac4c4c4c4c4caKacacaKaDuKaSaKaSaKaSaKaKaSaS4S4S4S4KaSaw
rrrl4K4Kw
rrw
rruulnau8DK
KcScu
wrl48494444SD44K44D4n44SD44K44D4l84KD484D9K4DD4449D444D9K444D44DDD44DDD44K4884444DD944SDD8

r8wt44ucD8
uK8Scnn wuKwK4uauK4luwKwKu4wcnn wuKwK4uauK4lwwKwKr8wa8uSu44DcDrnurwrwlKwlltuwaKcltwwwnSwrDrturwrwlKwlKatwtKwlulwtnnwnDltrrnuntKwlcnwtcDcrDKnlSKrllluwtwwwDltwannwn8na

A saída é citação 28:

"Play it, Sam. Play 'As Time Goes By.'" - Ilsa Lund

Proibido anteriormente :

?!"#$%&'()*+,-./0123567:;<=>@[\]^_` AbBCdeEFfgGhHiIjJkLmMNopPqQRsTUvVWxXyYzZ{|}~

Caracteres restantes:

  • Números: 4 8 9
  • Maiúsculas: D K S
  • Minúsculas: a c l n r t u w

Alguns detalhes técnicos:

  • Todas as quebras de linha usam o estilo unix (1 byte 0x0a)
  • Não há quebra de linha no final do arquivo (embora não deva importar)
  • Existem 3 caracteres de tabulação
  • O tamanho do arquivo é 1260 bytes

Para verificar esse código, usei o simulador Ersatz-11 . Para executar o código, escreva-o em um arquivo test.pdp, execute o simulador e digite:

load test
go

O resultado:

...
E11>load test
E11>go
"Play it, Sam. Play 'As Time Goes By.'" - Ilsa Lund

%HALT
...

Código fonte (todos os números estão em notação octal):

clr 60562(r4)
;
com 60562(r2)
com 71162(pc) ; nop
;
add 60562(r1), 60564(r2) ; a = ffff b = ffff
add 60564(r1), 60562(r2) ; a = fffe b = ffff
add 60564(r1), 60562(r2) ; a = fffd b = ffff
add 60564(r1), 60562(r2) ; a = fffc b = ffff
add 60562(r1), 60564(r2) ; a = fffc b = fffb
add 60564(r1), 60562(r2) ; a = fff7 b = fffb
add 60562(r1), 60564(r2) ; a = fff7 b = fff2
add 60562(r1), 60564(r2) ; a = fff7 b = ffe9
add 60564(r1), 60562(r2) ; a = ffe0 b = ffe9
add 60562(r1), 60564(r2) ; a = ffe0 b = ffc9
add 60562(r1), 60564(r2) ; a = ffe0 b = ffa9
add 60564(r1), 60562(r2) ; a = ff89 b = ffa9
add 60562(r1), 60564(r2) ; a = ff89 b = ff32
add 60564(r1), 60562(r2) ; a = febb b = ff32
add 60562(r1), 60564(r2) ; a = febb b = fded
add 60564(r1), 60562(r2) ; a = fca8 b = fded
add 60562(r1), 60564(r2) ; a = fca8 b = fa95
add 60564(r1), 60562(r2) ; a = f73d b = fa95
add 60562(r1), 60564(r2) ; a = f73d b = f1d2
add 60564(r1), 60562(r2) ; a = e90f b = f1d2
add 60562(r1), 61464(r2) ; contains patch1
com 71162(pc)
add 60562(r1), 60564(r2) ; a = e90f b = dae1
add 60562(r1), 60564(r2) ; a = e90f b = c3f0
add 60564(r1), 60562(r2) ; a = acff b = c3f0
add 60562(r1), 60564(r2) ; a = acff b = 70ef
add 60562(r1), 60564(r2) ; a = acff b = 1dee
add 60562(r1), 60564(r2) ; a = acff b = caed
add 60564(r1), 60562(r2) ; a = 77ec b = caed
add 60564(r1), 60562(r2) ; a = 42d9 b = caed
add 60562(r1), 60564(r2) ; a = 42d9 b = 0dc6
add 60562(r1), 60564(r2) ; a = 42d9 b = 509f
add 60562(r1), 60564(r2) ; a = 42d9 b = 9378
add 60564(r1), 60562(r2) ; a = d651 b = 9378
add 60562(r1), 61470(r2) ; contains patch2
com 71162(pc)
add 60564(r1), 60562(r2) ; a = 69c9 b = 9378
add 60562(r1), 60564(r2) ; a = 69c9 b = fd41
add 60562(r1), 60564(r2) ; a = 69c9 b = 670a
add 60562(r1), 60564(r2) ; a = 69c9 b = d0d3
add 60564(r1), 60562(r2) ; a = 3a9c b = d0d3
add 60564(r1), 60562(r2) ; a = 0b6f b = d0d3
add 60564(r1), 60562(r2) ; a = dc42 b = d0d3
add 60562(r1), 60564(r2) ; a = dc42 b = ad15
add 60562(r1), 60564(r2) ; a = dc42 b = 8957
add 60564(r1), 60562(r2) ; a = 6599 b = 8957
add 60562(r1), 60564(r2) ; a = 6599 b = eef0
add 60562(r1), 60564(r2) ; a = 6599 b = 5489
add 60564(r1), 60562(r2) ; a = ba22 b = 5489
add 60564(r1), 60562(r2) ; a = 0eab b = 5489
add 60564(r1), 60562(r2) ; a = 6334 b = 5489
add 60562(r1), 60554(r2) ; contains addr of patch1
com 71162(pc)
add 60562(r1), 60564(r2) ; a = 6334 b = b7bd
add 60564(r1), 60562(r2) ; a = 1af1 b = b7bd
add 60562(r1), 60564(r2) ; a = 1af1 b = d2ae
add 60564(r1), 60562(r2) ; a = ed9f b = d2ae
add 60564(r1), 60562(r2) ; a = c04d b = d2ae
add 60562(r1), 60564(r2) ; a = c04d b = 92fb
add 60564(r1), 60562(r2) ; a = 5348 b = 92fb
add 60564(r1), 60562(r2) ; a = e643 b = 92fb
add 60562(r1), 60564(r2) ; a = e643 b = 793e
add 60564(r1), 60562(r2) ; a = 5f81 b = 793e
add 60562(r1), 60564(r2) ; a = 5f81 b = d8bf
add 60564(r1), 60562(r2) ; a = 3840 b = d8bf
add 60562(r1), 60564(r2) ; a = 3840 b = 10ff
add 60562(r1), 60564(r2) ; a = 3840 b = 493f
add 60564(r1), 60562(r2) ; a = 817f b = 493f
add 60562(r1), 60564(r2) ; a = 817f b = cabe
add 60564(r1), 60562(r2) ; a = 4c3d b = cabe
add 60562(r1), 60564(r2) ; a = 4c3d b = 16fb
add 60564(r1), 60562(r2) ; a = 6338 b = 16fb
add 60562(r1), 60556(r2) ; contains addr of patch2
com 71162(pc)
add 60564(r1), 60562(r2) ; a = 7a33 b = 16fb
add 60564(r1), 60562(r2) ; a = 912e b = 16fb
add 60564(r1), 60562(r2) ; a = a829 b = 16fb
add 60564(r1), 60562(r2) ; a = bf24 b = 16fb
add 60564(r1), 60562(r2) ; a = d61f b = 16fb
add 60564(r1), 60562(r2) ; a = ed1a b = 16fb
add 60562(r1), 60564(r2) ; a = ed1a b = 0415
add 60564(r1), 60562(r2) ; a = f12f b = 0415
add 60562(r1), 60564(r2) ; a = f12f b = f544
add 60562(r1), 60564(r2) ; a = f12f b = e673
add 60564(r1), 60562(r2) ; a = d7a2 b = e673
add 60562(r1), 60564(r2) ; a = d7a2 b = be15
add 60562(r1), 60564(r2) ; a = d7a2 b = 95b7
add 60564(r1), 60562(r2) ; a = 6d59 b = 95b7
add 60564(r1), 60562(r2) ; a = 0310 b = 95b7
add 60562(r1), 61562(r2) ; contains addr of cmd1
com 71162(pc)
add 60564(r1), 60562(r2) ; a = 98c7 b = 95b7
add 60564(r1), 60562(r2) ; a = 2e7e b = 95b7
add 60564(r1), 60562(r2) ; a = c435 b = 95b7
add 60564(r1), 60562(r2) ; a = 59ec b = 95b7
add 60562(r1), 60564(r2) ; a = 59ec b = efa3
add 60564(r1), 60562(r2) ; a = 498f b = efa3
add 60562(r1), 60564(r2) ; a = 498f b = 3932
add 60564(r1), 60562(r2) ; a = 82c1 b = 3932
add 60564(r1), 60562(r2) ; a = bbf3 b = 3932
add 60562(r1), 60564(r2) ; a = bbf3 b = f525
add 60562(r1), 60564(r2) ; a = bbf3 b = b118
add 60562(r1), 60564(r2) ; a = bbf3 b = 6d0b
add 60564(r1), 60562(r2) ; a = 28fe b = 6d0b
add 60564(r1), 60562(r2) ; a = 9609 b = 6d0b
add 60564(r1), 60562(r2) ; a = 0314 b = 6d0b
add 60562(r1), 61564(r2) ; contains addr of cmd2
com 71162(pc)
add 60562(r1), 60564(r2) ; a = 0314 b = 701f
add 60564(r1), 60562(r2) ; a = 7333 b = 701f
add 60564(r1), 60562(r2) ; a = e352 b = 701f
add 60564(r1), 60562(r2) ; a = 5371 b = 701f
add 60562(r1), 60564(r2) ; a = 5371 b = c390
add 60562(r1), 60564(r2) ; a = 5371 b = 1701
add 60564(r1), 60562(r2) ; a = 6a72 b = 1701
add 60562(r1), 60564(r2) ; a = 6a72 b = 8173
add 60564(r1), 60562(r2) ; a = ebe5 b = 8173
add 60564(r1), 60562(r2) ; a = 6d58 b = 8173
add 60562(r1), 60564(r2) ; a = 6d58 b = eecb
add 60562(r1), 60564(r2) ; a = 6d58 b = 5c23
add 60564(r1), 60562(r2) ; a = c97b b = 5c23
add 60562(r1), 60564(r2) ; a = c97b b = 259e
add 60564(r1), 60562(r2) ; a = ef19 b = 259e
add 60562(r1), 60564(r2) ; a = ef19 b = 14b7
add 60564(r1), 60562(r2) ; a = 03d0 b = 14b7
add 60562(r1), 32064(r2) ; contains value of r3
add @60554(r0), @61562(r1)
add @60556(r0), @61564(r1)
;
add 45464(r1), 45464(r2) ; nop
add (r5), r4
add (r5), r4
add (r5), r4
add (r5), r4
ash (r1), r4
;
; must be at address 0x310 (01420)
.word 32064 ; patch it with 0xe90f - it becomes...
            ; mov 32064(r5), r3
.word 32064
.word 32064 ; patch it with 0xd651 - it becomes...
            ; inc r5
;
; patch the patcher
;
ash r4, r5
bit (r1)+, (r3)+
bit (r1)+, (r3)+
bit (r1)+, (r3)+
add r5, (r3)+ ; [3] = 0x443c
bit (r1)+, (r3)+
bit (r1)+, (r3)+
bit (r1)+, (r3)+
bit (r1)+, (r3)+
add r5, (r3)+ ; [8] = 0x727b
ash r4, r5
bit (r1)+, -(r3)
add r5, -(r3) ; [7] = 0x0a85
bit (r1)+, -(r3)
bit (r1)+, -(r3)
bit (r1)+, -(r3)
bit (r1)+, -(r3)
add r5, -(r3) ; [2] = 0x7571
add r5, (r3) ; [2] = 0x7581
bit (r1)+, -(r3)
add r5, -(r3) ; [0] = 0x7585
ash r4, r5
add r5, (r3)+ ; [0] = 0x75c5
add r5, (r3) ; [1] = 0x6eac
add r5, (r3) ; [1] = 0x6eec
add r5, (r3)+ ; [1] = 0x6f2c
add r5, (r3)+ ; [2] = 0x75c1
bit (r1)+, (r3)+
add r5, (r3) ; [4] = 0x0a8b
add r5, (r3)+ ; [4] = 0x0acb
bit (r1)+, (r3)+
bit (r1)+, (r3)+
add r5, (r3)+ ; [7] = 0x0ac5
add r5, (r3) ; [8] = 0x72bb
add r5, (r3)+ ; [8] = 0x72fb
ash r4, r5
bit (r1)+, -(r3)
bit (r1)+, -(r3)
add r5, -(r3) ; [6] = 0x6453
add r5, -(r3) ; [5] = 0x644b
add r5, -(r3) ; [4] = 0x0bcb
add r5, (r3) ; [4] = 0x0ccb
bit (r1)+, -(r3)
bit (r1)+, -(r3)
add r5, -(r3) ; [1] = 0x702c
bit (r1)+, -(r3)
ash r4, r5
bit (r1)+, (r3)+
bit (r1)+, (r3)+
bit (r1)+, (r3)+
bit (r1)+, (r3)+
bit (r1)+, (r3)+
bit (r1)+, (r3)+
bit (r1)+, (r3)+
bit (r1)+, (r3)+
bit (r1)+, (r3)+
ash r4, r5
add r5, -(r3) ; [8] = 0x82fb
bit (r1)+, -(r3)
bit (r1)+, -(r3)
bit (r1)+, -(r3)
bit (r1)+, -(r3)
bit (r1)+, -(r3)
add r5, -(r3) ; [2] = 0x85c1
add r5, (r3) ; [2] = 0x95c1
add r5, -(r3) ; [1] = 0x802c
add r5, -(r3) ; [0] = 0x85c5
add r5, (r3) ; [0] = 0x95c5
ash r4, r5
add r5, (r3) ; [0] = 0xd5c5
add r5, (r3)+ ; [0] = 0x15c5
add r5, (r3) ; [1] = 0xc02c
add r5, (r3)+ ; [1] = 0x002c
add r5, (r3) ; [2] = 0xd5c1
add r5, (r3)+ ; [2] = 0x15c1
add r5, (r3) ; [3] = 0x843c
add r5, (r3) ; [3] = 0xc43c
add r5, (r3)+ ; [3] = 0x043c
bit (r1)+, (r3)+
bit (r1)+, (r3)+
bit (r1)+, (r3)+
bit (r1)+, (r3)+
add r5, (r3) ; [8] = 0xc2fb
add r5, (r3)+ ; [8] = 0x02fb
;
com 71162(pc)
add 45464(r1), 45464(r2) ; nop
com 71162(pc)
com 71162(pc)
;
; ------------------------
; must be at address 0x3d0 (01720)
.word 072565
.word 067154
.word 072541
.word 042070
.word 005113
.word 061513
.word 061523
.word 005165
.word 071167
; After patching, this code becomes...
; mov #51, r5
; mov #002074, r1
; patch_loop:
; asl (r3)
; add (r1)+, (r3)
; add (r1)+, (r3)+
; dec r5
; bne patch_loop
;
.byte 154, 064
.byte 070, 064
.byte 071, 064
.byte 064, 064
.byte 064, 123
.byte 104, 064
.byte 064, 113
.byte 064, 064
.byte 104, 064
.byte 156, 064
.byte 064, 123
.byte 104, 064
.byte 064, 113
.byte 064, 064
.byte 104, 064
.byte 154, 070
.byte 064, 113
.byte 104, 064
.byte 070, 064
.byte 104, 071
.byte 113, 064
.byte 104, 104
.byte 064, 064
.byte 064, 071
.byte 104, 064
.byte 064, 064
.byte 104, 071
.byte 113, 064
.byte 064, 064
.byte 104, 064
.byte 064, 104
.byte 104, 104
.byte 064, 064
.byte 104, 104
.byte 104, 064
.byte 064, 113
.byte 064, 070
.byte 070, 064
.byte 064, 064
.byte 064, 104
.byte 104, 071
.byte 064, 064
.byte 123, 104
.byte 104, 070
;
; After patching, this code becomes...
; mov #32, r1
; mov #002006, r0
;out_loop:
; tstb @#0177564
; bpl out_loop
; mov (r0),@#0177566
; swab (r0)
;out_wait:
; tstb @#0177564
; bpl out_wait
; mov (r0)+,@#0177566
; dec r1
; bpl out_loop
; halt
; "Play it, Sam. Play 'As Time Goes By.'" - Ilsa Lund
;
.byte 12, 12 ; linebreaks for "readability"
.byte 162, 070
.byte 167, 164
.byte 064, 064
.byte 165, 143
.byte 104, 070
.byte 012, 165
.byte 113, 070
.byte 123, 143
.byte 156, 156
.byte 011, 167
.byte 165, 113
.byte 167, 113
.byte 064, 165
.byte 141, 165
.byte 113, 064
.byte 154, 165
.byte 167, 113
.byte 167, 113
.byte 165, 064
.byte 167, 143
.byte 156, 156
.byte 011, 167
.byte 165, 113
.byte 167, 113
.byte 064, 165
.byte 141, 165
.byte 113, 064
.byte 154, 167
.byte 167, 113
.byte 167, 113
.byte 162, 070
.byte 167, 141
.byte 070, 165
.byte 123, 165
.byte 064, 064
.byte 104, 143
.byte 104, 162
.byte 156, 165
.byte 162, 167
.byte 162, 167
.byte 154, 113
.byte 167, 154
.byte 154, 164
.byte 165, 167
.byte 141, 113
.byte 143, 154
.byte 164, 167
.byte 167, 167
.byte 156, 123
.byte 167, 162
.byte 104, 162
.byte 164, 165
.byte 162, 167
.byte 162, 167
.byte 154, 113
.byte 167, 154
.byte 113, 141
.byte 164, 167
.byte 164, 113
.byte 167, 154
.byte 165, 154
.byte 167, 164
.byte 156, 156
.byte 167, 156
.byte 104, 154
.byte 164, 162
.byte 162, 156
.byte 165, 156
.byte 164, 113
.byte 167, 154
.byte 143, 156
.byte 167, 164
.byte 143, 104
.byte 143, 162
.byte 104, 113
.byte 156, 154
.byte 123, 113
.byte 162, 154
.byte 154, 154
.byte 165, 167
.byte 164, 167
.byte 167, 167
.byte 104, 154
.byte 164, 167
.byte 141, 156
.byte 156, 167
.byte 156, 070
.byte 156, 141

É mais fácil explicar como isso funciona do começo ao fim. A parte de saída é assim (cada iteração gera 2 bytes):

mov #32, r1
mov #002006, r0
out_loop:
 tstb @#0177564
 bpl out_loop
 mov (r0),@#0177566
 swab (r0)
out_wait:
 tstb @#0177564
 bpl out_wait
 mov (r0)+,@#0177566
 dec r1
 bpl out_loop
 halt
 ----- "Play it, Sam. Play 'As Time Goes By.'" - Ilsa Lund

Este código contém muitos bytes proibidos, tanto no código como na mensagem de saída. Para corrigir isso, o código é embaralhado: cada palavra (16 bits) é representada como uma soma de 3 números:

code = 2 * a + b + c

Código de correção (sem embaralhamento):

 mov #51, r5
 mov #002074, r1
patch_loop:
 asl (r3)
 add (r1)+, (r3)
 add (r1)+, (r3)+
 dec r5
 bne patch_loop

Este código em si contém bytes proibidos, mas é muito mais curto (9 palavras). O programa que decodifica esse código usa apenas bytes permitidos (está no comentário "corrigir o programa" na fonte), por isso possui um conjunto muito limitado de operações (basicamente, apenas "adiciona"), portanto, aplicar muitos bytes também muito código.

O uso desse remendador não é simples. Para corrigir grandes quantidades de dados com código simples, eu precisava de instruções como add r5, (r3)+e add r5, -(r3)- e os únicos registros que poderiam ser usados ​​assim eram r3e r5. Infelizmente, nenhum comando permitido pode ser usado para inicializar esses registros, então tive que corrigir as instruções que fizeram isso:

mov 32064(r5), r3
inc r5

Isso exigiu o patch de apenas 2 palavras.

Eu procurei por algum tempo uma maneira de fazer o patch; a única maneira de inventar foi usar o infame modo "indireto":

... (much preparation here)
add @60554(r0), @61562(r1)
add @60556(r0), @61564(r1)

Para executar essas duas instruções, é necessário um pouco de preparação:

  • Armazenar um valor de correção ( patch1) na memória
  • Armazenar um ponteiro na máscara de correção na memória
  • Armazene um ponteiro na instrução a ser corrigida na memória

Para gerar todas essas constantes, usei as seguintes instruções:

add 60562(r1), 60564(r2) ; add a to b
add 60564(r1), 60562(r2) ; add b to a

Eles usam palavras nos endereços 060562 e 060564 como variáveis ​​temporárias; um arranjo correto dessas duas instruções pode gerar qualquer valor em 10 a 20 etapas.


Instruções usadas neste código (excluindo as que foram corrigidas):

clr offset(rN)    - a no-op; its machine code is used to obtain the number 2
com offset(rN)    - used to obtain the number -1
add offset1(rN), offset2(rM) -  used for arithmetic
add @offset1(rN), @offset2(rM)
com offset(pc)    - a no-op (it actually writes junk to memory)
add (r5), r4      - one of a few "sane" instructions!
ash r4, r5        - another useful sane instruction
bit ...           - used for its only side effect - increment or decrement
add r5, (r3)+     }
add r5, (r3)      } By luck, all of these commands can be used!
add r5, -(r3)     }
anatolyg
fonte
10

7. 23 , não usal

KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
KKKKKKKKKKKKKKKKKK

Com o avanço de linha à direita (que deve estar presente), existem exatamente 64 feeds de linha nesse código.

Executá-lo imprime a segunda citação:

"I'm gonna make him an offer he can't refuse." - Vito Corleone

Obrigado a @ jimmy23013 por me indicar esse desafio.

Verificação

Uma vez que este código acima funciona no interpretador on-line , não usa espaços ( pura 23 ), sem x s ( 23.ixsy ) e sem vírgulas ( 23.dezsy ), eu supor que é válido 23.easy (sem documentos), que só tem linha comprimento em consideração.

O código (lido para trás) é equivalente ao código 23.dezsy a seguir:

17,62,34,73,39,109,32,103,111,110,110,97,32,109,97,107,101,32,104,105,109,32,97,110,32,111,102,102,101,114,32,104,101,32,99,97,110,39,116,32,114,101,102,117,115,101,46,34,32,45,32,86,105,116,111,32,67,111,114,108,101,111,110,101

17,62instrui o intérprete a imprimir o 62 números inteiros a seguir como caracteres.

O intérprete parece exigir mais um caractere em cada linha do que deveria. Suponho que isso seja responsável por novas linhas no estilo do Windows. Para fazer o código funcionar de acordo com as especificações (ou em um navegador que introduz retornos de carro), remova um Kde cada linha.

Para testar o código, cole-o na área Origem , pressione Enterpara inserir o avanço de linha à direita, digite 23na área Console (para alternar da notação 23.dezsy padrão para a detecção automática) e clique em Run Interpreter!.

Dennis
fonte
9

66 - Pyth, não usa e

DSGRjkmCdGJC96P:Sj4142h118J:Sj9927h112J:Sjt11641t112J:Sj11154t115J:SjxT14142t122J:Sj4128h125J:Sj11154t115J:Sj4128h125J:Sj11196t112J:Sjt14254t122J:Sj12195t112J:Sj12752t114J:Sj5248h111J:Sj4142h118J:Sj4128h125J:Sj5181h112J:Sj4128h125J:Sj9116t111J:Sj12528h111J:Sj14126h121J:Sj11154t115J:Sj4128h125J:Sj8566t111J:Sj12528h111J:Sj11976t111J:Sj11646t111J:Sj12416h111J:Sj11711t116JJ

A saída é citação 62:

"What a dump." - Rosa Moline

Usa os caracteres 12456789:CDGJPRSTdhjkmtx.

Proibido anteriormente: z" &'()*+,-./03;<=>@X[\]psy{

É baseado em uma série de substituições de expressões regulares - :em pyth, cada uma substituindo `, o caractere backtick, por uma sequência de dois caracteres contendo um novo caractere seguido por um backtick.

As substituições são todas aplicadas a uma sequência original de apenas `(J).

As duas cadeias de letras são geradas usando a função de alteração de base,, jem um número e uma base para gerar uma entrada de lista de números, que são codificados em ASCII em uma cadeia de 2 caracteres pela Sfunção recém-definida .

Explicação:

DSGRjkmCdG                 define S, which makes a string out of a list of ASCII numbers
JC96                       J = "`"
P                          print all but the last character of
:Sj4142h118J               "` <- `
:Sj9927h112J               W` <- `
:Sjt11641t112J             h` <- `
:Sj11154t115J              a` <- `
:SjxT14142t122J            t` <- `
:Sj4128h125J                ` <- `
:Sj11154t115J              a` <- `
:Sj4128h125J                ` <- `
:Sj11196t112J              d` <- `
:Sjt14254t122J             u` <- `
:Sj12195t112J              m` <- `
:Sj12752t114J              p` <- `
:Sj5248h111J               .` <- `
:Sj4142h118J               "` <- `
:Sj4128h125J                ` <- `
:Sj5181h112J               -` <- `
:Sj4128h125J                ` <- `
:Sj9116t111J               R` <- `
:Sj12528h111J              o` <- `
:Sj14126h121J              s` <- `
:Sj11154t115J              a` <- `
:Sj4128h125J                ` <- `
:Sj8566t111J               M` <- `
:Sj12528h111J              o` <- `
:Sj11976t111J              l` <- `
:Sj11646t111J              i` <- `
:Sj12416h111J              n` <- `
:Sj11711t116J              e` <- `
J                          Starting with `
isaacg
fonte
Você esqueceu a omissão de z66 no seu gráfico. Isso interrompe a cadeia, pois a próxima entrada está na segunda página.
Archaephyrryx 30/10
9

60. Quarto (não usa ^ )

(Existem 54 novas linhas e 51 guias.)

116 114 115
HEx
22  EMIT
41  EMIT
SPACE
62  EMIT
6F  EMIT
DECIMAL 121 EMIT
81  42  MOD EMIT
DUP EMIT
SPACE
98  EMIT
HEx 65  EMIT
DUP EMIT
2   PICK    EMIT
SPACE
66  EMIT
OVER    EMIT
69  EMIT
65  EMIT
6E  EMIT
64  EMIT
SPACE
69  EMIT
DUP EMIT
SPACE
68  EMIT
69  EMIT
DUP EMIT
SPACE
6D  EMIT
6F  EMIT
2   PICK    EMIT
68  EMIT
65  EMIT
OVER    EMIT
2E  EMIT
22  EMIT
SPACE
2D  EMIT
SPACE
4E  EMIT
6F  EMIT
OVER    EMIT
6D  EMIT
61  EMIT
6E  EMIT
SPACE
42  EMIT
61  EMIT
2   PICK    EMIT
65  EMIT
DUP EMIT
BYE

A saída é citação 56:

"A boy's best friend is his mother." - Norman Bates

Proibido anteriormente :"'&()*+-,./\037;<=>@X_[sovy pez]{}

kennytm
fonte
9

59. Applesoft BASIC, não usa ~

(Usa 11 novas linhas)

1HOME:PRINT:PRINT:CALL2111:END
2REMWARNING!ABUSEOFLANGUAGEBELOW!!!!!!
4VTAB#PR#STOREONERREEEDELEIEIADELFPR#RETURNEDELGEGIENDDELHEHITANDELIDEFP!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
5VTABLPR#EGHGREGRVTABLPR#EGHGREGRVTABAPR#EGHGREGRVTABHPR#EHHGREGRGRDEFP!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
6VTABEPR#EGHGREGRVTABIPR#EGHGREGRVTABNPR#EGHGREGRVTABNPR#EGHGREGRDEFP!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
8VTABAPR#EHHGREGRGRVTABMPR#EIHGREGRGRVTABBPR#EIHGREGRVTABNPR#EIHGREGRDEFP!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
9VTABAPR#EGHGREGRVTABDPR#EGHGREGRVTABMPR#EIHGREGRVTABEPR#EGHGREGRDEFP!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
11VTABEPR#EGHGREGRVTABDPR#EGHGREGRVTABMPR#EIHGREGRVTABAPR#EGHGREGRDEFP!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
12VTABLPR#EGHGREGRGRVTABLPR#EIHGREGRVTABAPR#EGHGREGRVTABDPR#EGHGREGRDEFP!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
14VTABMPR#EIHGREGRVTABEPR#EGHGREGRVTABEPR#EGHGREGRVTABDPR#EGHGREGRDEFP!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
15VTABMPR#EIHGREGRVTABAPR#EGHGREGRVTABLPR#EHHGREGRVTABBPR#EIHGRE`

A saída é citação 55:

"La-dee-da, la-dee-da." - Annie Hall

Proibido anteriormente: "'&()*+-,./\037;<=>@X_[sovy pez]^{}

É executado em um Apple // e (ou emulador).

Breve explicação: Após limpar a tela, o "CALL 2111" salta para o código de máquina 6502 incorporado nas linhas 4-15, que grava cada caractere diretamente na página de texto.

Detalhes:

  • Linha 1: limpe a tela, imprima 2 novas linhas para que o prompt de comando não substitua a cotação, chame o código de máquina incorporado que começa na Linha 4 e saia.
  • Linha 2: Os programas da Apple normalmente são armazenados a partir do endereço 0x0801 (2049), mas eu tenho que adicionar preenchimento aqui para fazer o código da máquina incorporado iniciar em 0x83F (2111), pois '0' é um caractere proibido.
  • Linhas 4-15: o código da máquina pode consistir apenas em bytes que são ASCII imprimíveis. O tokenizador converterá palavras reservadas em bytes únicos codificados com o conjunto MSB (por exemplo, "VTAB" = 0xA2), mas converterá letras minúsculas em maiúsculas.

Desmontagem:

; Body of line 4: set up zero-page constants and index
; Y = offset from start of text page to current character
; Quote drawn right-to-left; start at offset 35 (0x23)
083F-   A2 23       LDX   #$23
0841-   8A          TXA   
0842-   A8          TAY
; Z-page 0x45-0x46 points to start of text page (0x0400)
0843-   A5 45       LDA   $45
0845-   45 45       EOR   $45
0847-   85 45       STA   $45
0849-   49 45       EOR   #$45
084B-   49 41       EOR   #$41
084D-   85 46       STA   $46
; This TXA effectively a no-op to prevent incorrect tokenization
; ("FRETURN" would get tokenized as "FRE TURN", not the desired "F RETURN")
084F-   8A          TXA   
; All characters stored as uppercase ASCII. To display correctly, MSB
; must be set, so uppercase is XORed with 0x80. To transform to lowercase,
; XOR with 0xA0; To transform to symbol, XOR with 0xE0.
;
; Store constant 0xA0 at memory 0x47 (loading A from somewhere on text
; page which had just been cleared to all 0xA0)
0850-   B1 45       LDA   ($45),Y
0852-   85 47       STA   $47
; Store constant 0x80 at memory 0x48
0854-   45 47       EOR   $47
0856-   49 80       EOR   #$80
0858-   85 48       STA   $48
; Store constant 0xE0 at memory 0x49
085A-   45 48       EOR   $48
085C-   49 E0       EOR   #$E0
085E-   85 49       STA   $49
; Embedded code too big to fit on one line (~255 char input limit) so must
; jump to body of next line. But smallest offset that can be encoded is
; 0x21 (ASCII '!') so do that and pad out rest of line with more '!'
0860-   B8          CLV   
0861-   50 21       BVC   $0884

; Body of line 5: draw last 4 characters (right-to-left)
; A = 0x4C (ASCII 'L')
0884-   A2 4C       LDX   #$4C
0886-   8A          TXA
; XOR with constant 0xA0 stored at 0x47, which shows up as 'l'   
0887-   45 47       EOR   $47
; Write to text page (0x400 + 0x23)
0889-   91 45       STA   ($45),Y
; Move 1 char to the left
088B-   88          DEY   
; Next char'l', same process (could optimize here)
088C-   A2 4C       LDX   #$4C
088E-   8A          TXA   
088F-   45 47       EOR   $47
0891-   91 45       STA   ($45),Y
0893-   88          DEY   
; Next char 'a'
0894-   A2 41       LDX   #$41
0896-   8A          TXA   
0897-   45 47       EOR   $47
0899-   91 45       STA   ($45),Y
089B-   88          DEY  
; Next char 'H' 
089C-   A2 48       LDX   #$48
089E-   8A          TXA   
089F-   45 48       EOR   $48
08A1-   91 45       STA   ($45),Y
08A3-   88          DEY   
; Decrement index an extra time since next char is a space
08A4-   88          DEY   
; Jump to body of next line after padding
08A5-   B8          CLV   
08A6-   50 21       BVC   $08C9

; ... Lines 6-14 similar ...

; Body of line 15
; '-'
0A64-   A2 4D       LDX   #$4D
0A66-   8A          TXA   
0A67-   45 49       EOR   $49
0A69-   91 45       STA   ($45),Y
0A6B-   88          DEY   
; 'a'
0A6C-   A2 41       LDX   #$41
0A6E-   8A          TXA   
0A6F-   45 47       EOR   $47
0A71-   91 45       STA   ($45),Y
0A73-   88          DEY   
; 'L'
0A74-   A2 4C       LDX   #$4C
0A76-   8A          TXA   
0A77-   45 48       EOR   $48
0A79-   91 45       STA   ($45),Y
0A7B-   88          DEY   
; '"'
0A7C-   A2 42       LDX   #$42
0A7E-   8A          TXA   
0A7F-   45 49       EOR   $49
0A81-   91 45       STA   ($45),Y
; Return from CALL
0A83-   60          RTS   

O código da máquina certamente poderia ser otimizado, mas algumas peculiaridades se devem a restrições de codificação, por exemplo:

  • A frase é desenhada da direita para a esquerda, pois decrementar Y é mais fácil de codificar que Y incrementador.
  • Muitas sequências "LDX imm; TXA" porque o código de operação para "LDA imm" (0xA9) é mapeado para a palavra reservada "COLOR =" que contém char ilegal = '.
ido_nativo
fonte
8

41. AJUSTAR (não usa L)

(Não deve haver novas linhas à direita)

````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````K`8``8``F``RK``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````n```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````K`F`````8````F````F```RF``K````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````K`F``RF```8````F````RK```````````````````````````````````````````````````````K`RF``````F`````F````RF```F``RK```````````````A```````````````K`AF``RF`RF``8```K```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````n``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````n````````````````````````````````````````````````````````````````````````````n```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````K`AF````F```8``RF``RK```````````````````````````````````````````````````````````K`RF`````F````F```RF``F`FK```````````````````A````````````````````````K`A8``F``F```RF````RK```````````````````````````````A`````````````````````````````````K`AtF``8```tK````````````````````````````````````K`AF````tF```8````RK``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````K`````````````````````````````````````````````````````````````````````````````````````````````````````````````n```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````n````````````````````````````````````````````````````K`AtF``F```F````RF`````RK```````````````````````````````A````````````````````````````K`AF``F`F``8```tK````````````````````````````````````````````````K`A8``````F``````F`````8````K`````````````````````````````````````````````````````````````````````````````````````````````````````````K`ARF`````tF``````RF`````RK``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````n`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
``````````````````````````````````````````````````````````K`RF```F``RF```RF````RK````````````````````````````````````````````````````````````````````````````````````````A``````````````````````````````````````````````````````````````````````````````K`AF`````tF``````F`````8````K`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````K`ARF`````8````RF````RK``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````K`F``F```F````8`````F`````RK````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
`````````````````````````````````````````````````````````n````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````n```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````C
````````````K`RF`F``8```RF```K``````````````````````````A`````````````````````````K`AF````tF`````tF``````RK`````````````````````````````K`F`````RF``````tF```````tK``````K````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````K`AF````F```RF````tF```RK```````````````````````````````````````````````````K`8```F```RF````RF```K``````````````````````````````````K`tF```8``F``RK```````````````````````````K`F````8```RF```F``RK````````````````````````````A``````````````````````````````K`AF```8````tF````RK```````````````````````````````````````````````````K`F``F```F````F`````8``````RK`````````````````````````````````````````````````````````K`8``````F``````RF`````tK```````````A`
```````````n```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````n`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````n```````````````````````````````````````````````````````n`````````````````````````````````````````n``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````n`````````````````````````````````````````````````````````````````````````````````````n``````````````````````````````````````
``````````A````````````````````K`A8```F```tF````F`````K`````````````````````````````````````````````````````K`A8````F````tF```RK``````n`````````````````````````````K`AK````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````K`ARF`````8````8````K```````````````````````````A````````````````````````K`AF`````F````8```RF```RK``````n`````````````````K`ARF``8```RF```RK``````n```````````````````````K`AF``F`F``F```8````F````K`````````````````````````````````````````````````````K`ARF````F```8``F``RK```````````````````````````A```````````````````````````````K`ARF`````tF````8`````K```````````````````````````````A```````````````````````````K`Ai````````
```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
K`8F8`F`K````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````K`AK`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````K`AF```F````8`````8`````K````````````````````````````````````````````````````K`AK``````````````````````````````````````K`AK``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````K`AF``F`F``8```F```F````K`````````````````````````````````````````````````````````K`A8``````F``````F`````8````K`````````````````````````````````````````

A saída é citação 50:

"Houston, we have a problem." - Jim Lovell

Proibido anteriormente :"#$&'()*+,-./01357:;<=>@[\]^_ BdeEghJNopQksvWxXyz{|}~

Caracteres restantes:

  • Símbolos: ! % ? `
  • Números: 2 46 89
  • Maiúsculas: A CD FGHI K M OP RSTUV YZ
  • Minúsculas: abc f ij lmn qr tu w

ADJUST é uma linguagem 2D com 1 registro e 2 pilhas. O ponteiro do código começa no canto inferior esquerdo e depois caminha na direção nordeste. As instruções são baseadas na fatoração principal do código de caractere atual, por exemplo Z= 90 = 5 × 3 × 3 × 2, portanto, o caractereZ executará a ação "5" uma vez, "3" duas vezes e "2" uma vez. Isso nos permite ter várias maneiras de executar uma função e evitar os caracteres proibidos.

A ideia básica do programa é:

  1. execute o suficiente "5" (virar o último bit) e "2" (girar 3 bits à direita) para fazer com que o acumulador contenha o código ASCII correto para imprimir
  2. execute "3" (empurre para uma pilha mais leve e faça uma curva complicada) até que a pilha nº 2 contenha o acumulador
  3. execute "13" (pop pilha 2 e imprima) para imprimir esse código
  4. porque "3" girará o ponteiro do código de uma maneira complicada; se não avançarmos horizontalmente, quebraremos facilmente o limite de 64 novas linhas. Então, precisamos fazer mais "3" s até que a direção esteja correta.

Na etapa 1, usaremos essas letras para fornecer os 2 e 5:

  • F (7 × 5 × 2)
  • R (41 × 2)
  • t (29 × 2 × 2)
  • 8 (7 × 2 × 2 × 2)

Existem 7, 29, 41, mas isso não afetará o resultado final. Na etapa 2, usaremos K(5 × 5 × 3) para fornecer um "3". Observe que um par de "5" não funciona.

Na etapa 3, escolhemos A(13 × 5). Na etapa 4, usaremos n(11 × 5 × 2) para controlar o tamanho da pilha e Kajustar a direção.

Geralmente, se a etapa 1 não contiver nenhuma R, usamos KAnKpara imprimir o caractere e subir 4 linhas. Caso contrário, usamos KKApara imprimir e descer duas linhas. Ocasionalmente, há também umaKnnK necessário subir 4 linhas à força, pois o ponto de partida deve estar no canto inferior esquerdo.

Se alguém estiver interessado, aqui está um ambiente de trabalho para produzir o código acima. Não há gerador automatizado.

kennytm
fonte
8

23. Glypho , não usa%

2248242424422424244224242442242424422248244224242442244422482424244224242442242424422248244224242442242424422424244222482442244422482424244224242442242424422424244224242442244422482424244222482442242424422248244224242442242424422248244224242442224824422424244222482442244422482424244222482442242424422424244224242442242424422424244222482442244422482424244222482442242424422424244222482442242424422248244224242442224824422424244224442248242424422248244224242442224824422424244224242442224824422424244224242442244422482424244224242442242424422424244224242442244422482424244222482442242424422248244224242442242424422248244224242442242424422444224824242442224824422424244224242442224824422424244222482442242424422248244224242442224824422444224824242442242424422424244224242442242424422444224824242442224824422424244224242442242424422424244222482442242424422444224824242442224824422424244224242442242424422248244224242442242424422248244224442248242424422424244224242442242424422424244224442248242424422248244224242442242424422424244224242442242424422248244224442248242424422248244224242442242424422248244224242442224824422424244224242442244422482424244222482442242424422424244222482442242424422248244224242442224824422424244222482442244422482424244222482442242424422424244222482442242424422248244224242442224824422424244224442248242424422248244224242442242424422424244222482442242424422424244222482442244422482424244224242442224824422424244222482442242424422248244224242442244422482424244224242442242424422424244222482442242424422444224824242442242424422424244224242442242424422444224824242442242424422248244224242442224824422424244224242442224824422444224824242442242424422424244224242442242424422444224824242442242424422424244224242442224824422424244222482442242424422248244224442248242424422248244224242442224824422424244224242442242424422248244224242442244422482424244222482442242424422248244224242442242424422248244224242442242424422248244224442248242424422248244224242442224824422424244224242442242424422248244224242442224824422444224824242442224824422424244224242442224824422424244224242442242424422248244224442248242424422248244224242442242424422248244224242442224824422424244222482442242424422444224824242442224824422424244222482442242424422424244224242442224824422424244222482442244422482424244222482442242424422424244222482442242424422424244222482442242424422248244224442248242424422248244224242442242424422424244224242442242424422248244224442248242424422248244224242442224824422424244222482442242424422424244224242442224824422444224824242442224824422424244224242442242424422424244224242442224824422444

A saída é citação 30:

"I want to be alone." - Grusinskaya

Proibido anteriormente :!"#$&'()*+,-./013567:;<=>@[\]^_` AbBCdeEFghIjJkLMNopqQRsTUvVWxXyYzZ{|}~

Caracteres restantes:

  • Símbolos: ?
  • Números: 2 4 89
  • Maiúsculas: D GH K OP S
  • Minúsculas: a c f i lmn r tu w

Observe que isso funciona com o intérprete Java , mas que não concorda com a página esolangs na codificação de [e +. No entanto, o design do Glypho é tal que o conjunto completo de instruções está disponível desde que você tenha quatro caracteres distintos, e tudo, exceto os loops, estará disponível se você tiver três, portanto, esse é um detalhe menor.

Eu já havia escolhido uma citação de que gostei de um filme que realmente vi, mas aparentemente negligenciei uma regra. :(

Peter Taylor
fonte
3
Bem, lá vai a tática de módulo favorita de todos: P
Sp3000 27/11
1
Você não pode usar Citação 6: há essa regra "O número de cotação que você escolher não deve ser superior a 5 abaixo o seu número de resposta"
anatolyg
@anatolyg, eu perdi essa regra. Obrigado. Atualizada.
Peter Taylor