Los 95 personajes de ASCII ... 95 citas de películas

119

Actualización: ¡ El ganador ha sido decidido, pero el desafío no ha terminado!

Finalmente, casi 3 meses después de que la pregunta comenzó, ¡alguien ha seguido siendo el último en responder por más de una semana! ¡Felicitaciones a jimmy23013 con su respuesta P1eq!

Sin embargo todavía hay 8 quedan caracteres: 48KSaclw. Si alguien es realmente ambicioso, puede seguir intentando con eso: D

¡Muchas gracias a todos los que participaron, especialmente aquellos de ustedes que mantuvieron el concurso durante tanto tiempo con múltiples respuestas, en particular Kenny TM con la friolera de 25 respuestas!

Además, gracias a cualquiera que mantuvo actualizada la lista de respuestas, fue de gran ayuda :) (especialmente porque he estado fuera de SE por un par de meses: P).


Pregunta original

En 2005, el American Film Institute produjo AFI's 100 Years ... 100 Movie Quotes , una lista de las mejores citas del cine estadounidense. Aquí se enumeran exactamente como deberían usarse en este desafío:

(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

(Siéntase libre de marcar las citas como se usa).

Hay 95 caracteres ASCII imprimibles (códigos hexadecimales 20 a 7E), eso es bastante cercano a 100:

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

En este desafío, los usuarios se turnarán para escribir programas que impriman una de las citas de películas utilizando un nuevo lenguaje de programación y un subconjunto más pequeño de ASCII imprimible cada vez.

Cómo funciona esto

Ya he enviado la primera respuesta y la he etiquetado como 95 ya que se me permitió usar los 95 caracteres ASCII imprimibles en mi programa. Es un programa de Python que imprime la cita número 100 "I'm the king of the world!" - Jack Dawsonen stdout.

La segunda persona que responda debe elegir una nueva cita, un nuevo lenguaje de programación y uno de los 95 caracteres ASCII imprimibles para excluir de su código. Deben escribir un programa sin usar este carácter que imprime su cita elegida en stdout. Deberían marcar su respuesta como 94 ya que tenían 94 caracteres ASCII imprimibles para trabajar (piense en ello como una cuenta regresiva).

La tercera persona que responda debe elegir una cita y un idioma que no se hayan utilizado en ninguna respuesta anterior (solo 95 y 94 en este caso), y un nuevo personaje para renunciar. No deben usar este carácter ni ninguno de los caracteres previamente prohibidos en su código. Marcan su respuesta como 93.

Este proceso de respuesta continúa así hasta que todos los caracteres ASCII imprimibles estén prohibidos y alguien dé la respuesta "1", o mucho más probable, nadie pueda descubrir cómo responder de nuevo.

Reglas (por favor lea cuidadosamente)

Es importante entender que solo una persona puede responder a la vez y cada respuesta depende de la anterior. Nunca debe haber dos respuestas con el mismo número, cita o lenguaje de programación.

Es probable que haya respuestas contradictorias enviadas al mismo tiempo, y eso está bien. Si eso sucede, la persona que técnicamente respondió más tarde debería eliminar rápidamente (como 10 minutos o menos) su publicación o editarla para que se convierta en la siguiente respuesta. De lo contrario, no edite el código a menos que sea realmente necesario . Se recomienda editar las publicaciones para corregir solo el formato.

Reglas especificas

  • Un usuario que acaba de responder debe esperar al menos una hora antes de responder nuevamente.
  • Un usuario no puede responder dos veces seguidas.
  • El número de cotización que elija no debe ser más de 5 por debajo de su número de respuesta. Por ejemplo, la respuesta 90 puede elegir cualquier cita no utilizada del número 85 al 100. Esto deja las mejores citas para las respuestas más difíciles. Aparte de esta regla, la numeración de las citas es irrelevante.
  • Los programas solo pueden contener pestañas, nuevas líneas y el carácter ASCII imprimible que no están prohibidos hasta ahora. (Las pestañas y las nuevas líneas nunca están prohibidas).
  • No hay límite de duración del programa, pero puede que no haya más de 64 pestañas o 64 líneas nuevas en su programa.
  • Los idiomas se consideran distintos si comúnmente se les conoce con diferentes nombres. Las diferentes versiones de lenguajes de programación no se consideran distintas. (Los lenguajes de marcado como HTML sí cuentan, pero se prefieren los lenguajes de programación completos). Su idioma debe haber existido antes del comienzo de este concurso.
  • Si su idioma no tiene stdout, use un mecanismo de salida de texto similar.
  • Su programa no debe recibir información o tener efectos secundarios inesperados como la creación de archivos.

Asegúrese de que su programa sea válido. Debería poder ejecutarse como un programa completo tal cual, no solo en un entorno REPL .

Tenga en cuenta que la "cita" que debe incluir incluye las comillas y la persona que lo dijo (pero no el número de la cita). Su programa solo debe producir su presupuesto exactamente como aparece en la lista anterior (una nueva línea inicial / final está bien).

Formateo

Formatee sus respuestas de esta manera, {stuff in curly braces}necesita ser reemplazado:

#{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}

Las <code>etiquetas se pueden reemplazar con backticks ( `) siempre que no haya ningún backtick dentro de ellas.

Puntuación

El objetivo comunitario de este desafío es que las respuestas lleguen el mayor tiempo posible.

El ganador oficial es el usuario que responde en último lugar, después de una semana sin respuestas adicionales. Aceptaré su última respuesta.

Lista de respuestas (la más nueva primero)

  1. 4 Unario progresivo
  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 de máquina x86
  4. r BSM
  5. D ShaFuck 0.2
  6. u Villmark
  7. O Código máquina PDP-11
  8. f ProgFk
  9. i Teclado numérico
  10. H Tri
  11. 2 FERNANDO
  12. P Puntiagudo
  13. m Subleq
  14. G FlogScript
  15. ? Nqubl
  16. % Glifo
  17. ! 3var
  18. q ETA
  19. j BrainSpace 1.0
  20. V Insomnio
  21. ` asdf
  22. 6 Lazy K
  23. C ! Py! Batch 1.5
  24. T Fuckfuck
  25. F PoGo
  26. R Golunar
  27. b Código de máquina 6502 + monitor del sistema Apple II
  28. Y Headsecks
  29. I BRB
  30. U Braincrash
  31. Z Extático
  32. M Granja
  33. A Enema
  34. L AJUSTAR
  35. $ Beatnik
  36. N Rebmu
  37. g Dupdog
  38. B Gammaplex
  39. J A la mierda4
  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 Hierba
  49. # URSL
  50. | Burlesco
  51. x Emmental
  52. ~ Applesoft BASIC
  53. ^ Adelante
  54. 7 80386 código máquina + DOS
  55. _ Argh!
  56. v Rexx
  57. } Alfa Beta
  58. o Super Stack!
  59. e Pyth
  60. z TeX llano
  61. > WASD
  62. ] POSIX shell
  63. & Algarabía
  64. / GolfScript
  65. * Asamblea x86_64
  66. 0 AppleScript
  67. X Deadfish ~
  68. , Cuchara
  69. - oOo CODE
  70. = J
  71. @ Mathematica
  72. . Perl
  73. + ADN #
  74. < Pi
  75. ) Posdata
  76. [ A B C
  77. s corriente continua
  78. { HTML
  79. ( Unario
  80. ; Ook!
  81. ' CJam
  82.   PHP
  83. " Brainfuck
  84. \ Maravilloso
  85. 3 C ++
  86. y Rubí
  87. p JavaScript
  88.      Pitón

(Siéntase libre de editar si es incorrecto o desactualizado)

Esta pregunta funciona mejor cuando ordena por "más antiguo".

NOTA: Al igual que mi última pregunta , esta es una prueba de un nuevo tipo de desafío donde cada respuesta depende de la última y aumenta la dificultad. Venga a chatear o meta para discutir cualquier pregunta o la idea en general.

Pasatiempos de Calvin
fuente
Que extraño. Todos saben cómo hacer el # 2, pero nadie quiere hacerlo (principalmente porque el # 1 sería imposible). Si este desafío se reiniciara, probablemente sería terminable.
CalculatorFeline
¡Haré esto!
Christopher
@CalculatorFeline ¿cómo haces 2?
Christopher
De la misma manera que lo haces # 1. Lenguage Por supuesto, eso mataría el desafío.
CalculatorFeline
@CalculatorFeline Lenguage se inventó para este desafío, que es una laguna estándar . (Ver el enlace en la primera línea.)
jimmy23013

Respuestas:

19

8. P1eq (usa no n)

Requiere una plataforma que no sea Windows de 64 bits para funcionar correctamente, al igual que la respuesta de Addleq. Usó el mismo truco para el -1.

Tiene 64 líneas nuevas y 57 pestañas.

Es lento y terminó en unos 18 minutos en mi computadora.

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

La salida es la cita 8:

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

Anteriormente prohibido :

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

Restante:

  • Números: 4 8
  • Mayúscula: K S
  • Minúscula: a c l w

P1eq es como Subleq y Addleq, con la instrucción B = A + 1 y salta si B no cambia.

Explicación:

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 y * 484 juntos, y restablece * 444 cuando se convierte en un cierto valor. Cuando * 484 es igual a los datos, * 444 será el resto de los datos dividido por algún valor.

Solo 6 celdas de memoria en el código son direccionables directamente con 4 y 8. Debo reutilizar algunas de ellas. Esto también realizó algunas operaciones que no estaban en el orden que quería, como el uso de variables no inicializadas. Pero puedo descartar lo que se devuelve en la primera vez del ciclo e inicializar después de eso.


Algunos otros idiomas encontraron interesantes pero ya no se pueden usar:

  • Más variantes unarias
  • Idiomas usando números
    • NULL Creí que debería funcionar sin números impares. Lamentablemente no lo hace.
    • Herrero#

Ahora me quedan 3 idiomas.

Para cualquiera que quiera escribir más respuestas, aquí hay algunas instrucciones para buscar:

  • Códigos de máquina reales, si tienen formatos que no requieren un encabezado de archivo, y tienen instrucciones de entrada / salida de texto.
  • OISC basado en números.
  • Lenguajes no esotéricos, que por casualidad tienen instrucciones de un solo carácter. Quizás la familia APL.
  • Código binario auto modificable.
  • Idiomas diseñados para algunas ideas sobre cómo debería ser el idioma.
  • Los idiomas que no están en el wiki de esolangs y no tienen una descripción en inglés, lo que significa que apenas son conocidos por otros usuarios.

Para ser exactos, tuve:

  • Un lenguaje hexadecimal que debería poder imprimir una cita con algún código de extracción automática.
  • Un lenguaje 2D que funciona con dos caracteres distintos (excepto las nuevas líneas).
  • Un lenguaje no documentado que puede usar longitudes de línea como instrucciones.
jimmy23013
fuente
1
Wow, pensé que P1Eq no es posible en 64 líneas. +1. Excluyendo "Lenguage" me queda 1 idioma para la respuesta # 3. "Wunnel" habría sido un candidato perfecto para la respuesta # 2 pero imprime 0 y 1 literales en lugar de bits. Totalmente desperdiciado.
kennytm
1
@KennyTM Todavía no he probado mi respuesta # 2. Y supongo que no habrá una cita imprimible con mi idioma de respuesta n. ° 1 después de que alguien publique una respuesta n. ° 2. Ahora estoy buscando otras fuentes de idiomas que no sean wiki, pero no encontré nada que funcione.
jimmy23013
1
@KennyTM Encontré otra forma de imprimir cadenas con mi respuesta # 1, que puede imprimir hasta 62 caracteres. De hecho, así es como funciona el ejemplo predeterminado, pero era demasiado vago para leer la fuente para aprender ese lenguaje indocumentado.
jimmy23013
1
He estado fuera de SE por un tiempo, pero a menos que esté completamente equivocado, ¡esta respuesta ha ganado! Esto fue publicado el 17 de diciembre y han pasado un par de semanas. ¡Gran trabajo!
Aficiones de Calvin
126

90. Brainfuck, no usa "

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

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

La salida es la cita 90:

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

Anteriormente prohibido: py3\

Alguien tuvo que hacerlo antes de que cualquiera de ellos .+-esté prohibido.
Pruébelo aquí: http://ideone.com/dlu8VE

Michael M.
fuente
28
Absolutamente hermoso.
Flonk
13
¿Por qué lo eliminarías "? Eso es algo malo para todas las personas después de ti.
Peter Olson
75

51. Malbolge (no usa E)

(Las nuevas líneas son solo para aclaración y no son parte de la fuente).

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

La salida es la cita 49:

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

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

Caracteres restantes:

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

Puede ejecutarlo con el intérprete de referencia de Malbolge .

ido_nativo
fuente
13
¡Esta respuesta es asombrosa! Nunca antes había visto un programa útil de Malbonge, y mucho menos uno tan limitado. ¡Bien hecho!
isaacg
10
Santa Madre de Dios. ¿Cómo escribiste esto?
Ingo Bürk
2
Realmente quiero preguntar cómo se te ocurrió esto. Quiero decir que obviamente se genera como cualquier programa de malbolge, pero ¿cómo trabajaste en las restricciones de caracteres?
Ingo Bürk
23
Acabo de darme cuenta de que el código está formateado de manera que deletrea "Está vivo" en dos columnas. Dang, esto es asombroso. Vale la pena una recompensa, así que pondré una.
Ingo Bürk
3
@gone_native Detalles entonces? ¿Cómo lo hiciste?
Pureferret
37

10. Código de máquina x86, no utiliza 9

Cuando me di cuenta de que los caracteres restantes incluían los códigos de operación para 'Dec BX' y 'Push BX', concluí que todavía era posible un programa x86.

Enlace para el código y el archivo .com

El código parece una versión mucho más larga de esto:

44444444444444444444444444444444448444444444444444444444444444444444444444444444
44444444444444444444444444444448444444444444444444444444444444444444444444444444
44444444444444444444444444444444444444444444444484444444444444444444444444444444
44444444444444444444444444444444444444444444444444444444444444444444844444444444
44444444444444444444444444444444444444444444444444444444444444444444444444444444
444444444844444444444444444444444444444448KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
KKKKKKKKKKKKKKKKKKKKSSSSSSSSaKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKSKKKKKKKKKKKKK
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKSKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
KKKKKKKKKKKKKKKKKKKKKKKKKKSKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
KKKKKKKKKKKKKKKKKKKSSSSSSSSSSSSSSSSSSSSSSSSSSSSKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK

El código, comprimido bzip2y codificado en base 64, es el siguiente:

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

La salida es la cita 18:

"¡Lo hice, Ma! ¡La cima del mundo!" - Arthur "Cody" Jarrett

Anteriormente prohibido :

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

Caracteres restantes:

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

Es un código de auto modificación que crea un código de auto modificación, así es como funciona:

El texto se codifica primero ingresando ejecuciones de '4' terminadas por '8', que se asignan a instrucciones que efectivamente son NOP para este programa. A continuación, BX se reduce ('K') hasta que tenga el valor de dónde terminará el código de impresión en la pila. Esto se presiona 8 veces ('S'), y luego Pop All, 'a', se ejecuta para configurar SI y DI para más adelante. Luego, BX se reduce y empuja repetidamente para ingresar los valores arbitrarios del programa de impresión en la pila (el byte bajo), junto con un byte de basura (el byte alto). Luego, una secuencia larga de decrementos lleva a BX al valor 0xAAAD, que son las dos instrucciones de 1 byte 'Load Word' y 'Store Byte'. Cada par de estas instrucciones eliminará un byte de basura del código de impresión. Estas instrucciones se envían 28 veces (el tamaño del programa de impresión), y el resto del archivo se llena con más instrucciones de decremento para actuar como NOP. Estos NOP se ejecutarán hasta que se alcance la región de memoria utilizada por la pila, que se ha sobrescrito con el código de condensación. El código de condensación se ejecuta, eliminando los bytes basura en el código en la pila (señalado por SI y DI, que se configuraron anteriormente). Finalmente, cuando se realiza el código de condensación, el programa de impresión se ha almacenado con éxito en la memoria en la siguiente instrucción para ejecutar.

Código de ensamblaje para generar el código de máquina (FASM)

org 100h

; "¡Lo hice, Ma! ¡La cima del mundo!" - Arthur "Cody" Jarrett

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

data_start:
repetir 28 * 2 + 2
dec bx
final repetir
repetir 8
empujar bx
final repetir
popa

repetir 0x10000-0xFF21-28 * 2-2
dec bx
final repetir
empujar bx
repetir 0xFF21-0xFECD
dec bx
final repetir
empujar bx
repetir 0xFECD-0xFE4C
dec bx
final repetir
empujar bx
repetir 0xFE4C-0xFDB4
dec bx
final repetir
empujar bx
repetir 0xFDB4-0xFCEB
dec bx
final repetir
empujar bx
repetir 0xFCEB-0xFC7C
dec bx
final repetir
empujar bx
repetir 0xFC7C-0xFC12
dec bx
final repetir
empujar bx
repetir 0xFC12-0xFBB7
dec bx
final repetir
empujar bx
repetir 0xFBB7-0xFAFE
dec bx
final repetir
empujar bx
repetir 0xFAFE-0xFA81
dec bx
final repetir
empujar bx
repetir 0xFA81-0xFA61
dec bx
final repetir
empujar bx
repetir 0xFA61-0xFA21
dec bx
final repetir
empujar bx
repetir 0xFA21-0xF8CD
dec bx
final repetir
empujar bx
repetir 0xF8CD-0xF802
dec bx
final repetir
empujar bx
repetir 0xF802-0xF7B4
dec bx
final repetir
empujar bx
repetir 0xF7B4-0xF760
dec bx
final repetir
empujar bx
repetir 0xF760-0xF6F9
dec bx
final repetir
empujar bx
repetir 0xF6F9-0xF674
dec bx
final repetir
empujar bx
repetir 0xF674-0xF634
dec bx
final repetir
empujar bx
repetir 0xF634-0xF53C
dec bx
final repetir
empujar bx
repetir 0xF53C-0xF480
dec bx
final repetir
empujar bx
repetir 0xF480-0xF442
dec bx
final repetir
empujar bx
repetir 0xF442-0xF346
dec bx
final repetir
empujar bx
repetir 0xF346-0xF2D2
dec bx
final repetir
empujar bx
repetir 0xF2D2-0xF231
dec bx
final repetir
empujar bx
repetir 0xF231-0xF201
dec bx
final repetir
empujar bx
repetir 0xF201-0xF200
dec bx
final repetir
empujar bx
repetir 0xF200-0xF1BE
dec bx
final repetir
empujar bx

; 28 bytes de código

; terminado de almacenar el código de impresión

repetir 0xF1BE-0xAAAD
dec bx
final repetir
repetir 28
empujar bx
final repetir


; terminado de almacenar el código compacto, llene el espacio restante con 'dec bx'
; para actuar como un nop hasta que se golpee el código modificado
fill_pos:
repetir 0xffff-fill_pos -2
dec bx
final repetir
Sir_Lagsalot
fuente
1
Mi respuesta usó instrucciones 80386 ( IMULde cierto tipo), por lo que puede llamarse un "idioma" diferente. Ni siquiera intenté comprobar si x86 todavía es posible en esta etapa, ¡aparentemente lo es!
anatolyg
2
Y ahora todos los números impares se han ido :(
kennytm
@anatolyg Estoy muy feliz de escuchar eso, he editado la respuesta para reflejar esto.
Sir_Lagsalot
24

61. 80386 código máquina + DOS, no 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

La salida es la cita 64:

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

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


Crear un archivo ejecutable que use solo ASCII imprimible no es una tarea fácil. Afortunadamente, las respuestas anteriores no prohibieron muchos caracteres, por lo que solo necesitaba algunos parches aquí y allá.

Para ejecutar este programa, cópielo en un archivo con extensión .comy ejecútelo (los saltos de línea usan el formato DOS 0d 0a; hay un TABcarácter en el código). Es una pena que los sistemas Windows modernos de 64 bits no admitan código de 16 bits; uno necesita un sistema Windows de 32 bits o DOSBox para ejecutar el código.

Usé el debug.comdepurador de DOS para desarrollar el código. Para "ensamblar" el "código fuente", rediríjalo al depurador. En DOSBox:

depurar <quote.asm

Código fuente:

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

Algunas notas:

  • El mensaje de salida tiene todos los caracteres prohibidos enmascarados con XOR con una de 3 máscaras 0x41, 0x23y 0x24. Elegí máscaras que no estaban prohibidas.
  • El código que hace la salida contiene caracteres prohibidos, o peor, bytes no ASCII 0xcdy 0xc3. También están enmascarados con XOR, por lo que el código debe modificarse a sí mismo.
  • Todos los accesos a la memoria se realizan con un desplazamiento: los punteros nunca apuntan al material en sí, sino que varios bytes son más bajos. La razón es que, cuando se utiliza el acceso a la memoria sin un desplazamiento, los códigos de instrucciones no son ASCII.
  • El personaje kes muy importante aquí: codifica la IMULinstrucción de multiplicación. Lo uso para adquirir valores constantes: por ejemplo, la constante 0x216b, cuando se multiplica por 0x45, da la constante útil 0x01d7, que es un puntero (con un desplazamiento, como se describe anteriormente) al código que debe ser parcheado. De manera similar, la máscara de parcheo es 0x2132*0x36=0x8c(no importa el truncamiento allí).
  • Como se describió anteriormente, obtener constantes es un gran dolor. Para empeorar las cosas, no asumí nada acerca de los valores iniciales de los registros. DOS normalmente los pone a 0, pero uno nunca puede estar seguro ... Esto dio lugar a un ejercicio divertido al inicializar un registro a 0: and ax, 2142; and ax, 4221.
  • Agregué 2 saltos de línea para "legibilidad" (¡afortunadamente, esto no es código golf!). Se especifican como "xor ax, a0d" en el código; debe haber un número par de ellos, por lo que el valor de axno cambia.

Editar: ya no usa el _personaje (mala sincronización en la publicación): no se puede usar pop di, por lo que ahora se usa dimucho menos el registro.

anatolyg
fuente
@ya está prohibido en 78, elija otro símbolo por favor.
kennytm
3
Atrezzo, señor, atrezzo.
Claudiu
3
"Crear un archivo ejecutable que use solo ASCII imprimible no es una tarea fácil". Este artículo le puede interesar: cs.jhu.edu/~sam/ccs243-mason.pdf
Russell Borogove, el
22

85. HTML5 (no usa {)

&#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

La salida es la cotización 91.

"Who's on first." - Dexter 

Anteriormente prohibido : py3\" ';(

kennytm
fuente
8
Qué demonios ...
Ethan Bierlein
19

12. ShaFuck 0.2 (no utilizaD )

El código fuente tiene exactamente 4,784,128 bytes de longitud y contiene todos los caracteres permitidos excepto D. Parece que:

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

aquí (a × 1017) significa el carácter "a" repetido 1017 veces. El archivo comprimido en bzip2 codificado en base64 (247 bytes) es:

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

La suma SHA1 del archivo original debe ser 1250ecf73c61ef93a31c4f7dfaa0a7631ada50bf.

La salida es la cita 9:

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

Anteriormente prohibido :

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

Caracteres restantes:

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

ShaFuck es una variante de Brainfuck. Toma cada fragmento de 1024 bytes, calcula el resumen SHA-1, luego usa la salida de 20 bytes como un programa Brainfuck. Como se explica en la publicación del blog vinculada desde la wiki, hay una "vulnerabilidad" en v0.2 que la salida SHA-1 del formulario:

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

es aceptado. Esto permite una conversión directa de un comando brainfuck a un fragmento de 2048 bytes. El codificador utiliza a, zcomo el conjunto de caracteres, que no es adecuado para nosotros. Así que necesitamos escribir un "minero" nosotros mismos. Ahora, hay 13 caracteres válidos disponibles. Suponiendo que la salida SHA-1 es aleatoria, si queremos arreglar los primeros 3 bytes, corresponde a 3 × log₁₃ (256) ~ 6.5 caracteres de entrada. Por lo tanto, necesitamos iterar todas las cadenas de 7 caracteres hechas de estos 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])

Rápidamente podríamos obtener estos equivalentes:

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

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

Así que finalmente tenemos este sencillo codificador:

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
fuente
1
SUFFIX = 'a' * (1024 - 7)- por si acaso 1024 - 7no es siempre 1017? :-)
Joe
1
@ Joe: Sí, lo es.
kennytm
1
Maldición, ahí va mi respuesta # 2.
gone_native
@gone_native Yo también tuve esto. Pero todavía tengo otra respuesta # 2 ...
jimmy23013
1
@ Joe, (1024 - 7)es más legible.
Vi.
18

87. ¡Ook !, no 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.

La salida es la cita 84:

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

Anteriormente prohibido: py3\" '

stevecross
fuente
¿Escribiste todo eso tú mismo?
Beta Decay
44
¡He escrito un programa Java que convierte una cadena en un Ook! programa que genera la cadena. Pero no usa bucles, solo aumenta y disminuye.
stevecross
1
@feuerball así que ... ¡eso es un Ook realmente ineficiente! programa que has generado allí. (en términos de espacio)
tomsmeding
2
Lo sé, pero al menos hace lo que se supone que debe hacer.
stevecross
1
Esa es una combinación perfecta de lenguaje y cita. Supongo que has leído imágenes en movimiento ?
TRiG
18

76. oOo CODE , no utiliza-

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

La salida es la cita 78:

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

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

No publicaré otro equivalente / derivado de BF. Promesa.

EDITAR: Actualicé el código para que sea más legible. (risas) No afecta a ningún personaje prohibido.

Utilicé esta herramienta para generar mi BF puro. Luego lo convertí a 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')

Y luego usé este script de Python para obtener la versión "legible" de puro oOo CODE y un 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
fuente
2
Y por alguna razón, siempre lo leo con voz fantasma.
ASCIIThenANSI
18

9. Addleq (no usa t)

Usos sqasm.cppen la página de esolang para ensamblar. Requiere una plataforma de 64 bits que no sea Windows para funcionar correctamente.

Hay exactamente 64 pestañas y 64 líneas nuevas (no hay líneas nuevas finales). Uf.

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

La salida es la cita 22:

"Bond. James Bond." - James Bond

Anteriormente prohibido :

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

Restante:

  • Números: 4 8
  • Mayúscula: K S
  • Minúscula: a c l n w

"Addleq" un OISC es similar a "Subleq", pero usa la suma en vez de la resta.

Construyendo "-1"

La salida en Addleq funciona escribiendo en la dirección de memoria -1. Como todos los números impares están prohibidos, no podemos construir un -1 por medios normales. Sin embargo, podemos engañar al ensamblador para que cree un -1:

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

Aquí se sscanf(s, "%d", &ret)comporta como ret = strtol(s, NULL, 10);(C11 §7.21.6.2 / 12), y cuando la entrada se desborda, strtoldevolverá LONG_MAX (C11 §7.22.1.4 / 8). Por lo tanto, si sizeof(long) > sizeof(int), deberíamos obtener ret == -1. Sin embargo, en la plataforma quesizeof(long) == sizeof(int) por ejemplo 32 bits o Windows, obtendríamos 0x7fffffff haciendo que la solución anterior no sea válida.

Guardar pestañas con el ensamblador

En addleq de bajo nivel, cada instrucción tiene una longitud de 3 números. Como solo tenemos un presupuesto de 128 espacios en blanco, tenemos que imprimir la cadena completa con 129/3 = 43 instrucciones. Esto es completamente insuficiente ya que la cita más corta (elegida aquí) tiene 32 caracteres.

Sin embargo, el ensamblador admite alguna notación abreviada:

  1. Si una línea contiene solo 2 números, proporcionará automáticamente el 3er número como la dirección de la siguiente instrucción
  2. Si una línea contiene solo 1 número, ese número se copia y se proporciona un tercer número utilizando la regla # 1.

La regla # 2 fue diseñada para que "subleq" ponga a cero rápidamente una dirección. Pero para "addleq" nos permite duplicar un valor sin pestañas.

Esto nos permite ajustar apenas todo el programa en 129 números.

Creando números

La cita se elige porque es corta y tiene muchos caracteres duplicados. Los números que necesitamos crear son:

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

Podríamos usar números en la dirección 4, 8, 44, 48, 84, 88, ... La regla # 1 del ensamblador ya colocó "9" en * 8 y "45" en * 44, así que los usaremos (Es bueno que sean números impares). Además, intentaremos ajustar "-1", "8" y "44" en estas direcciones moviendo los cálculos. El resultado es la primera mitad del 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

La ultima linea

Después de construir todos los números, podemos imprimir cada carácter. El programa final, sin embargo, tiene más de 67 líneas, dos demasiadas. Por lo tanto, debemos combinar las últimas 3 líneas juntas:

# From:
4484    88888888888888888888
888 88888888888888888888
8888    8888    88888888888888888888

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

Como la línea tiene más de 2 números, debemos suministrar manualmente el tercer parámetro de las instrucciones. Eso significa que intercambiamos cada nueva línea por 2 pestañas. Afortunadamente, antes de la combinación, utilizamos 60 pestañas, por lo que el resultado final apenas superó los requisitos.

kennytm
fuente
1
¡Qué impresionante lista de coincidencias! Parece que todo fue parte de tu astuto plan.
anatolyg
@anatolyg: Esta es en realidad la tercera versión del código :), las ecuaciones se reescriben varias veces para minimizar el número de líneas. Las versiones anteriores tienen ~ 3 líneas demasiado.
kennytm
Sería aún mejor si en lugar de 4y 8hubiera 0y 7.
Vi.
@Vi. O al menos 8 y 9 ... Sin embargo, parece que todavía hay algún lenguaje basado en números.
jimmy23013
17

89. PHP, no 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;

La salida es la cita 94:

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

Anteriormente prohibido :py3\"

es1024
fuente
24
Maldito hombre malvado.
Joshpbarron
¡Que alguien bloquee 'ahora!
Optimizador
77
@Optimizer hecho
Martin Ender
16

81. PI , no usa<

9.1415926525897922284626422822795028841971692992751058209749445927078164062862089986280048252421170679821480865102822066470928446095505822017252594081284811174502841027019285211055596446229489549200819644288109756659224461284756482227867801652712019091456485669224602486104542266482122906072602491412727245870066062155881748815209209628292540917152642678925902600112005205488204665212841469519415116094220572702657595919520921861172819026117921051185480744622799627495672518857527248912279281820119491298226720624406566420860212949462952247271907021798609427027705292171762921767522846748184676694051220005681271452605608277857712427577896091726271787214684409012249524201465495852710507922796892589225420199561121290219608640244181598126297747712099605187072110499999982729780499510597217228160962185950244594552469082026425222082522446850252619211881710100001278287528865875222082814206171776691472025982524904287554687211595628628822527875907519577818577805221712268066120019278766111959092164201989280952572010654858622788659261522818279682202019520252018529689957726225994128912497217752804791215155748572424541506959508295221168617278558890750982817546274649292192550604009277016711290098488240128582616025627076601047101819429555961989467678274494482552797747268471040475246462080466842590694912902126770289891521047521620569660240580281501925112522824200255876402474964722629141992726042699227967822547816260092417216412199245862150202861829745557067498085054945885869269956909272107975092029552211652449872027559602264806654991198818247977525662698074265425278625518184175746728909777727928000816470600161452491921722172147722501414419725685481612611572525521224757418494684285211219071941411145477624168625189815694855620992192221842725502542568876717904946016514668049886272127917860857841818279679766814541009518817861609506800642251252051171929848960841284886269456042419652850222106611864067442786220891949450471207107869609560640719172874677646575729624128908658526459958144904780275900994657640789512694681981525957098258226205224894077267194782684826014769909026401161944074550050682004962524517490996514014298091906592509072216964615157098580874105978859597729754989001617509284681582686818689427741559918559252459519594110499725246808459872716446958486518167162226260991246080512418841904512441065497627807977156914059977001296160894416948685558484060504220722258284886481584560285060168427094522674676788952521085225499546667278209864565961160548862005774564980055906045681740241125150760694794510965960940252288797108941456691468672287489405601015045086179286809208747609178249285890097149096759852612655497818921297848216829989487226588048575640142704775551121796414515217462141645428584447952658678210511411547157195211114271661021159695162114429524849071871101457654005902799044007420070105785090621980874478084784896800214457108687519405064002184501910484810050706146806749192781911979499520614196644287544406447451247181921799985910159195618146751426912297489409071864942219615679452080951465502252216028819101420917621178559566189177870810190697920771467221825625996615014215010680184477145492026054146659252014974428507125186660021124140881907104860017046496514509057962685610055081066587969981605747060840525714591028970641401109712062804090097595156771577004200078699060072005587601764594218741251471205429281918261861258674215791984148488291644706095752706957220917567116722910981690915280175506712748582222871825209252965725121081579151169882091444210067510114671101141267111169908658516198115019701651511685171417657618151556508849099898599821871455281116055076479185058902261854896021029000898570642046752590709154814165498594616071802709819940099244889575712828905920200260972997120844005742654895822911912597461667105816041428118810120182490175898524174417029112765618091771444010707469211201910020000080197621101100449290215160842444859607669848952286847841245526582141449576857262452441892029686426242410771226978028071189154411010446821252716201052652272111660196665571092547110557851760466820650109896526918620564769012570586056620185581007295606598764861179104511488501461116576867502494416680096265797877185560845529654126654085006140444018586769751456614068007002078776591044017127494704205622005089945610140711270004078547002699090814546646458807972708266840654228587856981052158089110657574067954571617752542021149557615814002501262285941102164715509792592109907965471761255176567511575178296664547791745011299614890104619947112962107140407518957059614589019089710111790429782856475002001986915140287080859904801094121472210179476477726224142548545400021571850061422881075850400600217518297986622471721591607716692547487589866549494501146540628421661917900197692656721461851067160965712091807618127166416274888800786925602902284721040117211860820419000422966171196177921117575114959501566049611862947265470642520081770067515906705020507280540567040086740510622224771589150495009844489000096040878076922599297805419541447477441842641298608099888687411260472156951621965864571021611598191195167151812974167729478672422924654166800980676928218280689964004824154017014161149658979409241217896907069779422062508221688957080798620001590776471651228905786015881617557829705200446042815126272007040146501977774160419906655418765979292144195215411418994854447145671811624991419111814809277771018618771411772075456545122077709212019051660962804909261601975988281610020166606528619026686006062705676000544776280050450777205547105859548702790814056240145171806246446267945612754181440785202262542127819449751824172058151114771199260618111467768796959701098119110771098704085910074641442822772604659470474587847787201927715280701767907707157210444700605700700492406901108050490160128404251219256517980694114528015147012047816417885185290928545201165819141965621149141415956258658655705526904965209858011850722426482919728584781161057777560688876446248246857926019515277148010480290058760758251047470916409610626760449256274204208020856611906254540072101505958450687724602901618766795240616042522577195429162991900645507799140070404028752628889609958794757291746426057455254079091451457111469410911949525191076020825202618798521887705842972591677812149699009019211697172727847684726860849001177024242916511005005168121164150189517029891922114517220118128069650117844087451960121228599171621110171144484640900890644954440061986907548516026027505298049187407866808818008510228004508504860825009002100219715518400605455007668282949004127765527929751754612955984684494618104746119966518581518420568511862186725211402810871121282789212507712629461229561989898915821167456270102181564622010496715188190970008119800497040720961006854066441949509790190699659552452005450580685501956720229219119119185680144901982059551002261505061920419947455085908102242955449597785779024742161727111724641415419478221818528624085140066604410258885698670540154706965747458550002521142107101545940516551790686627000799585115625784022988270720198987571415957811196458440059408750681216028764962867446047746491599505497274256269010490277819868259181465741268049256487985561451721478671101904688080406046555794986419270561872911748721120807601120029911067908627089408799062016295154100714248928007220126901475466847654576164774794675200490757155527819655621222926406160116158155907422020201187277605277219005561484255518792510141511984425122141576200610642506090497500865627109505919465897514101004822769006247405060256916078154781811528406679570611086150215044521274759245449454246828860611408414861776700961207151249140410272518607648216141411462151897576645216411767969011495019108575984421919862916421909949072062046468441170940026591840440780510008945257420995082965912285085558215725001071257012668002402929525220118726767562204154205161841604847565169998116141010029960780869092916040288400269104140792886215078424516709087000699282120660418471806555567252522567522861291042487761825829765157959847015622262914860014158722980514989650226291748788202714209222245119856264766914905562842501912757710284027998066165825488926488025456610172967026640765590429099456815065265105171829412701169110785178609040708667114965580404047690085781711086455870678120014587687126600489109095620099090610010291616152881484479099042517472261948045759114911405297614757481191567091101177517210080115590248510906692017671922011229094114676851422144771790907517004406619910400075111705471918550464490260655128162288244625759160000091072250807421821408805086572917715096828874782656995995744906617585441475221970968140800515598491754171818819994469748676265516582765848158845114277568790029095170281529716144562129640415211176006651012412006597558512761785818292041974844216080071910457618912049229279650198751872127267507981255470958904556057921221000546697499215610254947802490114195212182815109114079070860251522742995818072471625916685451000120948049470791191502670400282441860414262629548000448002670496248201792896476697585184271414251702969214889627668440121260927524960157996469256504916818160900121809290459588970695065049406004021665440755890045602882250545255640564482465151875471196218440965825007540885690941100015095261790780029741207665147909425902989695946995565761218656196722786256256125216420862869222104274889218654164802296780705765615144612046927906821207188177814211562821608961208068222468012248261177185896181409181901671672220888121511755600072798094004152970028780076670944474560104556417254070906979096122571429894671540578468788614445812014590571984922528471605049221242470141214780570455105008019086996000027604787081081754501192071412254908661918119529425786905076411006181519814189141596111854147546495569781018290097164651408407007070604112070599840452251610507027056205266012764848008407611800100527902054274628654006026745228651057065874882256981579267897669742205750596854408697450201410206724585020072452256426511410559240190274216248419140159989515194590944070469120914091870012645600162174288021092764579110657922955249887275846101264816999892256959688159205600101655256175678566722796619885782794848855814197518744545512965604404800966420557982906804052202770984294202500022576041807009476994159791594500069752148290066555661567874640054666564165474217045902521229542529169414599041608751201868179170214888689479151071617852902145292440771659495610510074210871426114974595615118498711757047101787957110422969066670214498617464595280824569445789772

La salida es la cita 81:

"Hello, gorgeous." - Fanny Brice

Anteriormente prohibido: py3\" ';({s[)

Qué ? Pi sin 3?
Mi intérprete aquí (perdón por la interfaz de usuario rudimentaria, basada en esta respuesta ): http://migl.io/projects/pi/index.php

Michael M.
fuente
16

79. Perl 5, no 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^|

La salida es la cotización 95:

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

Anteriormente prohibido: py3\" ';({s[)<+


Como lenguaje TMTOWTDI, Perl ofrece muchas maneras de sortear las restricciones. El método usado aquí es construir la declaraciónprint "that quote" como una cadena y evaluarla.

Aunque 'y "están prohibidos, Perl también permite expresar cadenas usando q«…»y qq«…»respectivamente. Y aunque ;está prohibido, ya que todas las declaraciones no son falsas, podríamos usar andpara encadenar declaraciones. Dado que las letras en mayúscula P, Y, Stodavía se permite su, podríamos poner p, y, sen la cadena final utilizando la lcfunción (en minúsculas), mientras que chrse puede utilizar para poner los símbolos "y .

kennytm
fuente
Puedo estar malinterpretando las reglas, pero esto usa tanto P como Y, así como S
GeoffWilson
1
@G_Wilson: mayúsculas y minúsculas son diferentes.
kennytm
Disculpa, me equivoqué. Olvidé que tienen valores ASCII diferentes.
GeoffWilson
"todas las declaraciones no son falsas": quiere decir que todas estas declaraciones no son falsas, ¿verdad? ( $foo=0es falso, por supuesto.) De todos modos, muy agradable; +1.
msh210
@ msh210 Sí, todas estas declaraciones no son falsas.
kennytm
15

54. CaneCode (no usaQ )

(No se necesitan nuevas líneas y espacios).

                                 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

La salida es la cita 71:

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

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


CaneCode es solo un derivado BF más, con el mapeo:

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

Solo una nota: los caracteres restantes son:

  • Símbolos: ! $ % : ? `
  • Números: 12 456 89
  • Mayúscula: ABCDEFGHIJKLMNOP RSTUVW YZ
  • Minúscula: abc fghijklmn qr tu w
kennytm
fuente
18
Estoy bastante seguro de que veo una Q allí
Hobbies de Calvin
14

6. Subskin (no utilizaK )

La línea 9 en el siguiente programa se reemplaza con algo comprobable. Tiene 2 líneas nuevas finales y exactamente 64 líneas nuevas en 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 que satisfaga los criterios, la línea 9 debe reemplazarse con el siguiente número grande. Creo que esto debería ser válido al igual que esas variantes unarias.

  • Tiene dígitos.
  • Cada dígito que tiene 4109527714173620014271192135615819980149748934951677499623857818618801276212206327654950831404071330954232878836395346962954202538476535987403920483325378835064959624187891476909072253512354662379230835497647226755470473642747146485760293230336401802073590883942400000000000000000 * k dígitos a la derecha es una a. Por lo que el último dígito es una aen la que k = 0, y hay 159321460184447640588063043795531819638245990121854536131792918542864566418397339281153516086677425424423723475531974684547855358001230183547851703274577276601612622258171727288003902331619018508731805969660163575803761844794365403871421372122820829226554024584224464882571689865777 de ellos.
  • Cada dígito que no está en esas posiciones es un 8.

Tenga en cuenta que el número construido está en la base 16 (pero los números en la descripción anterior están en la base 10). Si mi cálculo es correcto, debería ser el mismo que el número original en el programa mod 8 * (16 ^ 234-1) / 15. Cualquier número lo suficientemente grande y que satisfaga este criterio debería funcionar, pero no sé cómo construir uno más corto con solo4 8 a c .

La salida es la cita 1:

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

con una nueva línea inicial y final.

Anteriormente prohibido:

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

Caracteres restantes: 4 8 S a c w.

Explicación

Subskin es un OISC donde la instrucción es restar y omitir la siguiente instrucción si el resultado es negativo. Los primeros 3 campos en la memoria se asignan al puntero de instrucción, salida y entrada. El puntero de instrucciones se puede usar como "goto", y leerlo puede producir algunos números que de otro modo no estarían disponibles utilizando los únicos caracteres utilizables.

Al principio intenté comprimir el código en los dígitos en alguna base. Pero no pude jugar golf en 64 líneas. Así que cambié al enfoque de módulo que eliminó un nivel de bucle.

Básicamente es el algoritmo divisor común más grande. A / B se extrae en cada paso. Luego configure A = B y B = A mod B y continúe.

Más exactamente, cuando A> B incrementa los datos actuales, de lo contrario intercambia los números y mueve el puntero. Después de eso, el número más pequeño se resta del número mayor.

Finalmente, el código de extracción automática anula algo en el bucle y lo rompe, y continúa con el código extraído. El código extraído es bastante sencillo.

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.

Generacion

Suponga que A y B después del progreso de extracción son n y m. Es fácil revertir este progreso y obtener A y B (antes de que comiencen los datos útiles) en términos de n y m. Y A = an + bm, B = cn + dm. Establezca A en un número arbitrario que sea lo suficientemente grande y pueda hacer que nym sean positivos (y use solo los caracteres disponibles). nym pueden calcularse usando inversión modular. Entonces B está determinado por n y m.

Pero no es fácil hacer que B también consista solo en esos personajes. Utilicé un paso adicional que solo debería extraer algunos datos basura inofensivos. Entonces, el nuevo B sería kA + B donde k es un número entero positivo. Es fácil ver que tal k existe. Pero no estoy seguro de si es posible encontrar uno que sea lo suficientemente corto como para ser comprobable. Y utilicé el pequeño teorema de Fermat para encontrar uno que funcione en teoría.

Solo me queda un idioma # 2.

jimmy23013
fuente
13

78. Mathematica, no usa @

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

La salida es la cita 76:

"Hasta la vista, baby." - The Terminator

Anteriormente prohibido: py3\" ';({s[)<+.

Generado así:

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;

El programa es entonces:

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

con valores insertados para n2, ndiff, d2y ddiffy todos los espacios eliminado.


Mi idea original era utilizar ToString, FromDigits, IntegerDigits, Partitiony FromCharacterCode. Sin embargo, ambos FromDigitsy IntegerDigitstiene una sen ellos que no había notado.

Tyilo
fuente
55
Maldición, estaba trabajando en una Befunge.
PurkkaKoodari
11

72. Ensamblado x86_64 (nasm), no utiliza *

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

Utiliza 61 pestañas y 36 líneas nuevas.

La salida es la cita 68:

"Here's Johnny!" - Jack Torrance

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

Utiliza una writellamada al sistema con el número 0x2000001, que probablemente solo funciona en OS X. Ensamblado, enlace y ejecución:

nasm -f macho64 codegolf.asm
ld -e main codegolf.o -lc
./a.out
Tyilo
fuente
Mejor. Citar. Siempre. ¡Prestigio!
Conor O'Brien
11

71. GolfScript, no utiliza /

:?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]?^

La salida es la cotización 69:

"They're here!" - Carol Anne Freeling

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

Gracias a Peter Taylor por dejarme entrar en algunas peculiaridades de GolfScript para construir la cadena. Primero, puedo obtener una cadena vacía sin usar comillas, asignando el contenido STDIN (vacío) a una variable ( ?en este caso). Luego estoy construyendo una matriz anidada de números que, tomados mod 256, son los puntos de código deseados. Al agregar múltiplos de 256, puedo evitar duplicados y números que contengan 0y 3. Por último, presiono la cadena vacía con ?y tomo la diferencia de conjunto simétrico. Esto aplana la matriz y la convierte en una cadena, donde GolfScript solo se preocupa por el resto del mod 256.

Pruébalo aquí.

Martin Ender
fuente
10

91. Marbelous , no usa\

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

La salida es la cita 96:

"Snap out of it!" - Loretta Castorini

Anteriormente prohibido :py3

es1024
fuente
10

95. Python

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

La salida es la cotización 100:

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

Ninguno prohibido

Pasatiempos de Calvin
fuente
20
La diferencia en votos entre esta respuesta y esta respuesta es el enigma que es Stack Exchange.
Aficiones de Calvin
10

73. AppleScript, no usa 0

(Todos los "espacios" son "pestañas", según lo permitido por OP. Hay 25 pestañas y 8 líneas nuevas).

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

La salida es la cita 70:

"Is it safe?" - Dr. Christian Szell

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


Aquí primero construimos la variable cque es una lista de códigos ASCII de la cita. En AppleScript, number & numberproduce la lista de 2 elementos {number, number}y list & numberagrega el número a la lista, por lo que nos permite evitar usar {o ,. Además, &tiene menor prioridad que *y /, por lo que podemos crear la lista completa en una línea, evitando (o creando variables (lo que desperdicia 3 pestañas).

Después de eso, convertimos la lista de números cen la cadena d. Nuevamente usamos &aquí, ya que string & stringes concatenación. AppleScript no distingue entre mayúsculas y minúsculas, por lo que podríamos usar diSPlaYpara solucionar los pyscaracteres.

kennytm
fuente
Ah, también intenté hacer una respuesta AppleScript, pero no sabía que las palabras clave no distinguen entre mayúsculas y minúsculas, por lo que no pude usarlas sety fallé. Tenía respuesta para la cita # 62, pero no puedo usar eso ahora; P
Tyilo
10

57. Burlesque (no usa |)

Las nuevas líneas son solo para aclaración, pero las pestañas son necesarias. Hay 4 pestañas.

??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

La salida es la cita 87:

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

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


Burlesque es similar a GolfScript, pero generalmente cada comando tiene una longitud de 2 caracteres. La construcción es así:

  1. Burlesque admite enteros de precisión arbitraria, y también permite la conversión a base 36. Por lo tanto, primero codificamos todos los caracteres en minúscula en base 36:

       awyeryouregoingoutayoungsterbutyouvegottocomebackastarulianarsh₃₆
    == 3379063095879820583038345369081212641008420750861587542962343112066870047037314854758539\
       9600704049₁₀
    
  2. Desafortunadamente, este número contiene demasiado 0, 3 y 7, y todos los símbolos aritméticos ( +-*/) están prohibidos ... Por lo general, podríamos usar el módulo, pero Burlesque usa la secuencia en la .%que el punto tampoco está disponible. Afortunadamente, el operador xor es extraño $$, por lo que podríamos intentar construir esto xorreando dos números libres de 0, 3, 7. Esta es la razón del enorme número 41224222 ...

  3. Por último insertamos los símbolos restantes como ,, , etc. de nuevo en la cadena. ¡La mala noticia es que la función "chr" usa la secuencia L[que nuevamente está prohibida! La buena noticia es que hay varias formas de construir una cadena existente (por ejemplo, ??crea la cadena de versión "Burlesque - 1.7.3"que contiene un "espacio") y luego extrae ( !!) un carácter de ella.

  4. Los operadores de incremento y decremento también utilizan los caracteres prohibidos .+, .-, sin embargo, hay alternativas ?i, ?dque tienen el mismo efecto. Por lo tanto, podríamos generar todo el espectro ASCII a partir de esto.

kennytm
fuente
10

34. Código de máquina 6502 + Monitor de sistema Apple II (no usa b)

(Utiliza 1 pestaña)

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

La salida es la cita 41:

"We rob banks." - Clyde Barrow

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

Caracteres restantes:

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

Ejecutar en Apple // e (o emulador). Asegúrese de que el carácter de tabulación se copie como una tabulación y no como espacios.


Esta es una combinación de las ideas del código de máquina 80386 + respuesta de DOS y mi respuesta básica de Applesoft BASIC .

Para aquellos que no están familiarizados, el Monitor del sistema en las computadoras Apple II es un intérprete / depurador de muy bajo nivel que le permite modificar la memoria y ejecutar el código (si está ejecutando un intérprete BASIC, puede ingresar al Monitor del sistema haciendo CALL -151). La forma habitual de ingresar el código de máquina en el Monitor del sistema sería <addr>: <hex_byte> <hex_byte> ..., y el código de ejecución se realiza mediante <addr>G(G para "Ir"). Al ingresar el código de la manera habitual se usan caracteres prohibidos; sin embargo, el búfer de entrada para ingresar una línea de texto comienza en la memoria 0x200. Entonces, el one-liner le dice al System Monitor que salte a 0x262, y luego el código incrustado como sigue ASCII.

A pesar de no ser un lenguaje esotérico, las restricciones en los códigos de operación utilizables hacen que el código se parezca más a un derivado mental. Todo lo que está disponible: leer la memoria (pero no escribir), aumentar y disminuir la memoria, restar del acumulador y ramificar en no 0. Solo se repararon un par de instrucciones: una llamada a la rutina Monitor que genera un carácter y el retorno para finalizar el programa

Desmontaje Tenga en cuenta que todos los caracteres ingresados ​​obtienen su 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
fuente
10

14. Código de máquina PDP-11, no utiliza O

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

r8wt44ucD8
uK8Scnn wuKwK4uauK4luwKwKu4wcnn wuKwK4uauK4lwwKwKr8wa8uSu44DcDrnurwrwlKwlltuwaKcltwwwnSwrDrturwrwlKwlKatwtKwlulwtnnwnDltrrnuntKwlcnwtcDcrDKnlSKrllluwtwwwDltwannwn8na

La salida es la cita 28:

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

Anteriormente prohibido :

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

Caracteres restantes:

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

Algunos detalles técnicos:

  • Todos los saltos de línea usan estilo unix (1 byte 0x0a)
  • No hay salto de línea al final del archivo (aunque no debería importar)
  • Hay 3 caracteres de tabulación
  • El tamaño del archivo es de 1260 bytes

Para verificar este código, utilicé el simulador Ersatz-11 . Para ejecutar el código, escriba el código en un archivo test.pdp, ejecute el simulador e ingrese:

load test
go

El resultado:

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

%HALT
...

Código fuente (todos los números están en notación 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

Es más fácil explicar cómo funciona esto desde el principio hasta el final. La parte de salida es así (cada iteración genera 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 contiene muchos bytes prohibidos, tanto en el código como en el mensaje de salida. Para solucionarlo, el código está codificado: cada palabra (16 bits) se representa como una suma de 3 números:

code = 2 * a + b + c

Código de parcheo (descifrado):

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

Este código en sí contiene bytes prohibidos, pero es mucho más corto (9 palabras). El parcheador que descifra este código solo usa bytes permitidos (está debajo del comentario "parchear el parcheador" en la fuente), por lo que tiene un conjunto muy limitado de operaciones (básicamente, solo "agregar"), por lo que también sería necesario parchear muchos bytes. mucho código

Usar este parche no es sencillo. Para parchear grandes cantidades de datos con un código simple, necesitaba instrucciones como add r5, (r3)+y add r5, -(r3), y los únicos registros que podrían usarse así fueron r3y r5. Desafortunadamente, no se pueden usar comandos permitidos para inicializar estos registros, así que tuve que parchear las instrucciones que hicieron eso:

mov 32064(r5), r3
inc r5

Esto requirió parchear solo 2 palabras.

He buscado durante bastante tiempo la forma de parchear; La única forma en que se me ocurrió fue usar el infame modo "indirecto":

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

Para ejecutar estas dos instrucciones, se necesita bastante preparación:

  • Almacenar un valor de parcheo ( patch1) en la memoria
  • Almacene un puntero a la máscara de parcheo en la memoria
  • Almacene un puntero a la instrucción para ser parcheado en la memoria

Para generar todas estas constantes, utilicé las siguientes instrucciones:

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

Usan palabras en las direcciones 060562 y 060564 como variables temporales; Una disposición correcta de estas dos instrucciones puede generar cualquier valor en 10-20 pasos.


Instrucciones utilizadas en este código (excluyendo cualquiera que esté parcheado):

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
fuente
10

7. 23 , no 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

Con el avance de línea final (que debe estar presente), hay exactamente 64 avances de línea en este código.

Al ejecutarlo se imprime la segunda cita:

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

Gracias a @ jimmy23013 por señalarme este desafío.

Verificación

Dado que este código anterior funciona en el intérprete en línea , no usa espacios ( 23 puro ), no x s ( 23.ixsy ) ni comas ( 23.dezsy ), supongo que es válido 23.easy (indocumentado), que solo toma línea longitud en cuenta.

El código (leído al revés) es equivalente al siguiente código 23.dezsy :

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,62ordena al intérprete que imprima el 62 enteros que siguen como caracteres.

El intérprete parece requerir un carácter más en cada línea de lo que debería. Supongo que esto es para tener en cuenta las nuevas líneas de estilo Windows. Para que el código funcione de acuerdo con las especificaciones (o en un navegador que introduce retornos de carro), elimine uno Kde cada línea.

Para probar el código, péguelo en el área Fuente , presione Enterpara insertar el salto de línea final, escriba 23en el área Consola (para cambiar de la notación 23.dezsy predeterminada a la detección automática) y haga clic Run Interpreter!.

Dennis
fuente
9

66 - Pyth, no 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

La salida es la cita 62:

"What a dump." - Rosa Moline

Utiliza los personajes 12456789:CDGJPRSTdhjkmtx.

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

Se basa en una serie de sustituciones :de expresiones regulares: en pyth, cada una reemplazando ', el carácter de retroceso, con una cadena de dos caracteres que contiene un nuevo carácter seguido de un retroceso.

Todas las sustituciones se aplican a una cadena original de solo `(J).

Las cadenas de dos letras se generan utilizando la función de cambio de base j, en un número y una base para generar una entrada de lista de números, que luego se codifican en ASCII en una cadena de 2 caracteres por la Sfunción recién definida .

Explicación:

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
fuente
Olvidó la omisión de z66 en su tabla. Esto rompe la cadena ya que la siguiente entrada está en la segunda página.
archaephyrryx
9

60. Adelante (no usa ^)

(Hay 54 líneas nuevas y 51 pestañas).

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

La salida es la cita 56:

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

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

kennytm
fuente
9

59. Applesoft BASIC, no utiliza ~

(Utiliza 11 líneas nuevas)

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`

La salida es la cita 55:

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

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

Se ejecuta en una Apple // e (o emulador).

Breve explicación: después de borrar la pantalla, "CALL 2111" salta al código de máquina 6502 incrustado en las líneas 4-15, que escribe cada carácter directamente en la página de texto.

Detalles:

  • Línea 1: Borrar la pantalla, imprimir 2 líneas nuevas para que el símbolo del sistema no sobrescriba la cita, llame al código de máquina incorporado que comienza en la Línea 4 y salga.
  • Línea 2: los programas de Applesoft normalmente se almacenan comenzando en la dirección 0x0801 (2049), pero tengo que agregar relleno aquí para que el código de máquina incrustado comience en 0x83F (2111) ya que '0' es un carácter prohibido.
  • Líneas 4-15: el código de máquina puede consistir solo en bytes que son ASCII imprimibles. Tokenizer convertirá palabras reservadas a bytes individuales que están codificados con el conjunto MSB (por ejemplo, "VTAB" = 0xA2) pero convertirá minúsculas a mayúsculas.

Desmontaje

; 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   

El código de la máquina ciertamente podría optimizarse, pero algunas peculiaridades se deben a restricciones de codificación, por ejemplo:

  • La frase se dibuja de derecha a izquierda ya que disminuir Y es más fácil de codificar que incrementar Y.
  • Muchas secuencias "LDX imm; TXA" porque el código de operación para "LDA imm" (0xA9) se asigna a la palabra reservada "COLOR =" que contiene char '=' ilegal.
ido_nativo
fuente
8

41. AJUSTE (no usa L)

(No debe haber ninguna línea nueva al final)

````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````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`````````````````````````````````````````

La salida es la cotización 50:

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

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

Caracteres restantes:

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

ADJUST es un lenguaje 2D con 1 registro y 2 pilas. El puntero del código comienza desde la esquina inferior izquierda, luego camina en dirección noreste. Las instrucciones se basan en la factorización prima del código de caracteres actual, por ejemplo, Z= 90 = 5 × 3 × 3 × 2, por lo que el carácterZ realizará la acción "5" una vez, "3" dos veces y luego "2" una vez. Esto nos permite tener varias formas de realizar una función y evitar los caracteres prohibidos.

La idea básica del programa es:

  1. realice suficiente "5" (voltee el último bit) y "2" (gire a la derecha 3 bits) para que el acumulador contenga el código ASCII correcto para imprimir
  2. realice "3" (empuje a la pila más ligera y haga un giro complicado) hasta que la pila # 2 contenga el acumulador
  3. realice "13" (pop stack 2 e print) para imprimir ese código
  4. porque "3" activará el puntero del código de una manera complicada, si no avanzamos horizontalmente, romperemos fácilmente el límite de 64 líneas nuevas. Entonces necesitamos hacer más "3" hasta que la dirección sea correcta.

En el paso 1 usaremos estas letras para proporcionar los 2 y 5:

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

Hay unos 7, 29, 41 pero estos no afectarán el resultado final. En el paso 2 usaremos K(5 × 5 × 3) para proporcionar un "3". Tenga en cuenta que un par de "5" no funciona.

En el paso 3 elegimos A(13 × 5). En el paso 4 usaremos n(11 × 5 × 2) para controlar el tamaño de la pila y Kajustar la dirección.

En general, si el paso 1 no contiene ninguno R, lo usamos KAnKpara imprimir el carácter y avanzar 4 líneas. De lo contrario, usamos KKApara imprimir y movernos hacia abajo por 2 líneas. Ocasionalmente, también hay un KnnKpara forzar 4 líneas hacia arriba, ya que el punto de partida debe estar en la esquina inferior izquierda.

Si alguien está interesado, aquí hay un entorno de trabajo para producir el código anterior. No hay generador automatizado.

kennytm
fuente
8

23. Glifo , no usa%

2248242424422424244224242442242424422248244224242442244422482424244224242442242424422248244224242442242424422424244222482442244422482424244224242442242424422424244224242442244422482424244222482442242424422248244224242442242424422248244224242442224824422424244222482442244422482424244222482442242424422424244224242442242424422424244222482442244422482424244222482442242424422424244222482442242424422248244224242442224824422424244224442248242424422248244224242442224824422424244224242442224824422424244224242442244422482424244224242442242424422424244224242442244422482424244222482442242424422248244224242442242424422248244224242442242424422444224824242442224824422424244224242442224824422424244222482442242424422248244224242442224824422444224824242442242424422424244224242442242424422444224824242442224824422424244224242442242424422424244222482442242424422444224824242442224824422424244224242442242424422248244224242442242424422248244224442248242424422424244224242442242424422424244224442248242424422248244224242442242424422424244224242442242424422248244224442248242424422248244224242442242424422248244224242442224824422424244224242442244422482424244222482442242424422424244222482442242424422248244224242442224824422424244222482442244422482424244222482442242424422424244222482442242424422248244224242442224824422424244224442248242424422248244224242442242424422424244222482442242424422424244222482442244422482424244224242442224824422424244222482442242424422248244224242442244422482424244224242442242424422424244222482442242424422444224824242442242424422424244224242442242424422444224824242442242424422248244224242442224824422424244224242442224824422444224824242442242424422424244224242442242424422444224824242442242424422424244224242442224824422424244222482442242424422248244224442248242424422248244224242442224824422424244224242442242424422248244224242442244422482424244222482442242424422248244224242442242424422248244224242442242424422248244224442248242424422248244224242442224824422424244224242442242424422248244224242442224824422444224824242442224824422424244224242442224824422424244224242442242424422248244224442248242424422248244224242442242424422248244224242442224824422424244222482442242424422444224824242442224824422424244222482442242424422424244224242442224824422424244222482442244422482424244222482442242424422424244222482442242424422424244222482442242424422248244224442248242424422248244224242442242424422424244224242442242424422248244224442248242424422248244224242442224824422424244222482442242424422424244224242442224824422444224824242442224824422424244224242442242424422424244224242442224824422444

La salida es la cita 30:

"I want to be alone." - Grusinskaya

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

Caracteres restantes:

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

Tenga en cuenta que esto funciona con el intérprete de Java , pero que no está de acuerdo con la página esolangs en la codificación de [y +. Sin embargo, el diseño de Glypho es tal que el conjunto completo de instrucciones está disponible siempre que tenga cuatro caracteres distintos, y todo, aparte de los bucles, está disponible si tiene tres, por lo que este es un detalle menor.

Anteriormente elegí una cita que me gusta de una película que realmente he visto, pero aparentemente pasé por alto una regla. :(

Peter Taylor
fuente
3
Bueno, ahí va la táctica de módulo favorita de todos: P
Sp3000
1
No puede usar la cita 6: existe esa regla "El número de cita que elija no debe ser más de 5 por debajo de su número de respuesta"
anatolyg
@anatolyg, me perdí esa regla. Gracias. Actualizado.
Peter Taylor