Vor ungefähr einem Jahr, am 31. Dezember 2015, hatte ich die Idee, dass:
Doorknob gnädig gesammelte Zeichen aus der PPCG Gemeinschaft und hielt sie für ein Jahr sicher.
Es nahmen sage und schreibe 74 Personen teil, sodass wir 74 druckbare ASCII- Zeichen zum Spielen haben!
Hier sind die 74 Zeichen der Zeitkapsel-Zeichenfolge für 2016 in der Reihenfolge, in der sie übermittelt wurden:
H@~*^)$.`~+1A|Q)p~`\Z!IQ~e:O.~@``#|9@)Tf\eT`=(!``|`~!y!`) Q~$x.4|m4~~&!L{%
Hier sind die 74 Zeichen der Zeitkapsel-Zeichenfolge 2016 in ASCII-Reihenfolge (Leerzeichen am Anfang beachten):
!!!!!#$$%&())))*+...1449:=@@@AHILOQQQTTZ\\^`````````eefmpxy{||||~~~~~~~~~
Es ist nicht viel zu tun, aber hier mögen wir eine Herausforderung.
Die Herausforderung
Um zu bestimmen, welche Sprache mit der Zeitkapsel-Zeichenfolge "am besten" ist, haben wir 6 (für 201 6 ) Herausforderungen mit zunehmendem Schwierigkeitsgrad, bei denen Sie jeweils eine Teilmenge der 74 Zeitkapsel-Zeichen verwenden müssen.
Mit 6 unterschiedlichen Herausforderungen können mehr Sprachen konkurrieren, aber nur die besten Sprachen können alle beantworten und punkten.
Wertung:
- Jede Herausforderung wird von 0 bis 74 bewertet, je nachdem, wie viele Charaktere verwendet werden.
- Höhere Werte sind besser.
- Wenn Ihre Sprache eine Herausforderung nicht bestehen kann, ist Ihre Punktzahl für diese Herausforderung 0.
- Jede nicht leere Teilmenge der Herausforderungen kann abgeschlossen werden.
- Ihre Endpunktzahl ist die Summe der Punkte aus allen 6 Herausforderungen.
- Das bestmögliche Endergebnis ist 6 × 74 oder 444 .
Die Herausforderungen
1. Führen Sie aus
Wenn der Code einer Sprache überhaupt nicht ausgeführt werden kann, kann er überhaupt nichts tun.
Schreiben Sie das längste vollständige Programm, das möglich ist (verwenden Sie dazu nur die 74 Zeichen in der Zeitkapsel), das ohne Fehler bei der Kompilierung oder zur Laufzeit ausgeführt wird.
Es ist egal, was das Programm macht, es ist egal, ob es Input / Output hat oder in eine Endlosschleife eintritt, es ist nur wichtig, dass es fehlerfrei läuft. (Warnungen sind in Ordnung, ebenso wie Fehler, die durch falsche Benutzereingaben verursacht wurden.)
Kommentare sind erlaubt, dies könnte also so einfach sein wie
#H@~*^)$.`~+1A|Q)p~`\Z!IQ~e:O.~@``|9@)Tf\eT`=(!``|`~!y!`) Q~$x.4|m4~~&!L{%
in Python für eine Punktzahl von 74.
(Haben Sie keine Angst zu antworten, wenn dies die einzige Herausforderung ist, die Ihre Sprache bewältigen kann, aber erwarten Sie auch nicht viele Stimmen.)
Punktzahl = Programmlänge (längeres Programm ist besser)
2. I / O
Eine Sprache ohne Eingabe oder Ausgabe ist fast so nutzlos wie eine Sprache, die nicht ausgeführt werden kann.
Geben Sie bei einem druckbaren ASCII- Zeichen von !
(0x33) bis (0x7D) }
das druckbare ASCII-Zeichen davor und danach aus.
Die Ausgabe kann eine Zeichenfolge oder Liste der Länge zwei oder die durch ein Leerzeichen oder eine neue Zeile getrennten Zeichen sein.
Wenn es sich bei der Eingabe beispielsweise um }
die Ausgabe handelt, kann dies |~
oder ["|", "~"]
oder | ~
oder sein |\n~
.
Ebenso "
ist die Ausgabe für !
und AC
ist die Ausgabe für B
.
Punktzahl = 74 - Programmlänge (kürzeres Programm ist besser)
3. Verzweigungsfähigkeit
Bedingungen sind oft eine Voraussetzung für die Vollständigkeit des Turing , was oft eine Voraussetzung dafür ist, dass eine Sprache nützlich ist.
Wenn eine positive Ganzzahl mit den Dezimalstellen endet, 16
ändern Sie die Zahl 6
in a 7
und geben Sie das Ergebnis aus. Andernfalls geben Sie die Eingabe unverändert aus. Bei Bedarf können Sie Zeichenfolgen für die Eingabe / Ausgabe verwenden.
Beispiele:
2016 -> 2017
16 -> 17
116 -> 117
1616 -> 1617
6 -> 6
15 -> 15
17 -> 17
106 -> 106
2106 -> 2106
Punktzahl = 74 - Programmlänge (kürzeres Programm ist besser)
4. Endlos wiederholbar
Eine Sprache, die keine Schleifen ausführt, erzeugt sich wiederholenden Code, so dass Sie eine Weile eine Programmierpause einlegen müssen.
Geben Sie bei einer positiven Ganzzahl ein ASCII-Kunstquadrat mit dieser Seitenlänge aus, das mit einem Muster aus konzentrischen kleineren Quadraten gefüllt ist, die sich zwischen zwei verschiedenen druckbaren ASCII- Zeichen abwechseln . Sie müssen nicht die gleichen zwei Zeichen für verschiedene Eingaben sein.
Zum Beispiel:
1 <- input
X <- output
2
XX
XX
3
XXX
X-X
XXX
4
XXXX
X--X
X--X
XXXX
5
YYYYY
Y...Y
Y.Y.Y
Y...Y
YYYYY
6
XXXXXX
X----X
X-XX-X
X-XX-X
X----X
XXXXXX
7
ZZZZZZZ
Z-----Z
Z-ZZZ-Z
Z-Z-Z-Z
Z-ZZZ-Z
Z-----Z
ZZZZZZZ
Punktzahl = 74 - Programmlänge (kürzeres Programm ist besser)
5. Math
Eine Sprache, die nicht gut mit Zahlen und Mathematik umgehen kann, ist möglicherweise auch für die Hauptfächer der Geisteswissenschaften geeignet.
Nehmen Sie keine Eingabe, sondern geben Sie die 72 positiven und negativen Ganzzahlteiler von 2016 in beliebiger Reihenfolge aus. Die Ausgabe kann in angemessener Weise als Zeichenfolge oder Liste formatiert werden.
Beispiel:
-1, -2, -3, -4, -6, -7, -8, -9, -12, -14, -16, -18, -21, -24, -28, -32, -36, -42, -48, -56, -63, -72, -84, -96, -112, -126, -144, -168, -224, -252, -288, -336, -504, -672, -1008, -2016, 1, 2, 3, 4, 6, 7, 8, 9, 12, 14, 16, 18, 21, 24, 28, 32, 36, 42, 48, 56, 63, 72, 84, 96, 112, 126, 144, 168, 224, 252, 288, 336, 504, 672, 1008, 2016
Punktzahl = 74 - Programmlänge (kürzeres Programm ist besser)
6. Esoterik
(Nein, nicht das .) Wir bei PPCG mögen unser esoterisches Zeug , und Quines sind ein gutes Beispiel dafür.
Schreiben Sie die längste Quine, die Sie können, nach den üblichen Quine-Regeln . Ein Quine ist ein Programm, das keine Ein- und Ausgaben selbst vornimmt.
Punktzahl = Programmlänge (längeres Programm ist besser)
Spezifische Regeln
- In jeder der 6 Herausforderungen muss Ihr Programm eine Teilmenge der 74 Zeitkapsel-Zeichen sein, die nach Belieben neu angeordnet wurden. Es kann sich um eine leere Untermenge oder eine falsche Untermenge handeln , sodass jedes Ihrer Programme nur 0 und bis zu 74 Zeichen enthalten kann.
- Eine einzelne nachgestellte Zeile am Ende der Eingabe / Ausgabe / des Codes ist überall in Ordnung, da dies für einige Sprachen erforderlich ist oder nicht einfach vermieden werden kann.
- Sofern nicht anders angegeben, kann jede Herausforderung nach unseren Vorgaben als Funktion oder als vollständiges Programm abgeschlossen werden .
- Alle Herausforderungen müssen in derselben Sprache abgeschlossen werden.
- Sie müssen eine Sprache (oder Version einer Sprache) verwenden gemacht , bevor es war 2017 überall auf der Erde .
- Jeder kann gerne antworten, ob Sie der Zeitkapsel einen Charakter hinzugefügt haben oder nicht.
Fühlen Sie sich frei, die Zeitkapsel-Charaktere 2016 in Ihren eigenen Herausforderungen zu verwenden.
quelle
6×74 or 444
ist das nicht möglich, da das leere programme bedeuten würde, die sich irgendwie anders verhalten. Daher ist 442 das tatsächliche Minimum, was bedeutet, dass zwei der drei Programme, die Eingaben aufnehmen, einen Buchstaben enthaltenAntworten:
Glypho , 74 + (74 - 36) = 112
1. Ausführen (74 Bytes)
2. IO (36 Bytes)
Erläuterung
Glypho schien eine ziemlich gute Wahl für diese Herausforderung zu sein, da es nicht darum geht, welche Charaktere verwendet werden. Stattdessen werden Gruppen von vier Zeichen angezeigt, und der Befehl wird basierend auf dem Wiederholungsmuster in diesen vier Zeichen ausgewählt. Da es viele Duplikate in der Zeitkapselzeichenfolge gibt, sind wir in den Programmen, die wir schreiben können, ziemlich flexibel, mit der Ausnahme, dass wir auf Programme mit 18 Befehlen beschränkt sind (was in Glypho nicht viel ist). Während dies mir erlaubte, die ersten beiden Probleme ziemlich leicht zu lösen, bezweifle ich, dass Glypho die anderen mit so wenigen Charakteren ausführen kann.
Ich habe diese mit dem Java-Interpreter getestet, der vom 23.06.2006 auf dem Wayback-Rechner abgerufen wurde und der eine etwas andere Zuordnung der Befehle verwendet:
Das Run- Programm übersetzt in:
Wo
...
ist irgendein Müll, den ich nicht übersetzt habe?Das IO- Programm übersetzt in:
Folgendes bewirkt dies:
quelle
CJam, 74 + (74 - 14) + (74 - 26) = 182 Punkte
1. Ausführen (74 Bytes)
Wenn Sie
e#
nach vorne gehen, wird die gesamte Zeile auskommentiert.2. E / A (14 Byte)
Dennis sparte 8 Bytes.
Erläuterung:
3. Verzweigungsfähigkeit (26 Bytes)
Erläuterung:
Ich schaue mir die anderen später an. ( EDIT : Ich bezweifle, dass sie möglich sind, ohne Block- oder String-Literale ... vielleicht die mathematische?)
quelle
9`)ZH*+~):Q(Q)
.J, Ergebnis 71 + (74 - 19) = 126
Aufgabe 1, Länge 71
Dies definiert ein Verb
AHILO
als das Innere. Ungebraucht:Ich glaube nicht, dass es eine Möglichkeit gibt, länger zu werden.
Aufgabe 3, Länge 19
Die Art und Weise, diese Aufgabe ohne Einschränkungen auszuführen
+16=100|]
, lautet wie folgt:Wir haben
+
,=
und mehrere Kopien oder|
in unserer Verfügung, und es ist leicht zu umgehen]
, aber die Zahlen sind problematischer. Hier ist der erste Teil, der Input Modulo 100 berechnet:Nachdem wir damit fertig sind, wollen wir die Zahl 16 produzieren. Der einfache Weg ist mit
*~4
(4 multipliziert mit sich selbst), aber wir haben sie bereits verwendet,*
so dass das verboten ist. Stattdessen werden wir einige Array-Manipulationen durchführen.Arbeit
2
Das ist definitiv unmöglich. Die einzigen Möglichkeiten, Zeichenwerte zu manipulieren, sind
a.
undu:
, und wir haben Zugriff auf keine von beiden.Wenn wir nun
a
anstelle von beispielsweise verwenden könntenA
, wäre dies eine Lösung:Der schwierigste Teil, dies zum Laufen zu bringen, bestand darin, die Zahl -1 zu erzeugen.
4
Dies erzeugt die Form der Hülle, aber ich kann scheinbar keinen Weg finden, Zeichen zu erzeugen. Ach.
5
Zugegeben, dies scheint die einfachste Aufgabe zu sein, die in J zu erledigen ist. Ohne
i.
wird dies jedoch ziemlich schwierig.6
Dies ist ohne eine solche
449
oder ähnliche Fake-Out-Quine wahrscheinlich nicht möglich , da die Kapsel-Zeichenfolge keine Anführungszeichen oder andere Methoden zur Herstellung von J-Zeichenfolgen enthält.quelle
Q{~1+I.~&Q=:a.
das nächste Zeichen an: Binden Sie das Alphabeta.
anQ
, suchen Sie den Index der Eingabe darin mitI.
, fügen Sie einen hinzu und indexieren Sie inQ
. Versuch es. Das einzige verbleibende Problem ist zu produzieren-1
...+16=100&|
. Sie müssen nur irgendwie 16 und 100 produzieren.+($@#~@$~4)=1e4|&%:*~
Es war extrem nervig, weil wir nur ein(&=:+*
und zwei haben4
.Q{~(*^.4%9 1)+I.~&Q=:a.
Ich erkannte, dass der Logarithmus^.
negative Zahlen für Eingaben gibt, die streng zwischen 0 und 1 liegen, und wir müssen%
Brüche erzeugen und*
die Ergebnisse auf -1 und 1 bringen.PowerShell - Gesamtpunktzahl: 74
1. Durchlauf - Ergebnis: 74
Da dies in PowerShell äußerst schwierig ist (soweit ich das beurteilen kann, ist es mit den angegebenen Zeichen nicht möglich, jede mögliche Methode zum Abrufen von Eingaben zu verwenden), habe ich mich zumindest dazu entschlossen, die erste Herausforderung nach dem Zufallsprinzip zu sortieren, damit wir das Beispiel nicht alle direkt kopieren von der Post.
Hier ist also ein Zufallsgenerator für eine Herausforderung mit einer Antwort (für Sprachen, in denen
#
es einen Kommentar gibt):Probieren Sie es online!
quelle
$^
ist der "erste Token der vorherigen Zeile in der Sitzung", der äußerst begrenzt ist und sehr wahrscheinlich zu einer schwerwiegenden Abweichung von den Standard-E / A-Regeln führt.$^
ist in einer neuen Sitzung sowieso leer.Meme , Score von (
6265 + 70) 1351: Laufen
Ich habe alle Backticks (
`
) und mathematischen Operatoren entfernt. Sie führten zu Konflikten, weil es nicht genügend Zahlen gab, um jeden unären und binären Operator zu befriedigen. Ich habe einige in gelassen, was zu +3 Bytes führte . Resultierendes Programm:Ich habe keine Ahnung warum und wie das funktioniert. Zumindest löst es keine C # -Laufzeitausnahme aus und stürzt daher nicht ab.
6: Quine
Wisst ihr, wenn es irgendwo in diesen 74 Zeichen einen
-
oder einen Kleinbuchstaben gegebenq
hätte, wäre das viel zu einfach. Ich freue mich für denI
Betreiber, zumindest.Dieser Code ist nicht ganz offensichtlich. Hier ist eine Erklärung:
Nachkommastellen (zB1/4
) werden am Ende mit einem I angezeigt, um genau das anzuzeigen. DerI
Operator ist normalerweise nutzlos, ich habe ihn für andere Zwecke hinzugefügt, aber hey, es funktioniert so!Der obige Code ist ungültig. Dumm habe ich nicht gesehen, dass die 74 Zeichen keinen einzelnen Divisionsoperator enthalten, vorwärts (
/
). Ich habe mir allerdings noch etwas anderes ausgedacht:Erläuterung:
Ausgaben
True
(aufgrund der Art und Weise, wie C #Boolean.ToString()
Großbuchstaben und nicht Kleinbuchstaben verarbeitet). Ich bin mir nicht sicher, ob es sich um eine richtige Quine handelt. In der Zwischenzeit zerbreche ich immer noch den Kopf für eine gültige, wirklich richtige und intuitive Quine.Könnte vielleicht auch die I / O- und Math-Herausforderung lösen, aber mir fehlen bestimmte Token (Zeichen), die in den 74 Zeichen nicht enthalten sind.
quelle
Brainfuck, 74 Bytes
Ich musste es einfach tun.
Erläuterung:
Jedes Zeichen, das kein gültiges Brainfuck-Zeichen ist, wird als Kommentar behandelt. Der einzige Code, der tatsächlich ausgeführt wird, ist folgender:
Dies erzeugt keine druckbare Ausgabe, da weder 0 noch 1 druckbare Zeichen in ASCII sind. Da dies jedoch keinen Fehler verursacht, haben wir die erste Herausforderung erfolgreich abgeschlossen.
quelle
Mathematica, Punktzahl von 62
Es würde mich wundern, wenn jemand in Mathematica die Herausforderungen 2-6 bewältigen könnte. Hier ist das Beste, was ich mit Herausforderung 1 gemacht habe:
Definiert eine ziemlich dumme Funktion
A
mit einem konstanten Wert. Die 12 nicht verwendeten Zeichen sind:quelle
Oktave, Partitur 74
1. Führen Sie aus
50 dieser Zeichen sind Teil der Funktion, die restlichen 24 nicht.
Was es macht:
x =@(AHILOQQQTTZeefmpy)
Erstellt eine Funktionx
, die eine VariableAHILOQQQTTZeefmpy
als Eingabe annehmen kann .Um den Rest zu verstehen:
a||b
ruft die Funktionall()
auf beidena
und aufb
. Wenn einer oder beide dieser Werte true zurückgeben, gibt der||
Operator true zurück.!a
und~a
bedeutet hier dasselbe, sie sind beidenot(a)
.a.^b
ist eine elementweise Kraft(a(1)^b(1), a(2)^b(2) ...)
Fortsetzung der Erklärung
Ich werde jeden der Schritte verkürzen, während ich vorwärts gehe:
Und:
Es gibt eine gerade Anzahl von
not
, dies entsprichtnot(not(4))
alsotrue
oder1
.Der Rest ist auskommentiert.
quelle
*> <> , Gesamtpunktzahl = 74
1. Lauf, erziele 74 Punkte
Probieren Sie es hier aus!
Dies war sehr schwer ohne den
;
Charakter zu tun . Ich dachte tatsächlich, dass es für ein paar Momente unmöglich sein würde, bis ich das sah%
, hatte ich im Grunde aufgegeben.Dies ist auch ein gültiges> <> Programm.
Erklärt (irrelevante Teile weggelassen)
Herausforderungen
Ich könnte die anderen Herausforderungen ausprobieren ... sie wären extrem schwierig und beinhalten möglicherweise das Biegen der Regeln in seltsamer Weise, aber ein großzügiger Einsatz der
|
Spiegel und der!
Trampoline sollte mindestens eine weitere Herausforderung ermöglichen.Diese Herausforderungen sind besonders schwierig, da wir keine Ausgaben mit *> <> (
o
undn
) oder sogar Funktionsaufrufen (C
), Funktionsrückgaben (R
) oder Programmterminatoren (;
) zulassen . Auch wenn wiri
keine Eingabe haben, können wir die Eingabe dennoch auf dem Stapel ablegen, was ein Plus ist. Ein weiteres Plus ist, dass wir eine einzigep
Anweisung erhalten, mit der wir eine Anweisung in der Codebox ersetzen können. Dies kann möglicherweise mehrmals verwendet werden (hat noch keinen praktischen Weg gefunden), wodurch die anderen Programme möglich erscheinen (da wir zwei oder mehr Anweisungen generieren können).quelle
Haskell, Punktzahl 63
1. Führen Sie Folgendes aus:
Nicht verwendet werden
)))```````{
. Kommentare in Haskell sind--
oder{- ... -}
, daher gibt es keine einfache Vollkommentar-Version.Dieser Code definiert einen Infix-Operator,
!!!!!#$$%&*+...:@@@\^||||~~~~~~~~~
der zwei Argumente akzeptiert:fmpxyAHILOQQQTTZ
die ignoriert wird und daher von einem beliebigen Typ sein kanne
Dies muss eine Funktion sein, die zwei Zahlen annimmtIm Funktionskörper
e
wird dann auf 14 und 49 mit der`
-infix-Notation zugegriffen.Anwendungsbeispiel:
Der Operator wird auf
()
das leere Tupel angewendet und(*)
der Multiplikationsoperator14*49 = 686
wird berechnet.Probieren Sie es online!
Andere Herausforderungen
Ich bezweifle, dass eine der anderen Herausforderungen möglich ist, vor allem, weil es keine möglichen Variablennamen gibt, die doppelt vorkommen können. Dies ist nur
e
(oder so ähnlicheQT
), weil Variablennamen nicht mit einem Großbuchstaben beginnen können. Natürlich=
hilft es auch nicht , nur einen zu haben .quelle
Pyth, 131 für jetzt (2 Herausforderungen abgeschlossen)
1. Run, 74
Dieses Programm nimmt keine Eingabe und erzeugt keine Ausgabe.
Dieses Programm verwendet
$$
, was die Ausführung von willkürlichem Code ermöglicht, und ist daher online gesperrt, so dass dieses Programm online offline ausgeführt wird. Hier ist die Kompilierungsausgabe, damit Sie sehen können, was tatsächlich ausgeführt wird:Es ist ziemlich schwierig, ein Programm mit beliebigen Zeichen zu schreiben, das in Pyth keine Fehler verursacht. Ich habe mir die zusätzliche Herausforderung gestellt, dass das Programm auch ohne Benutzereingabe ausgeführt werden muss.
Der erste Schritt besteht darin
#
, alle Fehler zu verzehren. Als nächstes müssen wir Fehler durch vermeiden~
,I
undL
, die jeweils ihre eigenen Details haben. Dies wird erreicht, indem Sie sie in das$$
einfügen, wodurch sie in die Ausgabe-Kompilierung eingebettet werden. Auf diese Weise werden sie den Kompilierungsregeln von Python und nicht den von Python unterworfen. Um Benutzereingaben zu vermeiden, werden die verschiedenen Arity-0-Token (Variablen und Ähnliches) am Ende platziert und dieQ
s im$$
Block verschoben .2. IO
Das wird unglaublich schwierig, wenn es überhaupt möglich ist. Keine der Pyth-Funktionen, die willkürliche Zeichenfolgen oder Zeichen erzeugen, ist vorhanden, es sei denn
.f
, die Erzeugung willkürlicher Zeichen funktioniert wirklich schlecht.3. Verzweigungsfähigkeit: 74 - 17 = 57
Probieren Sie es online aus
Ein äquivalentes Pyth-Programm wäre:
Dieser Code nimmt den Eingangs-Mod 100, vergleicht ihn mit 16 und verwendet dann einen Ternär, um zwischen dem Eingang und dem Eingang plus eins zu wählen. Aufgrund von Zeichenbeschränkungen habe ich einige Ersetzungen vorgenommen:
Statt
?
, ternäre, benutzen ich|&
,or
dannand
, die die gleiche Funktionalität, mit der Ausnahme , dass es bricht , wenn der Eingang Null ist, aber da wir positive Integer - Eingang garantiert sind, ist es in Ordnung. (Dies hätte für keine zusätzlichen Zeichen behoben werden können, ist aber auf diese Weise einfacher.)Anstatt die beiden Zahlen direkt zu vergleichen, nehme ich ihr XOR mit
x
, das genau dann Null ist, wenn sie wie gewünscht gleich sind.Anstatt
100
direkt zu schreiben, erstelle ich es mit*TT
, daT
es auf initialisiert ist10
.Anstatt
16
direkt zu schreiben, erstelle ich es mitye|LZ9
.|LZ
Funktioniert im wesentlichen als Range-Funktion, so|LZ9
ergibt sich[0, 1, 2, 3, 4, 5, 6, 7, 8]
.e
Nimmt das letzte Element einer Liste und gibt8
.y
verdoppelt es und gibt16
wie gewünscht. Mit einem Extra+
oder einem Extra*
könnte ich einen Charakter retten, aber beide sind an anderer Stelle nützlicher.Da kommt noch mehr!
quelle
Ruby - Ergebnis: 74
1. Führen Sie aus
Von der Herausforderung gepackt.
quelle
JavaScript (ES6), Punktzahl = 74
1. Führen Sie 74 Byte aus
6. Esoterik (ungültig)
Mein Vorschlag für Quine lautete:
was sich als ungültig herausstellte, wie in den Kommentaren unten diskutiert.
quelle
Retina, Punktzahl 74
1. Lauf, erziele 74 Punkte
Ich habe die zusätzlichen Parens in die Konfiguration verschoben, damit sie den regulären Ausdruck ausgleichen können. Ich zog auch das
`
Recht nach denjenigen, und geändert+.
zu.+
.Probieren Sie es online aus
Die anderen sind wahrscheinlich unmöglich, da es keine Zeilenumbrüche gibt. Es gibt auch keine
-
für Transliteration oderd
für eine Ziffern-Zeichenklasse.quelle
Pip, Ergebnis 74 + (74 - 19) = 129
So viele Backticks mit keinem Zitat zu sehen, einzeln oder doppelt!
Aufgabe 1, 74 Punkte
Im Grunde genommen nur eine Reihe von Musterliteralen (Regex) in Backticks, von denen das letzte gedruckt wird. Da es eine ungerade Anzahl von Backticks gibt, müssen wir einen davon mit Backslash-Escape versehen (
`\``
). Probieren Sie es online aus , wobei das-w
Flag hinzugefügt wird, um zu beweisen, dass keine Warnungen generiert werden.Aufgabe 3, Punktzahl 55 (Länge 19)
Mit einer ziemlich seltsamen Eingabemethode - dem fünften Befehlszeilenargument - ist dies möglich. Probieren Sie es online!
Andere Aufgaben
Es ist möglich, Eingaben für Aufgabe 2 auf dieselbe Weise wie für Aufgabe 3 oben zu erhalten. Das Problem besteht darin, in ASCII-Code und zurück in ein Zeichen zu konvertieren. Ersteres kann erledigt werden
A
, letzteres erfordertC
oder möglicherweise die Indizierung in derPA
Variablen. Auf die Erstellung und Auswertung von Code kann nicht verzichtet werdenV
. Ich denke nicht, dass die Aufgabe möglich ist.Aufgabe 4 ist auch ohne eingeschränkten Zeichensatz eine Herausforderung. Vermutlich sind Listen erforderlich (ohne die
[]
Begrenzer oderRL
(Wiederholungsliste) und nur eine Möglichkeit zur VerwendungAL
(Liste anhängen) - nicht wahrscheinlich) oder möglicherweise etwas mitCG
(Koordinatengitter) oderMC
(Kartenkoordinaten), die beide nicht zulässig sind .Aufgabe 5 ist am Rande der Möglichkeiten. Schleifen wären schwierig, da
F
oder undM
ap nicht möglich sind und Bereiche nicht mit konstruiert werden können,
. Es könnte etwas mitT
Krankheit zu tun geben . Inkrement kann von derx:x+1
Sorte sein (natürlich mit einer anderen Variablen alsx
, obwohl). Teilbarkeitsprüfungen verwenden können%
. Trotzdem glaube ich nicht, dass es genug Charaktere gibt - besonders wiederholte Buchstaben -, um alles zu tun, was passieren muss.Aufgabe 6 sieht völlig unmöglich aus. Alle bekannten Pip Quines haben
"
in ihnen. Sie verwenden auchR
(replace),RP
(repr) oderV
(eval), von denen keines verfügbar ist.quelle
Tatsächlich ist score (74 + 0 + 0 + 0 + 0 + 0 ) = 74
Ja, die Kapselzeichenfolge funktioniert mit Actually as it is for Run, da Actually alle Fehler verwirft und jeder Fehler zu einem NOP wird.
H@~*^)$.
( Online ausprobieren! )~+1A|Q)p~
\Z!IQ~e:O.~@#|9@)Tf\eT`=(!
|~!y!
) Q~$x.4|m4~~&!L{%Es wird jedoch ein Durcheinander von Dingen ausgeben (aber auch seine Quelle einmal: 3).
Ich werde jedoch an anderen Herausforderungen arbeiten.
quelle
Q
(da es sich um das eingebaute Quining handelt), und es gibt keine doppelten Anführungszeichen, sodass Sie keine Formatierung von Zeichenfolgen vornehmen können. Ich habe gestern eine Weile daran gearbeitet, und ich bin ziemlich sicher, dass die anderen Programme nicht nur mit den 74 Zeichen möglich sind.05AB1E - Gesamtpunktzahl: 74
1. Führen Sie 74 Byte aus
Alles, was einen Fehler verursacht, wird von 05AB1E übersprungen. Diese ganze Codezeile ist ein NOP.
Probieren Sie es online!
quelle
(missbraucht) PHP, 74 + 74 = 148
Der PHP-Interpreter gibt einfach den Quellcode aus, bis er eine findet,
<?
da uns<
jede Permutation dieser Zeichen fehlt . Ich denke, das ist nicht schlimmer als die Verwendung eines eingebauten Quine-Befehls: Pquelle
output this char
bis es auf ein trifft<
. Ich sage nicht, dass es Nutzlast-fähig ist, oder was ich nur sage, das ist kein Unterschied zu einer Sprache, die ein Sprichwort hatoutput the source
. Wenn dies keine gültige Antwort für Teil 1 ist, ist jede Sprache, die Eingaben ohne Fehler akzeptiert, auch keine gültige Antwort. Ich denke nicht, dass dies beleidigender ist als die meisten Antworten hier.Mathematica, Ergebnis 68
Beachten Sie die nachgestellte Newline. Ich glaube nicht, dass eine der anderen Herausforderungen mit Mathematica erreicht werden kann.
quelle
Labyrinth, 74 Punkte
Ich bin mir ziemlich sicher, dass jede Auswahl dieser Zeichen ein gültiges Labyrinth-Programm ergibt, aber um es zumindest ein wenig interessanter zu machen, wird es
2016
Ziffer für Ziffer ausgedruckt. (Zusammenfassend: 22
auf dem Stapel drücken , eine einfügen / drucken, die andere auf den Hilfsstapel verschieben, 0 ausdrucken, 21
auf dem Stapel drücken , 1 einfügen / drucken, inkrementieren, bitweise nicht, negieren (das Letzte)1
ist a3
an dieser Stelle), Summe mit dem2
vom Aux-Stack, 5 * 10 + 4 = 54, als ASCII-Wert ausgeben, beenden)Der Großteil der langen Zeile wird einfach ignoriert, da
@
das Programm beendet wird.Die Herausforderungen 2, 3 und 4 sind unmöglich, da keiner der Labyrinth-Eingabebefehle verfügbar ist (
,
oder?
) und ich mir für 5 oder 6 nichts ausgedacht habe.quelle
SmileBASIC, 48 Punkte
Herausforderung 1:
Erläuterung:
Andere:
Es sind keine Ein- / Ausgabebefehle verfügbar, der Rest ist also nicht möglich.
Trotzdem nicht schlecht für eine echte Sprache ohne Kommentare.
quelle
MATL , Gesamtpunktzahl 74
1. Lauf, erziele 74 Punkte
Alles bis zu
%
ist aktueller Code.%
ist ein Kommentarsymbol, daher werden die Zeichen rechts davon ignoriert.Das Programm gibt
1
fehlerfrei aus.Probieren Sie es online!
quelle
Bash, Score 74
1: Laufen. Wir können alle 74 laufen
6: Esoterik:
Das leere Programm ist ein Quine in Bash.
Ohne Leerzeichen kann nichts anderes in der Liste erreicht werden. Ergo, ich habe den Gewinnerbeitrag.
quelle
Perl 6 , Gesamtpunktzahl 74
1. Lauf, erziele 74 Punkte
Keine Kommentare.
(Wenn Sie einfach die Taste
#
nach vorne setzen, um einen Kommentar zu erstellen, funktioniert dies ebenfalls, aber das macht mehr Spaß.)Arbeit
Dies ist die Teilmenge der Perl 6-Sprache, die nur die zulässigen Zeichen verwendet:
Die unmittelbare Hürde, die die Herausforderungen 2 bis 6 verhindert, besteht darin, dass es anscheinend keine Möglichkeit gibt, E / A-Vorgänge durchzuführen:
Wenn wir davon ausgehen, dass es eine Datei mit dem Namen gibt
f
, können wirQ`f`.IO.e
überprüfen, ob sie existiert oderQ`f`.IO.x
ob sie ausführbar ist. Aber wir können es nicht lesen oder schreiben.Wir könnten
Q:x` `
einen Shell-Befehl ausführen (vorausgesetzt, wir finden die Zeichen für einen). Wir können aber nichts interpolieren, es wäre also nur gut zum Lesen, nicht zum Schreiben.Da es keine schließende Klammer gibt, können wir keinen Lambda-Block erstellen
{1 + $_}
, der automatisch den Wert seiner letzten Anweisung zurückgibt.Wir könnten das Sternchen verwenden, um einen Ausdruck Lambda (zB
1+*
) zu erstellen , aber dann können wir nur ein Argument verwenden, nur einmal auf dieses Argument verweisen und sind in der Syntax / den Operatoren, die wir verwenden können, noch eingeschränkter.quelle
Lua, Punktzahl 31
1. Lauf (31 von 74 Punkten)
quelle
variable =stuff
ist 1 Byte länger.Jelly , Punktzahl 74
1. Laufen , 74
Ich bin mir nicht sicher, wie ich die anderen machen soll.
quelle
/// , Ergebnis: 146
1. Laufen, Ergebnis: 74
!!!!!#$$%&())))*+...1449:=@@@AHILOQQQTTZ\\^`````````eefmpxy{||||~~~~~~~~~
6. Quine, Ergebnis: 72
!!!!!#$$%&())))*+...1449:=@@@AHILOQQQTTZ^`````````eefmpxy{||||~~~~~~~~~
Ja, wenn der Code keine Schrägstriche vorwärts oder rückwärts enthält, druckt er sich selbst.
quelle