Herausforderung:
Das Konzept ist einfach genug: Schreiben Sie ein vollständiges Programm, um Ihren eigenen Code Golf Score auszugeben!
Die Ausgabe sollte nur die Byteanzahl Ihres Programms und ein Trailing sein bytes
.
ABER WARTEN ... es gibt eine Einschränkung:
- Ihr Quellcode darf keine der Ziffern aus Ihrer Byteanzahl enthalten
- Also , wenn Sie Ihre Gäste ist
186 bytes
, können Sie Ihr Programm nicht die Zeichen1
,6
oder8
Beispielausgabe:
315 bytes
27 Bytes
49 BYTES
Zusätzliche Regeln:
- Unnötige Zeichen, Leerzeichen und Zeilenumbrüche sind im Quellcode nicht zulässig, abschließende Leerzeichen und Zeilenumbrüche sind jedoch in der Ausgabe völlig akzeptabel
- Zwischen der Zahl und
bytes
der Ausgabe sollte ein einzelnes Leerzeichen stehen - Bei Buchstaben wird die Groß- / Kleinschreibung nicht berücksichtigt
- Keine Selbstinspektion oder Lesen des Quellcodes
Standardlücken sind nicht zulässig
Das ist Code-Golf , also
Kürzester Code in Bytes gewinnt!
bytes
ich vermute, dass es beabsichtigt ist, dass die Zählung die Bytes enthält, die zum Drucken des Textes benötigt werden:bytes
1 bytes
oder1 byte
? (Denken Sie daran, es gibt bereits 41 Antworten, obwohl ich glaube, dass keine davon betroffen sind)Antworten:
JavaScript, 19 Bytes
Octal wurde erfunden, um zwei Zwecken zu dienen:
Probieren Sie es online!
quelle
Perl 5 , 16 Bytes
Es gibt viele andere Wege,
16
aber dieser gehört mirProbieren Sie es online!
quelle
&
|
^
und~
können auch angewendet werden Zeichenfolgen und bearbeiten Sie sie wie eine Liste von ASCII-Werten (genau dann, wenn beide Seiten Zeichenfolgen sind). Für|
und^
es funktioniert so, als ob die Shorte-Zeichenfolge mit erweitert wird\0
. Danach ist eine einfache Übung, um Buchstabenkombinationen zu finden, die zur gewünschten Ausgabe7 , 23 Zeichen, 9 Bytes
Probieren Sie es online!
Dies ist eine ziemlich schwierige Herausforderung in einer Sprache, die nur aus Ziffern besteht, aber ich habe es geschafft ...
Dies sind nur 9 Bytes in der 7er-Kodierung. (Genau genommen sind es 8⅜ Bytes (23 × ⅜ - ¼, da die letzten beiden nachgestellten 1-Bits weggelassen werden können), aber zum ersten Mal ist es ein Vorteil, wenn PPCG auf eine ganze Anzahl von Bytes aufrundet die zusätzlichen nachgestellten 1 Bits sind notwendig und werden daher von der Frage nicht gebannt.) Ein umkehrbarer Hex-Dump:
Die Hauptherausforderung beim Schreiben dieses Programms in 7 bestand darin, es auf unter 10 Byte zu beschränken (wie beim Schreiben von 7, ohne
0
oder1
ziemlich schwer zu verwenden). Dies verwendet dieselbe Struktur wie das Standardprogramm "Hallo Welt":Mit anderen Worten, wir beginnen damit, zwei Abschnitte des Datenraums zu erstellen. Wir haben zwei Literale, von denen jeder eine Folge von Befehlen drückt. Der zweite Abschnitt (sie sind gestapelt, also first push = last pop) ist eine ziemlich willkürliche Folge von Befehlen, wird jedoch unter Verwendung der Befehlsfolge
5434004514133240105
(wodurch die Datensequenz erzeugt wird5434664574733246765
; bei der Erörterung von 7 im Text verwende ich normalerweise normale Schrift für einen Befehl, der ein Literal drückt, und fett für das entsprechende resultierende Literal). Der erste Abschnitt wird mithilfe der Befehlssequenz verschoben403
und erzeugt463
. Dann wird der erste Abschnitt zurück in das Programm kopiert (ein implizites Verhalten von 7).Das
463
setzt sich nun aus (fett gedruckten) Befehlen zusammen, die etwas sofort ausführen, anstatt aus (nicht fett gedruckten) Befehlen, die nur Literale drücken.4
ordnet die Abschnitte neu an, um unser "String-Literal" in den ersten Abschnitt zu bringen. Anschließend0
wird die Operation ausgeführt, für die 7 am bekanntesten ist: Einen Abschnitt des Datenraums nehmen und die Befehlssequenz rekonstruieren, für die die Wahrscheinlichkeit am größten ist, dass sie erstellt wurde. In dem Fall, in dem die ursprüngliche Befehlssequenz vollständig0
- war5
, ist dies 100% genau (was nicht verwunderlich ist, da diese Befehle lediglich Daten übertragen und somit offensichtliche Beweise dafür hinterlassen, was sie getan haben), und so erhalten wir unsere ursprüngliche Sequenz5434004514133240105
zurück. Zum Schluss3
druckt es aus.Das übrige, was hier zu sehen ist, ist die Kodierung des Strings. Dies hat eine eigene domänenspezifische Sprache:
(Im Zeichensatz "Ziffern und gebräuchliche Symbole" gibt es keinen "Zeichensatz auswählen: Kleinbuchstaben". Zuerst muss ein anderer Zeichensatz eingegeben werden. Ich musste also Großbuchstaben verwenden, um so kurz zu spielen, dass er unter die effektiven 10 passt -Byte-Limit.)
quelle
Canvas , 8 Bytes
Probieren Sie es hier aus!
Eine interessantere 20-Byte-Lösung:
Probieren Sie es hier aus!
quelle
Brainfuck , 53 Bytes
Probieren Sie es online!
Ein weiterer Beitrag mit Großbuchstaben
bytes
. Mit Hilfe des exzellenten BF-Crunch- Helfers von primo gefunden.quelle
PHP, 14 Bytes
quelle
bytes
Teil außerhalb des zu platzieren?>
? Probieren Sie es online!PHP älter als 7.2 , 13 Bytes
Setzt Standardeinstellungen (E_NOTICE-Warnungen deaktiviert) und eine ältere PHP-Version als 7.2 voraus.
Muss mit dekodiert werden
xxd -r
Oder wenn Sie Base64 bevorzugen
Probieren Sie es online!
quelle
R , 16 Bytes
Probieren Sie es online!
quelle
bytes
". Das Programm ist 16 Bytes.cat
Standardmäßig wird ein Leerzeichen zwischen den Eingaben eingefügt.object.size
Ausgaben im richtigen Format (bytes
standardmäßig enthalten). Dummerweise ist die kürzest ich finden konnte 17:object.size(0)-39
. TIOobject.size(0)/3
.Stax , 5 Bytes
Führen Sie es aus und debuggen Sie es
Ausgepackt sieht es so aus. Packed Source-Modus macht diese Art von trivial und uninteressant.
Wenn Sie den gepackten Quellmodus nicht verwenden möchten, wird er
6^p`5l@
für 7 Byte verwendet.quelle
restricted-source
, nicht in der Sprache. Dies ist die direkteste Art,"5 bytes"
mit Stax zu produzieren.Python 3 ,
252418 BytesProbieren Sie es online!
quelle
3*8
sollte jedoch in Ordnung sein05AB1E , 6 Bytes
Probieren Sie es online!
Alternativen zu
₂¤
umfassen:5>
,₁¤
,3·
quelle
Bash, 21 Bytes
"Read your own source code" ist hier eindeutig nicht der Gewinner, aber niemand anderes hat einen eingereicht, also was zum Teufel.
Probieren Sie es online!
quelle
Retina , 15 Bytes
Dieses Programm zählt die Anzahl der Teilzeichenfolgen mit mindestens zwei Zeichen in der Zeichenfolge "Bytes" und gibt diese Anzahl und die Zeichenfolge selbst aus.
Probieren Sie es online!
quelle
PHP + HTML, 16 Bytes
Ja, dies kommt dem Missbrauch von Sicherheitslücken ziemlich nahe, aber ich hatte das Gefühl, dass dies veröffentlicht werden musste. Und die Verwendung von PHP bedeutet , dass diese Antwort technisch ist in einer Turing-vollständigen Programmiersprache geschrieben. Natürlich würde jede andere ähnliche HTML-Template-Sprache genauso gut funktionieren.
Live Demo (ohne PHP):
quelle
Gleichstrom ,
1411 BytesProbieren Sie es online!
-3 Bytes von
@Cows quack
quelle
[ bytes]Bnn
rasiert einige BytesMATL , 13 Bytes
Probieren Sie es online!
Dies drückt den String '57 $ f} xiw 'und subtrahiert
4
, um zu erhalten13 bytes
. Dies wird mit in Zeichen umgewandeltc
.quelle
6EV' bytes'h
ist 12 (ich wollte es gerade posten)Oktave , 22 Bytes
Probieren Sie es online!
quelle
Oktave , 23 Bytes
Probieren Sie es online!
Und das:
Probieren Sie es online!
quelle
4
von (den ASCII-Codes von)'67$f}xiw'
ergibt die ASCII-Codes von'23 bytes'
. Die Verkettung mit der leeren Zeichenfolge''
konvertiert dann ASCII-Codes in ZeichenPetit Computer BASIC, 11 Bytes
Die Verwendung eines Kommas in einer Druckanweisung bewegt den Cursor zum nächsten Vielfachen der aktuellen Tabulatorgröße. In SmileBASIC ist dies standardmäßig 4, sodass hier
11 bytes
2 Leerzeichen ausgegeben werden und PTC BASIC stattdessen 3 verwendet, sodass die Ausgabe den richtigen Abstand aufweist.quelle
APL (Dyalog Unicode) , 12 Byte
Volles Programm, das implizit auf STDOUT druckt.
Probieren Sie es online!
,⍨
is hängt den String an das Ergebnis der Multiplikation an. In der Standardanzeige von APL für gemischte Datentypen wird ein Leerzeichen zwischen einer Zahl und dem nachfolgenden Text eingefügt.quelle
Brain-Flak , 100 Bytes
Probieren Sie es online!
Gibt den
bytes
Part in Großbuchstaben aus. Jemand, der mit Brain-Flak vertraut ist, ist vielleicht((<>))
am Anfang wirklich verwirrt , aber seien Sie versichert, er ist nur da, um die Stapelhöhe nilad ([]
) zu missbrauchen, und keines der von ihm produzierten0
s wird gedruckt.quelle
Haskell , 26 Bytes
Probieren Sie es online!
29 Bytes
Probieren Sie es online!
quelle
$
stattdessen ein verwenden.Leerzeichen , 112 Bytes
Nur weil es noch niemand gemacht hat:
Probieren Sie es online!
Gibt "BYTES" in Großbuchstaben aus, da Großbuchstaben kürzere binäre ASCII-Codes haben. Die Befehle im Programm sind in meiner eigenen sichtbaren Notation:
quelle
Java 5 oder 6, 44 Bytes (volles Programm)
Keine TIO-Verknüpfung, da Java 5/6 alt ist. In Java 5/6 war es möglich, eine Enumeration mit Code anstelle der obligatorischen
main
Methode zu haben, wodurch sie für vollständige Programmherausforderungen kürzer wurde.Es können auch Fehler mit
java.lang.NoSuchMethodError: main\nException in thread "main"
in STDERR nach dem Drucken in STDOUT hinzugefügt werden (und die Oktalzahlen müssen aktualisiert werden), um den Fehler zu vermeiden. Dies ist laut Meta in Ordnung (wenn die Abfrage zusätzliche Fehler in STDERR nicht zugelassen hätteSystem.exit(0);
).Vorgeschlagen von @ OlivierGrégoire (und seinem relevanten Java-Tipp ).
Java 8+, 74 Bytes (volles Programm)
Probieren Sie es online aus.
Java 8+,
1615 Bytes (Lambda-Funktion)-1 Byte danke an @ OliverGégoire .
Probieren Sie es online aus.
quelle
37*2
enthält ein7
, ist also nicht gültig. Ihre alternative Lösung ist jedoch in Ordnung.v->0xE+"bytes"
oderv->0xF+" bytes"
. Kann nicht testen, sollte aber trotzdem funktionieren. Nichts sagt, dass die Kerbe und die "Bytes" getrennt werden müssen.FerNANDo , 79 Bytes
Probieren Sie es online!
quelle
Applescript, 15 Bytes
Ja, ich gehe dorthin.
quelle
Your source code can not include any of the digits from your byte count
”
liege , aber kein Multibyte-Zeichen (3 Bytes in Unicode, wenn ich mich richtig erinnere), also mehr als 11 Bytes?> <>, 13 Bytes
Probieren Sie es online!
quelle
Batch, 32 Bytes
COMSPEC
Das ist normalerweise%WINDIR%\system32\cmd.exe
so, dass ich die Teilzeichenfolge von 10 bis 8 Zeichen am Ende extrahiere. Alte selbstreferenzierende 16-Byte-Version:Glücklicherweise war die Byteanzahl kein Vielfaches von 10.
quelle
JavaScript,
16-15Bytesquelle
_=>5*3+' bytes'
5
in diesem Fall eine ..7Zip -
9014 BytesHex-Dump:
Benutzen:
in eine Quelldatei mit dem Namen "any" speichern.
Führen Sie den Compiler über die Befehlszeile aus:
7z e [source name]
quelle