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 Dawson
en 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)
4
Unario progresivoa
Bueuec
UdageS
1L_a105w
BinaryfuckK
Subskinl
23
n
P1eqt
Addleq9
Código de máquina x86r
BSMD
ShaFuck 0.2u
VillmarkO
Código máquina PDP-11f
ProgFki
Teclado numéricoH
Tri2
FERNANDOP
Puntiagudom
SubleqG
FlogScript?
Nqubl%
Glifo!
3varq
ETAj
BrainSpace 1.0V
Insomnio`
asdf6
Lazy KC
! Py! Batch 1.5T
FuckfuckF
PoGoR
Golunarb
Código de máquina 6502 + monitor del sistema Apple IIY
HeadsecksI
BRBU
BraincrashZ
ExtáticoM
GranjaA
EnemaL
AJUSTAR$
BeatnikN
Rebmug
DupdogB
GammaplexJ
A la mierda45
A0A0W
gs2:
l33th
TonocoE
Malbolgek
D1ffe7e45e1
malQ
CaneCoded
Hierba#
URSL|
Burlescox
Emmental~
Applesoft BASIC^
Adelante7
80386 código máquina + DOS_
Argh!v
Rexx}
Alfa Betao
Super Stack!e
Pythz
TeX llano>
WASD]
POSIX shell&
Algarabía/
GolfScript*
Asamblea x86_640
AppleScriptX
Deadfish ~,
Cuchara-
oOo CODE=
J@
Mathematica.
Perl+
ADN #<
Pi)
Posdata[
A B Cs
corriente continua{
HTML(
Unario;
Ook!'
CJamPHP
"
Brainfuck\
Maravilloso3
C ++y
Rubíp
JavaScript- 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.
fuente
Respuestas:
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.
La salida es la cita 8:
Anteriormente prohibido :
Restante:
4
8
K
S
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:
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:
.
)*
)A
pero distingue entre mayúsculas y minúsculas, desafortunadamente) Lo encontré en la Wikipedia japonesa.Ahora me quedan 3 idiomas.
Para cualquiera que quiera escribir más respuestas, aquí hay algunas instrucciones para buscar:
Para ser exactos, tuve:
fuente
90. Brainfuck, no usa
"
La salida es la cita 90:
Anteriormente prohibido:
py3\
Alguien tuvo que hacerlo antes de que cualquiera de ellos
.+-
esté prohibido.Pruébelo aquí: http://ideone.com/dlu8VE
fuente
"
? Eso es algo malo para todas las personas después de ti.51. Malbolge (no usa
E
)(Las nuevas líneas son solo para aclaración y no son parte de la fuente).
La salida es la cita 49:
Anteriormente prohibido :
"#&'()*+,-./0137;<=>@[\]^_ deopQksvxXyz{|}~
Caracteres restantes:
!
$
%
:
?
`
2
456
89
ABCD
FGHIJKLMNOP
RSTUVW
YZ
abc
fghij
lmn
qr
tu
w
Puede ejecutarlo con el intérprete de referencia de Malbolge .
fuente
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:
El código, comprimido
bzip2
y codificado en base 64, es el siguiente:La salida es la cita 18:
Anteriormente prohibido :
Caracteres restantes:
4
8
K
S
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)
fuente
IMUL
de 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!61. 80386 código máquina + DOS, no usa
7
La salida es la cita 64:
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
.com
y ejecútelo (los saltos de línea usan el formato DOS0d 0a
; hay unTAB
cará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.com
depurador de DOS para desarrollar el código. Para "ensamblar" el "código fuente", rediríjalo al depurador. En DOSBox:Código fuente:
Algunas notas:
0x41
,0x23
y0x24
. Elegí máscaras que no estaban prohibidas.0xcd
y0xc3
. También están enmascarados con XOR, por lo que el código debe modificarse a sí mismo.k
es muy importante aquí: codifica laIMUL
instrucción de multiplicación. Lo uso para adquirir valores constantes: por ejemplo, la constante0x216b
, cuando se multiplica por0x45
, da la constante útil0x01d7
, 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 es0x2132*0x36=0x8c
(no importa el truncamiento allí).and ax, 2142; and ax, 4221
.ax
no cambia.Editar: ya no usa el
_
personaje (mala sincronización en la publicación): no se puede usarpop di
, por lo que ahora se usadi
mucho menos el registro.fuente
@
ya está prohibido en 78, elija otro símbolo por favor.85. HTML5 (no usa
{
)La salida es la cotización 91.
Anteriormente prohibido :
py3\" ';(
fuente
12. ShaFuck 0.2 (no utiliza
D
)El código fuente tiene exactamente 4,784,128 bytes de longitud y contiene todos los caracteres permitidos excepto
D
. Parece que:aquí (a × 1017) significa el carácter "a" repetido 1017 veces. El archivo comprimido en bzip2 codificado en base64 (247 bytes) es:
La suma SHA1 del archivo original debe ser 1250ecf73c61ef93a31c4f7dfaa0a7631ada50bf.
La salida es la cita 9:
Anteriormente prohibido :
Caracteres restantes:
4
8
9
K
S
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:
es aceptado. Esto permite una conversión directa de un comando brainfuck a un fragmento de 2048 bytes. El codificador utiliza
a
,z
como 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:Rápidamente podríamos obtener estos equivalentes:
Así que finalmente tenemos este sencillo codificador:
fuente
SUFFIX = 'a' * (1024 - 7)
- por si acaso1024 - 7
no es siempre1017
? :-)(1024 - 7)
es más legible.87. ¡Ook !, no usa
;
La salida es la cita 84:
Anteriormente prohibido:
py3\" '
fuente
76. oOo CODE , no utiliza
-
La salida es la cita 78:
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:
Y luego usé este script de Python para obtener la versión "legible" de puro oOo CODE y un texto de entrada:
fuente
9. Addleq (no usa
t
)Usos
sqasm.cpp
en 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.
La salida es la cita 22:
Anteriormente prohibido :
Restante:
4
8
K
S
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:
Aquí se
sscanf(s, "%d", &ret)
comporta comoret = strtol(s, NULL, 10);
(C11 §7.21.6.2 / 12), y cuando la entrada se desborda,strtol
devolverá LONG_MAX (C11 §7.22.1.4 / 8). Por lo tanto, sisizeof(long) > sizeof(int)
, deberíamos obtenerret == -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:
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:
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:
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:
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.
fuente
4
y8
hubiera0
y7
.89. PHP, no usa
La salida es la cita 94:
Anteriormente prohibido :
py3\"
fuente
'
ahora!81. PI , no usa
<
La salida es la cita 81:
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
fuente
79. Perl 5, no usa
.
La salida es la cotización 95:
Anteriormente prohibido:
py3\" ';({s[)<+
Como lenguaje TMTOWTDI, Perl ofrece muchas maneras de sortear las restricciones. El método usado aquí es construir la declaración
print "that quote"
como una cadena y evaluarla.Aunque
'
y"
están prohibidos, Perl también permite expresar cadenas usandoq«…»
yqq«…»
respectivamente. Y aunque;
está prohibido, ya que todas las declaraciones no son falsas, podríamos usarand
para encadenar declaraciones. Dado que las letras en mayúsculaP
,Y
,S
todavía se permite su, podríamos ponerp
,y
,s
en la cadena final utilizando lalc
función (en minúsculas), mientras quechr
se puede utilizar para poner los símbolos"
y.
fuente
$foo=0
es falso, por supuesto.) De todos modos, muy agradable; +1.54. CaneCode (no usa
Q
)(No se necesitan nuevas líneas y espacios).
La salida es la cita 71:
Anteriormente prohibido :
"#&'()*+,-./037;<=>@[\]^_ deopsvxXyz{|}~
CaneCode es solo un derivado BF más, con el mapeo:
Solo una nota: los caracteres restantes son:
!
$
%
:
?
`
12
456
89
ABCDEFGHIJKLMNOP
RSTUVW
YZ
abc
fghijklmn
qr
tu
w
fuente
6. Subskin (no utiliza
K
)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.
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.
a
. Por lo que el último dígito es unaa
en la que k = 0, y hay 159321460184447640588063043795531819638245990121854536131792918542864566418397339281153516086677425424423723475531974684547855358001230183547851703274577276601612622258171727288003902331619018508731805969660163575803761844794365403871421372122820829226554024584224464882571689865777 de ellos.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 solo
4
8
a
c
.La salida es la cita 1:
con una nueva línea inicial y final.
Anteriormente prohibido:
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
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.
fuente
78. Mathematica, no usa
@
La salida es la cita 76:
Anteriormente prohibido:
py3\" ';({s[)<+.
Generado así:
El programa es entonces:
con valores insertados para
n2
,ndiff
,d2
yddiff
y todos los espacios eliminado.Mi idea original era utilizar
ToString
,FromDigits
,IntegerDigits
,Partition
yFromCharacterCode
. Sin embargo, ambosFromDigits
yIntegerDigits
tiene unas
en ellos que no había notado.fuente
72. Ensamblado x86_64 (nasm), no utiliza
*
Utiliza 61 pestañas y 36 líneas nuevas.
La salida es la cita 68:
Anteriormente prohibido:
py3\" ';({s[)<+.@=-,X0
Utiliza una
write
llamada al sistema con el número0x2000001
, que probablemente solo funciona en OS X. Ensamblado, enlace y ejecución:fuente
71. GolfScript, no utiliza
/
La salida es la cotización 69:
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 contengan0
y3
. 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í.
fuente
91. Marbelous , no usa
\
La salida es la cita 96:
Anteriormente prohibido :
py3
fuente
95. Python
La salida es la cotización 100:
Ninguno prohibido
fuente
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).
La salida es la cita 70:
Anteriormente prohibido :
py3\" ';({s[)<+.@=-,X
Aquí primero construimos la variable
c
que es una lista de códigos ASCII de la cita. En AppleScript,number & number
produce la lista de 2 elementos{number, number}
ylist & number
agrega 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
c
en la cadenad
. Nuevamente usamos&
aquí, ya questring & string
es concatenación. AppleScript no distingue entre mayúsculas y minúsculas, por lo que podríamos usardiSPlaY
para solucionar lospys
caracteres.fuente
set
y fallé. Tenía respuesta para la cita # 62, pero no puedo usar eso ahora; P57. Burlesque (no usa
|
)Las nuevas líneas son solo para aclaración, pero las pestañas son necesarias. Hay 4 pestañas.
La salida es la cita 87:
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í:
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:
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 ...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.Los operadores de incremento y decremento también utilizan los caracteres prohibidos
.+
,.-
, sin embargo, hay alternativas?i
,?d
que tienen el mismo efecto. Por lo tanto, podríamos generar todo el espectro ASCII a partir de esto.fuente
34. Código de máquina 6502 + Monitor de sistema Apple II (no usa
b
)(Utiliza 1 pestaña)
La salida es la cita 41:
Anteriormente prohibido :
"#$&'()*+,-./01357:;<=>@[\]^_ ABdeEghIJLMNopQksUvWxXyYzZ{|}~
Caracteres restantes:
!
%
?
`
2
4
6
89
CD
FGH
K
OP
RST
V
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:
fuente
14. Código de máquina PDP-11, no utiliza
O
La salida es la cita 28:
Anteriormente prohibido :
Caracteres restantes:
4
8
9
D
K
S
a
c
l
n
r
t
u
w
Algunos detalles técnicos:
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:El resultado:
Código fuente (todos los números están en notación octal):
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):
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:
Código de parcheo (descifrado):
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)+
yadd r5, -(r3)
, y los únicos registros que podrían usarse así fueronr3
yr5
. Desafortunadamente, no se pueden usar comandos permitidos para inicializar estos registros, así que tuve que parchear las instrucciones que hicieron eso: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":
Para ejecutar estas dos instrucciones, se necesita bastante preparación:
patch1
) en la memoriaPara generar todas estas constantes, utilicé las siguientes instrucciones:
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):
fuente
7. 23 , no usa
l
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:
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
ordena 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
K
de cada línea.Para probar el código, péguelo en el área Fuente , presione Enterpara insertar el salto de línea final, escriba
23
en el área Consola (para cambiar de la notación 23.dezsy predeterminada a la detección automática) y haga clic Run Interpreter!.fuente
66 - Pyth, no usa
e
La salida es la cita 62:
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 laS
función recién definida .Explicación:
fuente
z
66 en su tabla. Esto rompe la cadena ya que la siguiente entrada está en la segunda página.60. Adelante (no usa
^
)(Hay 54 líneas nuevas y 51 pestañas).
La salida es la cita 56:
Anteriormente prohibido :
"'&()*+-,./\037;<=>@X_[sovy pez]{}
fuente
59. Applesoft BASIC, no utiliza
~
(Utiliza 11 líneas nuevas)
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:
Desmontaje
El código de la máquina ciertamente podría optimizarse, pero algunas peculiaridades se deben a restricciones de codificación, por ejemplo:
fuente
41. AJUSTE (no usa
L
)(No debe haber ninguna línea nueva al final)
La salida es la cotización 50:
Anteriormente prohibido :
"#$&'()*+,-./01357:;<=>@[\]^_ BdeEghJNopQksvWxXyz{|}~
Caracteres restantes:
!
%
?
`
2
46
89
A
CD
FGHI
K
M
OP
RSTUV
YZ
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:
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 usaremosn
(11 × 5 × 2) para controlar el tamaño de la pila yK
ajustar la dirección.En general, si el paso 1 no contiene ninguno
R
, lo usamosKAnK
para imprimir el carácter y avanzar 4 líneas. De lo contrario, usamosKKA
para imprimir y movernos hacia abajo por 2 líneas. Ocasionalmente, también hay unKnnK
para 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.
fuente
23. Glifo , no usa
%
La salida es la cita 30:
Anteriormente prohibido :
!"#$&'()*+,-./013567:;<=>@[\]^_` AbBCdeEFghIjJkLMNopqQRsTUvVWxXyYzZ{|}~
Caracteres restantes:
?
2
4
89
D
GH
K
OP
S
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. :(
fuente