Schreiben Sie in einer Programmiersprache Ihrer Wahl 95 Programme, von denen jedes ein anderes der 95 druckbaren ASCII-Zeichen ausgibt, ohne dass dieses Zeichen irgendwo im Programm vorkommt .
Wenn Ihre Sprache beispielsweise Python war , P
könnte es sein , dass Ihr Programm das Zeichen ausgibt
print(chr(80))
weil P
hat ASCII-Code 80. Dieses Programm ist gültig, weil P
nie im Quellcode erscheint. Allerdings für das Programm, das Kleinbuchstaben ausgibt p
, so etwas wie
print(chr(112))
wäre ungültig , weil, während es gedruckt wird p
, p
in dem Code. Ein gültiges Programm könnte sein
exec(chr(112)+'rint(chr(112))')
was druckt p
aber nicht enthält p
.
Ihr Ziel ist es, jedes Ihrer 95 Programme so kurz wie möglich zu halten. Ihre Punktzahl ist die Summe der Zeichenlängen aller Ihrer Programme.
Wenn Sie aus irgendeinem Grund keine gültigen Programme für bestimmte Zeichen schreiben können, können Sie diese Zeichen als "Nicht programmiert" oder " DNP " markieren und Programme für diese Zeichen vollständig weglassen. Auf diese Weise können syntaktisch strenge Sprachen miteinander konkurrieren.
Der Gewinn Antwort ist die Antwort , die die niedrigste Punktzahl hat von der Menge der Antworten , die die wenigsten DNP sind haben.
Regeln
Der Quellcode aller Ihrer Programme enthält möglicherweise nur druckbare ASCII-Zeichen sowie Tabulatoren und Zeilenumbrüche, die alle als ein Zeichen gezählt werden. (Weil es in einer anderen Kodierung leicht sein würde, nicht existierende Zeichen wegzulassen!)
- Hinweis: Diese Regel scheint notwendig zu sein, aber es gibt viele Sprachen mit unterschiedlichen Codierungen, und ich bin sicher, es wäre cool, die Antworten für sie zu sehen. Daher können Sie diese Regel brechen , Sie können beliebige Zeichen verwenden, aber dann wird Ihre Antwort nicht wettbewerbsfähig , es kann nicht gewinnen.
Die Programme müssen aktuelle, vollständige Programme sein , die den Standardkonventionen Ihrer Sprache entsprechen. Funktionen und REPL- Snippets sind nicht erlaubt.
Die Ausgabe jedes Programms sollte auf stdout oder die von Ihrer Sprache akzeptierte Alternative gehen.
Programme sollten nicht zur Eingabe auffordern oder Eingaben erfordern. (Wenn die Aufforderung zur Eingabe Ihrer Sprache inhärent ist, ist dies in Ordnung.)
Programme sollten deterministisch, endlich in der Laufzeit und unabhängig sein. zB sollte es egal sein, ob man in einem Ordner läuft, der von den anderen Programmen getrennt ist.
Die Ausgabe eines Programms sollte das genaue druckbare ASCII-Zeichen sein, dem es entspricht, optional gefolgt von einer einzelnen nachgestellten Zeile, nicht mehr und nicht weniger.
Stellen Sie sicher, dass Sie in Ihrer Antwort Informationen zu allen 95 (im Idealfall) Programmen sowie Ihre Punktzahl und alle DNPs angeben. Sie müssen nicht Liste alle Programme , die ein einfaches Muster wie „folgen print(chr(80))
, print(chr(81))
, print(chr(82))
...“ , aber stellen Sie sicher , dass Sie sicher sind , dass sie alle würde funktionieren und dass Ihre Gäste richtig hinzugefügt wird .
Als Referenz sind hier die 95 druckbaren ASCII-Zeichen aufgeführt, die Ihre Programme ausgeben müssen:
!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~
0