Update: Der Gewinner steht fest, aber die Herausforderung ist noch nicht vorbei!
Schließlich ist fast drei Monate nach Beginn der Frage jemand länger als eine Woche der letzte Antwortende geblieben! Glückwunsch an jimmy23013 mit seiner P1eq-Antwort!
Es gibt jedoch immer noch 8 Zeichen zur Verfügung: 48KSaclw
. Wenn jemand wirklich ehrgeizig ist, kann er es weiter versuchen mit: D
Vielen Dank an alle, die teilgenommen haben, besonders an diejenigen von Ihnen, die den Wettbewerb so lange mit mehreren Antworten durchgehalten haben , insbesondere an KennyTM mit satten 25 Antworten!
Vielen Dank auch an alle, die die Antwortliste auf dem neuesten Stand gehalten haben, es war eine große Hilfe :) (vor allem, seit ich ein paar Monate von SE weg bin: P).
Ursprüngliche Frage:
Im Jahr 2005 das American Film Institute produzierte AFI 100 Years ... 100 Movie Quotes , eine Liste der besten Zitate im amerikanischen Kino. Hier sind sie genau so aufgelistet, wie sie bei dieser Herausforderung verwendet werden sollten:
(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
(Zögern Sie nicht, Anführungszeichen als verwendet zu markieren.)
Es gibt 95 druckbare ASCII- Zeichen (Hex-Codes 20 bis 7E), das sind fast 100:
!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~
Bei dieser Herausforderung schreiben Benutzer abwechselnd Programme, die jeweils eines der Filmzitate mit einer neuen Programmiersprache und einer kleineren Teilmenge druckbaren ASCII-Codes drucken.
Wie das funktioniert
Ich habe die erste Antwort bereits eingereicht und sie mit 95 gekennzeichnet, da ich in meinem Programm alle 95 druckbaren ASCII-Zeichen verwenden durfte. Es ist ein Python-Programm, das das 100. Zitat "I'm the king of the world!" - Jack Dawson
nach stdout ausgibt.
Die zweite Person, die antwortet, muss ein neues Zitat, eine neue Programmiersprache und eines der 95 druckbaren ASCII-Zeichen auswählen, die aus ihrem Code ausgeschlossen werden sollen. Sie müssen ein Programm schreiben, ohne dieses Zeichen zu verwenden, das das gewählte Zitat in stdout ausgibt. Sie sollten ihre Antwort als 94 markieren, da sie 94 druckbare ASCII-Zeichen zur Verfügung hatten (denken Sie an einen Countdown).
Die dritte Person, die antwortet, muss ein Zitat und eine Sprache auswählen, die in den vorherigen Antworten (in diesem Fall nur 95 und 94) nicht verwendet wurden, und ein neues Zeichen, auf das verzichtet werden soll. Sie dürfen dieses Zeichen oder zuvor verbotene Zeichen in ihrem Code nicht verwenden. Sie markieren ihre Antwort als 93.
Dieser Antwortprozess wird so lange fortgesetzt, bis alle druckbaren ASCII-Zeichen verboten sind und jemand die Antwort "1" gibt, oder viel wahrscheinlicher, niemand kann herausfinden, wie er erneut antworten soll.
Regeln (bitte sorgfältig lesen)
Es ist wichtig zu verstehen, dass jeweils nur eine Person antworten kann und jede Antwort von der vorherigen abhängt. Es sollte niemals zwei Antworten mit derselben Nummer, demselben Zitat oder derselben Programmiersprache geben.
Es werden sicherlich gleichzeitig widersprüchliche Antworten eingereicht, und das ist in Ordnung. In diesem Fall sollte die Person, die später technisch geantwortet hat, ihren Beitrag schnell (z. B. 10 Minuten oder weniger) löschen oder bearbeiten, damit er zur nächsten Antwort wird. Andernfalls bearbeiten Sie den Code nur dann, wenn dies wirklich erforderlich ist . Das Bearbeiten von Beiträgen, um nur die Formatierung zu korrigieren, wird empfohlen.
Spezifische Regeln
- Ein Benutzer, der gerade geantwortet hat, muss mindestens eine Stunde warten, bevor er erneut antwortet.
- Ein Benutzer darf nicht zweimal hintereinander antworten.
- Die von Ihnen gewählte Angebotsnummer darf nicht mehr als 5 unter Ihrer Antwortnummer liegen. Zum Beispiel kann die Antwort 90 ein unbenutztes Zitat von 85 bis 100 wählen. Dies lässt die besseren Zitate für die schwierigeren Antworten übrig. Abgesehen von dieser Regel ist die Nummerierung des Angebots irrelevant.
- Programme dürfen nur Tabulatoren, Zeilenumbrüche und druckbare ASCII-Zeichen enthalten, die bisher nicht verboten sind. (Tabulatoren und Zeilenumbrüche sind niemals verboten.)
- Es gibt keine Programmlängenbeschränkung, aber möglicherweise enthält Ihr Programm nicht mehr als 64 Tabulatoren oder 64 Zeilenumbrüche.
- Sprachen werden als verschieden angesehen, wenn sie üblicherweise mit unterschiedlichen Namen bezeichnet werden. Verschiedene Versionen von Programmiersprachen werden nicht als unterschiedlich betrachtet. (Markup-Sprachen wie HTML zählen, aber Programmiersprachen werden bevorzugt.) Ihre Sprache muss vor dem Start dieses Wettbewerbs existiert haben.
- Wenn Ihre Sprache nicht über stdout verfügt, verwenden Sie einen ähnlichen Textausgabemechanismus.
- Ihr Programm sollte keine Eingaben machen oder unerwartete Nebenwirkungen wie das Erstellen von Dateien haben.
Bitte stellen Sie sicher, dass Ihr Programm gültig ist. Es sollte in der Lage sein, ein vollständiges Programm auszuführen, nicht nur in einer REPL- Umgebung.
Beachten Sie, dass das "Zitat", das Sie ausgeben müssen, die Anführungszeichen und die Person enthält, die es gesagt hat (aber nicht die Zitatnummer). Ihr Programm sollte Ihr Angebot nur genau so erstellen, wie es in der obigen Liste aufgeführt ist (eine führende / nachfolgende Zeile ist in Ordnung).
Formatierung
Bitte formatieren Sie Ihre Antworten wie folgt, {stuff in curly braces}
muss ersetzt werden:
#{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}
Die <code>
Tags können durch backticks ( `
) ersetzt werden, solange in ihnen kein Backtick auftritt.
Wertung
Das gemeinsame Ziel dieser Herausforderung ist es, Antworten so lange wie möglich zu erhalten.
Der offizielle Gewinner ist der Benutzer, der zuletzt antwortet, nach einer Woche ohne zusätzliche Antworten. Ich werde ihre letzte Antwort akzeptieren.
Antwortliste (neueste zuerst)
n
P1eqt
Addleq9
x86-Maschinencoder
BSMD
ShaFuck 0.2u
VillmarkO
PDP-11 Maschinencodef
ProgFki
NUMPADH
Tri2
ferNANDoP
Spitzem
SubleqG
FlogScript?
Nqubl%
Glypho!
3varq
ETAj
BrainSpace 1.0V
Schlaflosigkeit`
asdf6
Lazy KC
! Py! Batch 1.5T
ScheißeF
PoGoR
Golunarb
6502 Maschinencode + Apple II System MonitorY
HeadsecksI
BRBU
BraincrashZ
BegeistertM
BauernhofA
EinlaufL
EINSTELLEN$
BeatnikN
Rebmug
DupdogB
GammaplexJ
Fuck45
A0A0W
gs2:
l33th
TonocoE
Malbolgek
D1ffe7e45e1
böseQ
CaneCoded
Gras#
URSL|
Burleskex
Emmental~
Applesoft BASIC^
Forth7
80386 Maschinencode + DOS_
Argh!v
Rexx}
Alpha Betao
Super Stack!e
Pythz
Plain TeX>
WASD]
POSIX-Shell&
Kauderwelsch/
GolfScript*
x86_64-Assembly0
AppleScriptX
Deadfish ~,
Löffel-
oOo CODE=
J@
Mathematica.
Perl+
DNA #<
Pi)
Nachsatz[
ABCs
dc{
HTML(
Unär;
Ook!'
CJamPHP
"
Brainfuck\
Marmorig3
C ++y
Rubinp
JavaScript- Python
(Fühlen Sie sich frei zu bearbeiten, wenn falsch oder veraltet)
Diese Frage funktioniert am besten, wenn Sie nach "ältesten" sortieren.
HINWEIS: Wie meine letzte Frage ist dies ein Test eines neuen Herausforderungstyps, bei dem jede Antwort von der letzten abhängt und sich der Schwierigkeitsgrad erhöht. Besuchen Sie den Chat oder das Meta , um entweder Fragen oder die Idee im Allgemeinen zu diskutieren.
quelle
Antworten:
8. P1eq (verwendet kein
n
)Es erfordert eine Nicht-Windows-64-Bit-Plattform, um ordnungsgemäß zu funktionieren, genau wie die Addleq-Antwort. Es verwendete den gleichen Trick für die -1.
Es hat 64 Zeilenumbrüche und 57 Tabs.
Es ist langsam und endet in ungefähr 18 Minuten auf meinem Computer.
Ausgabe ist Zitat 8:
Bisher verboten :
Verbleibend:
4
8
K
S
a
c
l
w
P1eq ist wie Subleq und Addleq, mit der Anweisung B = A + 1 und springen, wenn B nicht geändert wird.
Erläuterung:
Dieses Programm erhöht * 444 und * 484 zusammen und setzt * 444 zurück, wenn es einen bestimmten Wert erreicht. Wenn * 484 den Daten entspricht, wird * 444 der Rest der Daten geteilt durch einen bestimmten Wert sein.
Nur 6 Speicherzellen im Code sind mit 4 und 8 direkt adressierbar. Ich muss einige von ihnen wiederverwenden. Dadurch wurden auch einige Vorgänge nicht in der von mir gewünschten Reihenfolge ausgeführt, z. B. die Verwendung nicht initialisierter Variablen. Aber ich kann einfach alles verwerfen, was beim ersten Mal der Schleife zurückgegeben wird, und danach initialisieren.
Einige andere Sprachen fanden interessant, aber nicht mehr verwendbar:
.
)*
)A
aber leider Groß- / Kleinschreibung) Ich habe es in der japanischen Wikipedia gefunden.Jetzt habe ich 3 Sprachen übrig.
Für alle, die mehr Antworten schreiben möchten, gibt es hier einige Anweisungen:
Um genau zu sein, hatte ich:
quelle
90. Brainfuck, benutzt nein
"
Ausgabe ist Zitat 90:
Bisher verboten:
py3\
Jemand musste es tun, bevor irgendetwas
.+-
verboten ist.Versuchen Sie es hier: http://ideone.com/dlu8VE
quelle
"
? Das ist irgendwie gemein für alle Leute nach dir.51. Malbolge (benutzt nein
E
)(Zeilenumbrüche dienen nur der Verdeutlichung und sind nicht Teil der Quelle.)
Ausgabe ist Zitat 49:
Bisher verboten :
"#&'()*+,-./0137;<=>@[\]^_ deopQksvxXyz{|}~
Verbleibende Zeichen:
!
$
%
:
?
`
2
456
89
ABCD
FGHIJKLMNOP
RSTUVW
YZ
abc
fghij
lmn
qr
tu
w
Sie können es mit dem Referenz-Malbolge-Interpreter ausführen .
quelle
10. x86-Maschinencode, verwendet Nr
9
Als ich feststellte, dass die verbleibenden Zeichen die Opcodes für "Dec BX" und "Push BX" enthielten, kam ich zu dem Schluss, dass ein x86-Programm noch möglich war.
Link für den Code und die .com-Datei
Der Code sieht wie eine viel längere Version davon aus:
Der Code, komprimiert mit
bzip2
und Base-64-codiert, lautet wie folgt:Ausgabe ist Zitat 18:
Bisher verboten :
Verbleibende Zeichen:
4
8
K
S
a
c
l
n
t
w
Es ist selbstmodifizierender Code, der selbstmodifizierenden Code erstellt. So funktioniert es:
Der Text wird zuerst durch Eingabe von Läufen von '4', die mit '8' abgeschlossen sind, codiert, die Anweisungen zuordnen, die effektiv NOPs für dieses Programm sind. Als nächstes wird BX dekrementiert ('K'), bis es den Wert hat, bei dem der Druckcode auf dem Stapel landen wird. Dies wird achtmal gedrückt ('S') und dann wird Pop All, 'a' ausgeführt, um SI und DI für einen späteren Zeitpunkt einzurichten. BX wird dann wiederholt dekrementiert und gedrückt, um die willkürlichen Werte des Druckprogramms auf dem Stapel (das niedrige Byte) zusammen mit einem Abfallbyte (das hohe Byte) einzugeben. Als nächstes wird BX durch eine lange Folge von Dekrementen auf den Wert 0xAAAD gebracht, bei dem es sich um die beiden 1-Byte-Anweisungen 'Wort laden' und 'Byte speichern' handelt. Jedes Paar dieser Anweisungen entfernt ein Abfallbyte aus dem Druckcode. Diese Anweisungen werden 28-mal verschoben (die Größe des Druckprogramms). und der Rest der Datei ist mit weiteren Dekrementierungsanweisungen gefüllt, um als NOPs zu fungieren. Diese NOPs werden solange ausgeführt, bis der vom Stapel verwendete Speicherbereich erreicht ist, der mit dem komprimierten Code überschrieben wurde. Der Verdichtungscode wird ausgeführt, wobei die Abfallbytes im Code auf dem Stapel entfernt werden (auf die SI und DI, die zuvor eingerichtet wurden, zeigen). Wenn der Verdichtungscode fertig ist, wurde das Druckprogramm bei der nächsten auszuführenden Anweisung erfolgreich im Speicher gespeichert.
Assembler-Code zur Generierung des Maschinencodes (FASM)
quelle
IMUL
eines bestimmten Typs), so dass es eine andere "Sprache" genannt werden kann. Ich habe nicht einmal versucht zu überprüfen, ob x86 zu diesem Zeitpunkt noch möglich ist - anscheinend ist es das!61. 80386 Maschinencode + DOS, verwendet Nr
7
Ausgabe ist Zitat 64:
Bisher verboten:
"'&()*+-,./\03;<=>@X_[sovy pez]{}
Es ist keine leichte Aufgabe, eine ausführbare Datei zu erstellen, die nur druckbares ASCII verwendet. Glücklicherweise waren nicht viele Charaktere durch vorherige Antworten verboten, so dass ich hier und da nur ein paar Patches benötigte.
Um dieses Programm auszuführen, kopieren Sie es in eine Datei mit der Erweiterung
.com
und führen Sie es aus (Zeilenumbrüche verwenden das DOS-Format0d 0a
;TAB
der Code enthält ein Zeichen). Es ist schade, dass moderne 64-Bit-Windows-Systeme keinen 16-Bit-Code unterstützen. man braucht ein 32-Bit-Windows-System oder DOSBox , um den Code auszuführen.Ich habe den DOS-
debug.com
Debugger verwendet, um den Code zu entwickeln. Um den "Quellcode" "zusammenzustellen", leiten Sie ihn in den Debugger um. Auf DOSBox:Quellcode:
Einige Notizen:
0x41
,0x23
und0x24
. Ich habe Masken gewählt, die nicht verboten waren.0xcd
und0xc3
. Sie sind ebenfalls XOR-maskiert, sodass sich der Code selbst ändern muss.k
ist hier sehr wichtig: Es codiert dieIMUL
Multiplikationsanweisung. Ich verwende es, um konstante Werte zu erhalten: Die Konstante gibt zum Beispiel,0x216b
wenn sie mit multipliziert wird0x45
, die nützliche Konstante an0x01d7
, die ein Zeiger (mit einem Versatz, wie oben beschrieben) auf den Code ist, der gepatcht werden muss. In ähnlicher Weise ist die Patching-Maske0x2132*0x36=0x8c
(beachten Sie nicht die Kürzung dort).and ax, 2142; and ax, 4221
.ax
nicht ändert.Bearbeiten: Der
_
Charakter wird nicht mehr verwendet (schlechtes Timing in der Post) - kann nicht verwendet werdenpop di
, daher wird dasdi
Register jetzt viel weniger verwendet.quelle
@
ist bereits in 78 gesperrt, bitte anderes symbol wählen.85. HTML5 (benutzt nein
{
)Die Ausgabe erfolgt in Anführungszeichen 91.
Bisher verboten :
py3\" ';(
quelle
12. ShaFuck 0.2 (verwendet kein
D
)Der Quellcode ist genau 4.784.128 Byte lang und enthält alle zulässigen Zeichen außer
D
. Es sieht aus wie:Hier bedeutet (a × 1017) das Zeichen "a", das 1017 Mal wiederholt wird. Die base64-kodierte bzip2-komprimierte Datei (247 Bytes) ist:
Die SHA1-Summe der Originaldatei sollte 1250ecf73c61ef93a31c4f7dfaa0a7631ada50bf sein.
Ausgabe ist Zitat 9:
Bisher verboten :
Verbleibende Zeichen:
4
8
9
K
S
a
c
l
n
r
t
w
ShaFuck ist eine Variante von Brainfuck. Es dauert jeden 1024-Byte-Block, berechnet den SHA-1-Digest und verwendet dann die 20-Byte-Ausgabe als Brainfuck-Programm. Wie in dem im Wiki verlinkten Blog-Beitrag erläutert , gibt es in Version 0.2 eine "Sicherheitslücke", die die SHA-1-Ausgabe des Formulars auslöst:
ist akzeptiert. Dies ermöglicht eine einfache Konvertierung von einem Brainfuck-Befehl in einen 2048-Byte-Block. Der Encoder verwendet
a
-z
als Zeichensatz, was für uns nicht geeignet ist. Also müssen wir selbst einen "Bergmann" schreiben. Jetzt sind 13 gültige Zeichen verfügbar. Unter der Annahme, dass die SHA-1-Ausgabe zufällig ist, entsprechen die ersten 3 Bytes 3 × log & sub1; & sub3; (256) ~ 6,5 Eingabezeichen, wenn wir sie korrigieren möchten. Deshalb müssen wir alle 7-stelligen Zeichenketten iterieren, die aus diesen 13 Alphabeten bestehen:Wir könnten dann schnell diese Äquivalente bekommen:
Endlich haben wir diesen einfachen Encoder:
quelle
SUFFIX = 'a' * (1024 - 7)
- Nur für den Fall1024 - 7
nicht immer1017
? :-)(1024 - 7)
ist besser lesbar.87. Ook !, verwendet keine
;
Ausgabe ist Zitat 84:
Bisher verboten:
py3\" '
quelle
76. oOo CODE , verwendet keine
-
Ausgabe ist Zitat 78:
Bisher verboten :
py3\" ';({s[)<+.@=
Ich werde kein weiteres BF-Äquivalent / Derivat veröffentlichen. Versprechen.
BEARBEITEN: Ich habe den Code so aktualisiert, dass er besser lesbar ist. (lol) Betrifft keine verbotenen Charaktere.
Ich habe dieses Tool verwendet , um mein reines BF zu generieren. Ich habe es dann in oOo CODE konvertiert:
Und dann benutzte ich dieses Python-Skript, um die "lesbare" Version von reinem oOo-Code und einem Eingabetext zu erhalten:
quelle
9. Addleq (verwendet kein
t
)Verwendet
sqasm.cpp
in der Esolang-Seite zum Zusammenbauen. Erfordert eine 64-Bit-Plattform, die nicht zu Windows gehört, um ordnungsgemäß zu funktionieren.Es gibt genau 64 Tabulatoren und 64 neue Zeilen (keine nachfolgenden neuen Zeilen). Wütend.
Ausgabe ist Zitat 22:
Bisher verboten :
Verbleibend:
4
8
K
S
a
c
l
n
w
"Addleq" ein OISC ähnelt "Subleq", verwendet jedoch Addition anstelle von Subtraktion.
Konstruieren von "-1"
Die Ausgabe in Addleq erfolgt durch Schreiben in die Speicheradresse -1. Da alle ungeraden Zahlen verboten sind, können wir mit normalen Mitteln kein -1 konstruieren. Wir können den Assembler jedoch dazu verleiten, ein -1 zu erstellen:
Hier
sscanf(s, "%d", &ret)
verhält es sich wie inret = strtol(s, NULL, 10);
(C11 §7.21.6.2 / 12) und wenn die Eingabe überläuft,strtol
wird LONG_MAX zurückgegeben (C11 §7.22.1.4 / 8). Also, wennsizeof(long) > sizeof(int)
wir bekommen solltenret == -1
. Allerdings auf welcher Plattformsizeof(long) == sizeof(int)
32-Bit-Plattformen oder Windows erhalten wir jedoch 0x7fffffff, wodurch die obige Lösung ungültig wird.Registerkarten mit dem Assembler speichern
Bei Low-Level-Addleq ist jeder Befehl dreistellig. Da wir nur über ein Budget von 128 Leerzeichen verfügen, müssen wir die gesamte Zeichenfolge mit 129/3 = 43 Anweisungen drucken. Dies ist völlig unzureichend, da das kürzeste Zitat (hier ausgewählt) 32 Zeichen lang ist.
Trotzdem unterstützt der Assembler einige Kurzschreibweisen:
Regel Nr. 2 wurde für "subleq" entwickelt, um eine Adresse schnell auf Null zu setzen. Aber für "addleq" können wir einen Wert ohne Tabulatoren verdoppeln .
Dies ermöglicht es uns, das gesamte Programm kaum in 129 Nummern einzuteilen.
Zahlen erstellen
Das Zitat wird gewählt, weil es kurz ist und viele doppelte Zeichen enthält. Die Zahlen, die wir erstellen müssen, sind:
Wir könnten Nummern an den Adressen 4, 8, 44, 48, 84, 88, ... verwenden. Regel Nr. 1 des Assemblers hat bereits "9" bei * 8 und "45" bei * 44 platziert, daher werden wir sie nur verwenden (Es ist gut, dass sie ungerade Zahlen sind). Außerdem werden wir versuchen, "-1", "8" und "44" in diese Adressen einzufügen, indem wir die Berechnungen verschieben. Das Ergebnis ist die erste Hälfte des Codes:
Die letzte Zeile
Nachdem alle Zahlen konstruiert sind, können wir jedes Zeichen drucken. Das endgültige Programm hat jedoch mehr als 67 Zeilen, zwei zu viele. Deshalb müssen wir die letzten 3 Zeilen zusammenfassen:
Da die Zeile mehr als 2 Ziffern enthält, müssen wir den 3. Parameter der Anweisung manuell eingeben. Das heißt, wir tauschen jede Zeile gegen 2 Tabs. Glücklicherweise haben wir vor der Kombination 60 Tabs verwendet, sodass das Endergebnis die Anforderungen kaum erfüllt hat.
quelle
4
und8
es gab0
und7
.89. PHP verwendet keine
Ausgabe ist Zitat 94:
Bisher verboten :
py3\"
quelle
'
jetzt !!!81. PI , verwendet keine
<
Ausgabe ist Zitat 81:
Bisher verboten:
py3\" ';({s[)
Was denn Pi ohne
3
?Mein Dolmetscher hier (Entschuldigung für die rudimentäre Benutzeroberfläche, basierend auf dieser Antwort ): http://migl.io/projects/pi/index.php
quelle
79. Perl 5 verwendet Nr
.
Ausgabe ist Zitat 95:
Bisher verboten:
py3\" ';({s[)<+
Als TMTOWTDI-Sprache bietet Perl viele Möglichkeiten, um die Einschränkungen zu umgehen. Die hier verwendete Methode besteht darin, die Anweisung zu konstruieren
print "that quote"
als Zeichenfolge und auszuwerten.Obwohl
'
und"
verboten sind, erlaubt Perl zusätzlich das Ausdrücken von Strings mitq«…»
undqq«…»
. Und obwohl;
es verboten ist, alle Aussagen zu fälschen, könnten wir sie verwenden,and
um Aussagen zu verketten . Da die GroßbuchstabenP
,Y
,S
sind immer noch erlaubt, könnten wir setzenp
,y
,s
in die endgültige Zeichenfolge mit derlc
(Klein-) Funktion, währendchr
kann verwendet werden , um die Symbole zu setzen"
und.
quelle
$foo=0
ist natürlich falsch.) Wie auch immer, sehr nett; +1.54. CaneCode (verwendet Nr
Q
)(Neue Zeilen und Leerzeichen sind nicht erforderlich.)
Ausgabe ist Zitat 71:
Bisher verboten :
"#&'()*+,-./037;<=>@[\]^_ deopsvxXyz{|}~
CaneCode ist nur ein weiteres BF-Derivat mit dem Mapping:
Nur eine Anmerkung: Die restlichen Zeichen sind:
!
$
%
:
?
`
12
456
89
ABCDEFGHIJKLMNOP
RSTUVW
YZ
abc
fghijklmn
qr
tu
w
quelle
6. Unterhaut (verwendet keine
K
)Zeile 9 im folgenden Programm wird durch etwas Testbares ersetzt. Es hat 2 nachgestellte Zeilenumbrüche und insgesamt genau 64 Zeilenumbrüche.
Um die Kriterien zu erfüllen, sollte Zeile 9 durch die folgende große Zahl ersetzt werden. Ich denke, das sollte genauso gelten wie diese Unary-Varianten.
a
. So ist die letzte Ziffer ist eine ,a
wo k = 0, und es gibt 159321460184447640588063043795531819638245990121854536131792918542864566418397339281153516086677425424423723475531974684547855358001230183547851703274577276601612622258171727288003902331619018508731805969660163575803761844794365403871421372122820829226554024584224464882571689865777 von ihnen.8
.Beachten Sie, dass sich die konstruierte Zahl in der Basis 16 befindet (aber die Zahlen in der obigen Beschreibung in der Basis 10). Wenn meine Berechnung korrekt ist, sollte sie mit der ursprünglichen Nummer im Programm Mod 8 * (16 ^ 234-1) / 15 übereinstimmen. Jede Zahl, die groß genug ist und dieses Kriterium erfüllt, sollte funktionieren, aber ich weiß nicht, wie ich eine kürzere mit nur konstruieren soll
4
8
a
c
.Ausgabe ist Zitat 1:
mit einem führenden und einem nachgestellten Zeilenumbruch.
Bisher verboten:
Verbleibende Zeichen:
4
8
S
a
c
w
.Erläuterung
Subskin ist eine OISC, bei der die Anweisung subtrahiert werden soll und die nächste Anweisung übersprungen wird, wenn das Ergebnis negativ ist. Die ersten drei Felder im Speicher werden dem Befehlszeiger, der Ausgabe und der Eingabe zugeordnet. Der Befehlszeiger kann als "goto" verwendet werden, und das Lesen kann einige Zahlen ergeben, die ansonsten nicht verfügbar sind, wenn nur verwendbare Zeichen verwendet werden.
Zuerst habe ich versucht, den Code in einer Basis in die Ziffern zu komprimieren. Aber ich konnte nicht in 64 Linien Golf spielen. Also bin ich zu dem Modul-Ansatz übergegangen, bei dem ein Loop-Level entfernt wurde.
Es ist im Grunde nur der größte gemeinsame Divisor-Algorithmus. A / B wird bei jedem Schritt extrahiert. Stellen Sie dann A = B und B = A mod B ein und fahren Sie fort.
Genauer gesagt, wenn A> B, werden die aktuellen Daten inkrementiert, andernfalls werden die Zahlen vertauscht und der Zeiger bewegt. Danach wird die kleinere Zahl von der größeren Zahl abgezogen.
Schließlich überschreibt der selbstentpackende Code etwas in der Schleife und unterbricht es, und er fährt mit dem extrahierten Code fort. Der extrahierte Code ist ziemlich einfach.
Code
Generation
Es wird angenommen, dass A und B nach dem Extraktionsfortschritt n und m sind. Es ist einfach, diesen Fortschritt umzukehren und A und B (bevor die nützlichen Daten beginnen) in Bezug auf n und m zu erhalten. Und A = an + bm, B = cn + dm. Setzen Sie A auf eine beliebige Zahl, die groß genug ist und n und m positiv machen kann (und nur die verfügbaren Zeichen verwendet). n und m können durch modulare Inversion berechnet werden. Dann wird B durch n und m bestimmt.
Aber es ist nicht einfach, B auch nur aus diesen Zeichen zu machen. Ich habe einen zusätzlichen Schritt verwendet, der nur harmlose Junk-Daten extrahieren sollte. Das neue B wäre also kA + B, wobei k eine positive ganze Zahl ist. Es ist leicht zu erkennen, dass es so etwas gibt. Ich bin mir aber nicht sicher, ob es möglich ist, einen zu finden, der kurz genug ist, um testbar zu sein. Und ich habe Fermats kleinen Satz benutzt, um einen zu finden, der theoretisch funktioniert.
Ich habe nur noch eine zweite Sprache.
quelle
78. Mathematica verwendet keine
@
Ausgabe ist Zitat 76:
Bisher verboten:
py3\" ';({s[)<+.
So generiert:
Das Programm ist dann:
mit eingesetztem Wert für
n2
,ndiff
,d2
undddiff
und alle entfernt Flächen.Meine ursprüngliche Idee war , zu verwenden
ToString
,FromDigits
,IntegerDigits
,Partition
undFromCharacterCode
. Allerdings beidesFromDigits
undIntegerDigits
hat einens
in sich, den ich nicht bemerkt hatte.quelle
72. x86_64-Assembly (nasm), verwendet Nr
*
Verwendet 61 Tabs und 36 Newlines.
Ausgabe ist Zitat 68:
Bisher verboten:
py3\" ';({s[)<+.@=-,X0
Hierfür wird ein
write
Systemaufruf mit der Nummer verwendet0x2000001
, der wahrscheinlich nur unter OS X funktioniert. Zusammenstellen, Verknüpfen und Ausführen:quelle
71. GolfScript, verwendet nein
/
Ausgabe ist Zitat 69:
Bisher verboten:
py3\" ';({s[)<+.@=-,X0*
Dank Peter Taylor konnte ich einige GolfScript-Macken für die Konstruktion der Saite entdecken. Erstens kann ich einen leeren String ohne Anführungszeichen erhalten, indem ich den (leeren) STDIN-Inhalt einer Variablen zuordne (
?
in diesem Fall). Dann konstruiere ich ein verschachteltes Array von Zahlen, die, mod 256 genommen, die gewünschten Codepunkte sind. Durch das Hinzufügen eines Vielfachen von 256 vermeide ich Duplikate und Zahlen mit0
und3
. Zuletzt drücke ich die leere Saite mit?
und nehme den symmetrischen Differenzsatz. Dadurch wird das Array abgeflacht und zu einem String zusammengefügt, wobei sich GolfScript nur um den Rest des Mods 256 kümmert.Teste es hier.
quelle
91. Marbelous verwendet keine
\
Ausgabe ist Zitat 96:
Bisher verboten :
py3
quelle
95. Python
Ausgabe ist Zitat 100:
Keine verboten.
quelle
73. AppleScript, verwendet nein
0
(Alle "Leerzeichen" sind "Tabulatoren", wie von OP zugelassen. Es gibt 25 Tabulatoren und 8 Zeilenumbrüche.)
Ausgabe ist Zitat 70:
Bisher verboten :
py3\" ';({s[)<+.@=-,X
Hier konstruieren wir zuerst die Variable,
c
die eine Liste von ASCII-Codes des Zitats ist.number & number
Erzeugt in AppleScript die Liste mit zwei Elementen{number, number}
undlist & number
hängt die Nummer an die Liste an, sodass wir die Verwendung von{
oder vermeiden können,
. Hat außerdem&
eine niedrigere Priorität als*
und/
, sodass wir die gesamte Liste in einer Zeile erstellen können, wobei die(
Variablen oder das Erstellen von Variablen vermieden werden (was 3 Registerkarten verschwendet).Danach konvertieren wir die Liste der Zahlen
c
in die Zeichenfolged
. Auch hier verwenden wir&
, dastring & string
Verkettung ist. AppleScript unterscheidet nicht zwischen Groß- und Kleinschreibung, sodass wirdiSPlaY
diepys
Zeichen umgehen können .quelle
set
und schlug fehl. Ich hatte die Antwort auf Zitat Nr. 62, aber das kann ich jetzt nicht verwenden: P57. Burlesque (benutzt kein
|
)Neue Zeilen dienen nur der Verdeutlichung, die Registerkarten sind jedoch erforderlich. Es gibt 4 Registerkarten.
Ausgabe ist Zitat 87:
Bisher verboten :
"'&()*+-,./\037;<=>@_[sovy pezxX]^{}~
Burlesque ähnelt GolfScript, aber normalerweise besteht jeder Befehl aus zwei Zeichen. Der Aufbau ist wie folgt:
Burlesque unterstützt Ganzzahlen mit willkürlicher Genauigkeit und ermöglicht auch die Konvertierung in die Basis 36. Daher codieren wir zuerst alle Kleinbuchstaben in die Basis 36:
Leider enthält diese Zahl zu viel 0, 3 und 7, und alle arithmetischen Symbole (
+-*/
) sind verboten ... Normalerweise könnten wir das Modul verwenden, aber Burlesque verwendet die Sequenz, bei.%
der der Punkt ebenfalls nicht verfügbar ist. Glücklicherweise ist der Operator xor seltsam$$
, daher könnten wir versuchen, dies zu konstruieren, indem wir zwei Zahlen frei von 0, 3, 7 xor-en. Dies ist der Grund für die riesige Zahl 41224222….Schließlich legen wir die übrigen Symbole wie
,
,usw. zurück in den String. Die schlechte Nachricht ist, dass die "chr" -Funktion die Sequenz verwendet,
L[
die wiederum verboten ist! Die gute Nachricht ist, dass es verschiedene Möglichkeiten gibt, eine vorhandene Zeichenfolge zu erstellen (z. B.??
die Versionszeichenfolge zu erstellen,"Burlesque - 1.7.3"
die ein "Leerzeichen" enthält) und dann zu extrahieren (!!
ein Zeichen daraus zu ).Die Inkrementierungs- und Dekrementierungsoperatoren verwenden auch die verbotenen Zeichen
.+
,.-
es gibt jedoch Alternativen?i
,?d
die den gleichen Effekt haben. So konnten wir daraus das gesamte ASCII-Spektrum generieren.quelle
34. 6502 Maschinencode + Apple II System Monitor (verwendet keine
b
)(Verwendet 1 Registerkarte)
Ausgabe ist Zitat 41:
Bisher verboten :
"#$&'()*+,-./01357:;<=>@[\]^_ ABdeEghIJLMNopQksUvWxXyYzZ{|}~
Verbleibende Zeichen:
!
%
?
`
2
4
6
89
CD
FGH
K
OP
RST
V
a
c
f
ij
lmn
qr
tu
w
Auf Apple // e (oder Emulator) ausführen. Stellen Sie sicher, dass das Tabulatorzeichen als Tabulator und nicht als Leerzeichen kopiert wird.
Dies ist eine Kombination der Ideen der 80386-Maschinencode + DOS- Antwort und meiner früheren Applesoft BASIC- Antwort.
Für Unbekannte ist der Systemmonitor auf Apple II-Computern ein sehr einfacher Interpreter / Debugger, mit dem Sie den Arbeitsspeicher ändern und Code ausführen können (wenn Sie einen BASIC-Interpreter ausführen, können Sie den Systemmonitor folgendermaßen aufrufen
CALL -151
). Die übliche Art, Maschinencode in den Systemmonitor einzugeben, wäre<addr>: <hex_byte> <hex_byte> ...
, ist und der Code wird mit<addr>G
(G für "Go") ausgeführt. Die übliche Codeeingabe verwendet verbotene Zeichen. Der Eingabepuffer für die Eingabe einer Textzeile beginnt jedoch bei Speicher 0x200. Aus diesem Grund weist der Einzeiler den Systemmonitor an, zu 0x262 zu springen und dann den eingebetteten Code als ASCII-Code zu verwenden.Obwohl es sich nicht um eine esoterische Sprache handelt, ähnelt der Code aufgrund der Einschränkungen für verwendbare Opcodes eher einem Brainfuck-Derivat. Alles, was verfügbar ist: Speicher lesen (aber nicht schreiben), Speicher erhöhen und verringern, vom Akkumulator subtrahieren und auf nicht 0 verzweigen um das Programm zu beenden.
Demontage. Beachten Sie, dass alle eingegebenen Zeichen ihr hohes Bit erhalten:
quelle
14. PDP-11-Maschinencode, verwendet Nr
O
Ausgabe ist Zitat 28:
Bisher verboten :
Verbleibende Zeichen:
4
8
9
D
K
S
a
c
l
n
r
t
u
w
Einige technische Details:
Um diesen Code zu überprüfen, habe ich den Ersatz-11- Simulator verwendet. Um den Code auszuführen, schreiben Sie den Code in eine Datei
test.pdp
, führen Sie den Simulator aus und geben Sie Folgendes ein:Das Ergebnis:
Quellcode (alle Zahlen sind in oktaler Notation):
Es ist einfacher zu erklären, wie dies von Anfang bis Ende funktioniert. Der Ausgabeteil ist wie folgt (jede Iteration gibt 2 Bytes aus):
Dieser Code enthält viele verbotene Bytes, sowohl im Code als auch in der Ausgabenachricht. Um dies zu beheben, wird der Code verschlüsselt: Jedes Wort (16 Bit) wird als Summe von 3 Zahlen dargestellt:
Patchen (Entschlüsseln) des Codes:
Dieser Code selbst enthält verbotene Bytes, ist aber viel kürzer (9 Wörter). Der Patcher, der diesen Code entwürfelt, verwendet nur zulässige Bytes (er befindet sich unter dem Kommentar "patch the patcher" in der Quelle), sodass nur eine sehr begrenzte Anzahl von Vorgängen zur Verfügung steht (im Grunde nur "add"). Das Patchen vieler Bytes wäre also ebenfalls sinnvoll viel Code.
Die Verwendung dieses Patchers ist nicht einfach. Um große Datenmengen mit einfachem Code zu patchen, brauchte ich Anweisungen wie
add r5, (r3)+
undadd r5, -(r3)
- und die einzigen Register, die so verwendet werden konnten, warenr3
undr5
. Leider können keine zulässigen Befehle zum Initialisieren dieser Register verwendet werden. Daher musste ich die folgenden Anweisungen patchen:Dies erforderte das Patchen von nur 2 Wörtern.
Ich habe lange nach einer Möglichkeit gesucht, das Patchen durchzuführen. Der einzige Weg, den ich gefunden habe, war der berüchtigte "indirekte" Modus:
Um diese beiden Anweisungen auszuführen, sind einige Vorbereitungen erforderlich:
patch1
) im SpeicherUm all diese Konstanten zu generieren, habe ich die folgenden Anweisungen verwendet:
Sie verwenden Wörter an den Adressen 060562 und 060564 als temporäre Variablen. Eine richtige Anordnung dieser beiden Befehle kann in 10 bis 20 Schritten einen beliebigen Wert erzeugen.
In diesem Code verwendete Anweisungen (ausgenommen gepatchte Anweisungen):
quelle
7. 23 verwendet keine
l
Mit dem abschließenden Zeilenvorschub (das muss sein) sein ) enthält dieser Code genau 64 Zeilenvorschübe.
Beim Ausführen wird das zweite Anführungszeichen ausgegeben:
Vielen Dank an @ jimmy23013, der mich auf diese Herausforderung aufmerksam gemacht hat.
Nachprüfung
Da dieser obige Code im Online-Interpreter funktioniert , keine Leerzeichen ( reine 23 ), kein x s ( 23.ixsy ) und kein Komma ( 23.dezsy ) verwendet, gehe ich davon aus, dass er 23.easy gültig ist (undokumentiert) , was nur eine Zeile ist Länge berücksichtigen.
Der Code (rückwärts gelesen) entspricht dem folgenden 23.dezsy- Code:
17,62
weist den Dolmetscher an, die 62 zu drucken Ganzzahlen als Zeichen .Der Interpreter scheint in jeder Zeile ein Zeichen mehr zu benötigen, als er sollte. Ich gehe davon aus, dass dies für Newlines im Windows-Stil gilt. Entfernen Sie einen Code
K
aus jeder Zeile, damit der Code gemäß der Spezifikation funktioniert (oder in einem Browser, in dem Zeilenumbrüche eingeführt werden).Um den Code zu testen, fügen Sie ihn in den Quellbereich ein, drücken Sie Enter, um den nachfolgenden Zeilenumbruch einzufügen, geben Sie
23
den Konsolenbereich ein (um von der Standardnotation 23.dezsy zur automatischen Erkennung zu wechseln ) und klicken Sie auf Run Interpreter!.quelle
66 - Pyth, verwendet keine
e
Ausgabe ist Zitat 62:
Verwendet die Zeichen
12456789:CDGJPRSTdhjkmtx
.Bisher verboten:
z" &'()*+,-./03;<=>@X[\]psy{
Es basiert auf einer Reihe von Regex-Ersetzungen -
:
in Pyth ersetzt jedes `das Backtick-Zeichen durch eine Zeichenfolge mit zwei Zeichen, die ein neues Zeichen gefolgt von einem Backtick enthält.Die Ersetzungen werden alle auf eine ursprüngliche Zeichenfolge von nur `(J) angewendet.
Die zwei Buchstabenfolgen werden unter Verwendung der Basisänderungsfunktion
j
auf einer Zahl und einer Basis erzeugt, um einen Listeneintrag von Zahlen zu erzeugen, die dann durch die neu definierteS
Funktion in eine 2-Zeichenfolge ASCII-codiert werden .Erläuterung:
quelle
z
von 66 in Ihrem Diagramm vergessen . Dies unterbricht die Kette, da sich der nächste Eintrag auf der zweiten Seite befindet.60. Viertens (verwendet kein
^
)(Es gibt 54 neue Zeilen und 51 Tabulatoren.)
Ausgabe ist Zitat 56:
Bisher verboten :
"'&()*+-,./\037;<=>@X_[sovy pez]{}
quelle
59. Applesoft BASIC, verwendet keine
~
(Verwendet 11 Zeilenumbrüche)
Ausgabe ist Zitat 55:
"La-dee-da, la-dee-da." - Annie Hall
Bisher verboten:
"'&()*+-,./\037;<=>@X_[sovy pez]^{}
Läuft auf einem Apple // e (oder Emulator).
Kurze Erklärung: Nach dem Löschen des Bildschirms springt der "CALL 2111" in den Zeilen 4-15 zum eingebetteten 6502-Maschinencode, der jedes Zeichen direkt auf die Textseite schreibt.
Einzelheiten:
Demontage:
Maschinencode könnte sicherlich optimiert werden, aber einige Macken sind auf Codierungsbeschränkungen zurückzuführen, zum Beispiel:
quelle
41. EINSTELLEN (verwendet nein
L
)(Es dürfen keine neuen Zeilen nachgestellt werden.)
Ausgabe ist Zitat 50:
Bisher verboten :
"#$&'()*+,-./01357:;<=>@[\]^_ BdeEghJNopQksvWxXyz{|}~
Verbleibende Zeichen:
!
%
?
`
2
46
89
A
CD
FGHI
K
M
OP
RSTUV
YZ
abc
f
ij
lmn
qr
tu
w
ADJUST ist eine 2D-Sprache mit 1 Register und 2 Stapeln. Der Codezeiger beginnt in der unteren linken Ecke und geht dann in nordöstlicher Richtung. Anweisungen basieren auf der Primfaktorisierung des aktuellen Zeichencodes, z. B.
Z
= 90 = 5 × 3 × 3 × 2, also des ZeichensZ
die Aktion "5" einmal, "3" zweimal und dann "2" einmal ausführt. Auf diese Weise haben wir mehrere Möglichkeiten, eine Funktion auszuführen und die verbotenen Zeichen zu vermeiden.Die Grundidee des Programms ist:
In Schritt 1 verwenden wir diese Buchstaben, um die 2 und 5 anzugeben:
F
(7 × 5 × 2)R
(41 × 2)t
(29 × 2 × 2)8
(7 × 2 × 2 × 2)Es gibt 7, 29, 41, aber diese haben keinen Einfluss auf das Endergebnis. In Schritt 2 verwenden wir
K
(5 × 5 × 3), um eine "3" bereitzustellen. Beachten Sie, dass ein Paar "5" No-Op ist.In Schritt 3 wählen wir
A
(13 × 5). In Schritt 4 verwenden wirn
(11 × 5 × 2), um die Stapelgröße zu steuern undK
die Richtung anzupassen.Wenn Schritt 1 keine enthält
R
, wirdKAnK
das Zeichen normalerweise gedruckt und um 4 Zeilen nach oben verschoben. AnsonstenKKA
drucken wir und bewegen uns 2 Zeilen nach unten. Gelegentlich gibt es auch einKnnK
um 4 Linien nach oben zu zwingen, da der Startpunkt in der unteren linken Ecke liegen muss.Wenn jemand interessiert ist, ist hier eine Arbeitsumgebung , um den obigen Code zu erstellen. Es gibt keinen automatischen Generator.
quelle
23. Glypho , verwendet keine
%
Ausgabe ist Zitat 30:
Bisher verboten :
!"#$&'()*+,-./013567:;<=>@[\]^_` AbBCdeEFghIjJkLMNopqQRsTUvVWxXyYzZ{|}~
Verbleibende Zeichen:
?
2
4
89
D
GH
K
OP
S
a
c
f
i
lmn
r
tu
w
Beachten Sie, dass dies mit dem Java-Interpreter funktioniert , jedoch nicht mit der esolangs-Seite zur Codierung von
[
und übereinstimmt+
. Das Design von Glypho ist jedoch so, dass der vollständige Befehlssatz verfügbar ist, solange Sie vier verschiedene Zeichen haben, und alles außer Schleifen ist verfügbar, wenn Sie drei haben. Dies ist also ein kleines Detail.Ich hatte zuvor ein Zitat ausgewählt, das mir aus einem Film gefällt, den ich tatsächlich gesehen habe, aber anscheinend habe ich eine Regel übersehen. :(
quelle