Schreiben Sie ein Programm, das "Hello, World!" Wenn Sie jedoch nur das erste, dritte, fünfte usw. Zeichen Ihres Programms verwenden, sollte das resultierende Programm weiterhin "Hello, World!"
Wenn Ihr Programm ist:
abc
def
Es sollte "Hello, World!" Ausgeben, sollte es aber auch
acdf
Keine Lösungen mit weniger als 2 Zeichen.
code-golf
string
source-layout
hello-world
radiation-hardening
Leo Tenenbaum
quelle
quelle
Antworten:
Python 3 , 61 Bytes
Probieren Sie es online!
Missbrauch der Tatsache, dass
print
es sich um eine Funktion in Python 3 handelt :)Die am wenigsten parteiische Lösung finden Sie hier auf PPCG.
Wird
quelle
[:]
tatsächlich funktioniert: o Schön!Kardinal , 29 Bytes
Probieren Sie es online!
Durch das Entfernen aller anderen Zeichen werden alle Zeilenvorschübe entfernt, was weiterhin zur Folge hat
Hello, World!
:Probieren Sie es online!
Der Grund dafür ist, dass
%
vier Befehlszeiger erstellt werden, die sich in jede der vier Hauptrichtungen bewegen. IPs, die den Quellcode verlassen, werden einfach entfernt. Im ersten Fall verbleibt also nur die nach Süden gehende IP und im zweiten Fall verbleibt nur die nach Osten gehende IP, alle anderen werden einfach verworfen. In beiden Fällen ist das ausgeführte Programm dann gerade"Hello, World!
. Die"
Option wechselt in den Zeichenfolgenmodus, in dem jede Zelle einfach auf STDOUT gedruckt wird. Wir brauchen den String nicht zu terminieren, weil das Verlassen des Quellcodes das Programm immer noch terminiert.Beachten Sie, dass die gleiche Idee auch für Bienenwachs gilt , wenn
*
anstelle von%
und`
anstelle von verwendet wird"
(dies liegt daran, dass Bienenwachs weitgehend von Cardinal inspiriert wurde, jedoch ein hexagonales Gitter verwendet).Probieren Sie es online! (vertikal) | | Probieren Sie es online! (horizontal)
quelle
C 125 Bytes
Probieren Sie es online!
Mit geraden Zeichen entfernt:
Probieren Sie es online!
quelle
Eigentlich 2 Bytes
Erläuterung:
H
schiebt, wie zu erwarten,Hello, World!
auf den Stapel.Das Hauptprogramm (
HH
) trifft auf das ersteH
und schiebtHello, World!
es zum Stapel. Beim zweitenH
Versuch wird jedoch versucht, zwei Argumente zu verwenden (da der Stack zum Pushen leer sein mussHello, World!
), und es tritt ein Fehler auf. Dieser Fehler wird jedoch ignoriert undHello, World!
implizit gedruckt.Das zweite Programm (
H
) wirdHello, World!
einmal gedrückt, und das wird implizit gedruckt.Dies ist ähnlich wie die 2-Byte-Antwort von Fatalize, aber dies "schummelt" nicht wirklich.
Probieren Sie es online!
quelle
H
würde nurHello, World!
einen leeren Stapel verschieben, und wenn der Stapel nicht leer ist, würde er 2 Argumente erwarten, sodass ein Fehler auftritt und Fehler ignoriert werden. Und nein Gibt nicht implizit nur das oberste Element aus.Lua , 89 Bytes
Probieren Sie es online! Wie die Hervorhebung der Syntax zeigt, handelt es sich um einen massiven Missbrauch von Kommentaren.
Wechseln:
Probieren Sie es online!
Und der Einfachheit halber ein Programm, mit dem Sie ein Programm in jede andere Zeichenform konvertieren können: Probieren Sie es online aus!
quelle
HHeelllloo WWoorrlldd!!
ist irgendwie langweilig: PRetina , 39 Bytes
Probieren Sie es online!
Wenn Sie jeden anderen Charakter nehmen, erhalten Sie:
Probieren Sie es online!
Das erste Programm erstellt eine Zeichenfolge mit der duplizierten Begrüßung. Dann wird jedes Zeichenpaar durch das erste Zeichen ersetzt. Es gibt auch eine leere Bühne, die alle leeren Zeichenfolgen durch leere Zeichenfolgen dazwischen ersetzt, die aber nichts bewirkt. Das zweite Programm stimmt nicht mit dem Buchstaben "x" überein, sodass es nach dem Erstellen der Begrüßung nichts ersetzt.
Vielleicht amüsanter, wenn die dritte Stufe geringfügig geändert wird, muss der erste Zeichensatz nicht dieselbe Nachricht sein. Dies könnte zu vielen Lösungen gleicher Länge führen, wie z. B. voll und halbiert .
quelle
Holzkohle , 25 Bytes
Probieren Sie es online!
Wenn Sie die geraden Zeichen entfernen, entfernen Sie nur die Pfeilbefehle, die die Richtung des nächsten Texts angeben und den folgenden Code hinterlassen:
Probieren Sie es online!
Das druckt auch die Begrüßung.
quelle
Haskell , 85 Bytes
Probieren Sie es online!
Jedes zweite Zeichen entfernt:
Probieren Sie es online!
Dabei werden die beiden Kommentarformate in Haskell ausgenutzt:
{- -}
für Inline- oder Mehrzeilenkommentare und--
zum Kommentieren des Restes der Zeile.quelle
Javascript, 67 Bytes
Jeder zweite Buchstabe wird entfernt:
Genau wie bei Laikonis Haskell-Antwort werden hier Kommentare ausgenutzt.
quelle
// * /
habe//**/
(was in Ihrem Fall leider nicht möglich ist, da es sich/**/alert`Hello, World`
um eine ungerade Anzahl von Bytes handelt, anstatt wie in meinem Fall um eine gerade Zahl .Brachylog , 4 Bytes
Probieren Sie es online!
Erläuterung
~w
Schreibt die rechte Variable inSTDOUT
und ignoriert das linke Argument.Ḥ
ist"Hello, World!"
, so druckt diesHello, World!
.Wenn wir nur das erste und dritte Zeichen nehmen, bekommen wir
Ḥw
. In diesem Fall wirdw
die linke Variable geschrieben und die rechte Variable ignoriert, sodass auch gedruckt wirdHello, World!
.2 Bytes
Probieren Sie es online!
Dies ist technisch gesehen eine gültige Antwort, aber dies vereinheitlicht die Ausgabevariable des Programms, anstatt zu drucken.
STDOUT
Ich denke, dass das 4-Byte-Programm eher dem Geist der Herausforderung entspricht.quelle
Haskell, 102 Bytes
Das vollständige Programm:
und mit jedem anderen Zeichen entfernt:
quelle
p u t S t r
und entfernen\"
.x86-Maschinencode, 162 Byte
PROG.COM Downloaden Sie und führen Sie es in MS-DOS- Emulator, DOSBox beispielsweise aus.
nach dem Entfernen von MINI.COM herunterladen
Wie läuft man?
Installieren Sie DOSBox für Ubuntu / Debian
Starte es
In DOSBOX
Wie funktioniert es?
Maschinenoperationscodes repräsentiert Montagesprachanweisungen .
In MS-DOS, um Zeichen zu drucken, werden Sie Register festlegen und Unterbrechung vornehmen. Das AH-Register lautet 0x02, das DL-Register enthält Ihr Zeichen. Der Interrupt-Vektor ist 0x21.
Das winzige Modell der MS-DOS- COM-Datei ist eine gute Wahl, da es keine Header enthält . Es ist auf 64K begrenzt, aber in unserem Fall spielt es keine Rolle.
Um das Programm zu stoppen, verwenden Sie 0x20 Interrupt
Magie
Wenn Sie den Befehl 0xAB opcode mit einem Parameter 0xCD ausführen möchten , schreiben Sie
In PROG.COM
In MINI.COM
Es sind die gleichen Maschinencodes, wenn Sie das BL-Register nicht verwenden .
Generator
Konvertiert eine Textdatei mit hexadezimaler in hexadezimaler Binärdatei
Code-Snippet anzeigen
quelle
Pyth , 31 Bytes
Probieren Sie es online!
Wird
Vielen Dank an @CalculatorFeline, der auf einen Fehler hingewiesen und ein Byte entfernt hat.
quelle
V , 32 Bytes
Beachten Sie, dass
<esc>
es sich um ein einzelnes Zeichen handelt, z0x1b
Probieren Sie es online!
Wenn Sie jedes andere Zeichen entfernen, erhalten Sie:
Probieren Sie es online!
quelle
05AB1E , 29 Bytes
Probieren Sie es online!
Erläuterung
Nachdem wir alle anderen Zeichen entfernt haben, bleibt der Code erhalten
Probieren Sie es online!
Erläuterung
quelle
Mathematica, 62 Bytes
Es kehrt zurück
"0H0e0l0l0o0,0 0W0o0r0l0d0!0" Null P0r0i0n0t0[0]
und wirdHello, World!
als Nebeneffekt gedruckt . Bei Ausführung als Programm (nicht in der REPL) wird der Rückgabewert nicht gedruckt.Nachdem Sie alle anderen Zeichen entfernt haben:
Es kehrt zurück
Null ol! rn[Hlo]
und drucktHello, World!
.quelle
Jelly ,
2625 BytesProbieren Sie es online!
Nach dem Entfernen jedes zweiten Zeichens verbleibt der folgende Code.
Probieren Sie es online!
Wie es funktioniert
quelle
Kubisch v2.1 , 222 Bytes
Probieren Sie es online!
Jeder andere Brief:
Probieren Sie es online!
quelle
CJam , 32 Bytes
Probieren Sie es online!
Wenn Sie jeden anderen Charakter nehmen, erhalten Sie:
Probieren Sie es online!
quelle
Hilfe, WarDoq! 2 Bytes
Probieren Sie es online!
H
drucktHello, World!
,i
ist ein No-Op.Hilfe, WarDoq! kann zwei Zahlen addieren und auf Primzahlen testen, so dass dies als gültige Programmiersprache für diesen Metapost angesehen wird .
quelle
/// 25 Bytes
Probieren Sie es online!
Mit jedem anderen Zeichen entfernt:
quelle
PHP, 53 Bytes
Mit jedem anderen Zeichen entfernt:
quelle
Oktave,
4945 Bytes4 Bytes gespart, da Octave keine eckigen Klammern für die Indizierung benötigt.
Probieren Sie es online!
Und der Reduzierte:
Probieren Sie es online!
Erläuterung:
Der ursprüngliche Code hat die Buchstaben in der Zeichenfolge dupliziert, so dass wir übrig bleiben
Hello, World!
wenn jede Sekunde entfernt wird. Einige Leerzeichen werden hinzugefügt, um sicherzustellen, dass die Klammern und Apostrophe beibehalten werden.Die Indizierung ist wirklich
1:2:end
. Es gibt 27 Zeichen, die wir nicht verwenden könnenend
oder27
müssen, da wir ein Zeichen entfernen müssen, und wir gehen3 ^ 3
stattdessen mit. Wenn wir jedes dritte Zeichen entfernen, wird die Indizierung(:)
(und einige zusätzliche Leerzeichen).(:)
bedeutet "Abflachen und in einen vertikalen Vektor verwandeln" . Also müssen wir es mit transponieren'
. Wir müssen die Zeichenfolge nicht im Originalcode transponieren, aber die doppelte Transponierung funktioniert, sodass die erste Zeichenfolge mit zweimal''
und die zweite nur einmal transponiert wird.quelle
APL (Dyalog) ,
3534 Bytes-1 danke an Martin Ender.
Probieren Sie es online!
'0H0e0l0l0o0,0 0W0o0r0l0d0!0'
die Nachricht mit Nullen als entfernbare Füllzeichen~
außer⍕
formatiert (stringifiziert)0
Nummer NullWenn Sie nur die ungeraden Zeichen übrig lassen, wird dies
'Hello, World!'
.quelle
T-SQL, 75 Byte
Missbrauch ein- und mehrzeiliger Kommentare, inspiriert von der LUA-Version von CalculatorFeline .
Nach dem Entfernen aller geraden Zeichen, von denen einige Zeilenumbrüche sind:
quelle
Javascript, 73 Bytes
Konstruiert eine Zeichenkette
a
mit dem Inhalta0l0e0r0t0`0H0e0l0l0o0,0 0W0o0r0l0d0!0`0/0/
und entfernt dann alle0
zu gebenden Zeichenalert`Hello, World!`//
,eval
d.Nehmen Sie jeden anderen Charakter des Programms gibt
Hello, World
Welche Warnungen verwenden die Syntax von Vorlagenzeichenfolgen auf dieselbe Weise wie die im vollständigen Programm ausgewerteten Warnungen, speichern dann das Ergebnis des Aufrufs ina
und enthalten den aufschlussreichen Kommentar//;vlarpae//,')
.quelle
> <> 47 Bytes
Original:
Jedes zweite Zeichen wird entfernt:
Probieren Sie sie online aus: original , modifiziert
Das ursprüngliche Programm drückt die Zeichen von "Hallo, Welt!" auf den Stapel (in umgekehrter Reihenfolge), der mit Leerzeichen durchsetzt ist, druckt abwechselnd ein Zeichen und löscht eins, bis die Länge des Stapels Null ist. Das zweite Programm macht dasselbe, außer dass die Löschanweisungen
~
weg sind.Wenn es Ihnen nichts ausmacht, mit einem Fehler anzuhalten, können wir ein Blatt aus Martin Enders Kardinalbuch entnehmen : Der geänderte Code lautet
und das Original ist dasselbe, jedoch mit zwischen allen Zeichen eingefügten Zeilenumbrüchen für 39 Bytes. Probieren Sie sie online aus: original , modifiziert .
quelle
,,,, 34 bytes
Beim Entfernen der geradzahligen Zeichen ...
Erläuterung
Mit allen Charakteren:
Ohne die geradzahligen Zeichen:
quelle
Brainfuck, 155 Bytes
Probieren Sie es online!
Jedes zweite Zeichen entfernt:
quelle
Jelly , 32 Bytes
Probieren Sie es online!
-2 Bytes dank der Antwort von @ totallyhuman
Jetzt ist meins ein Trottel>. <
Stimmen Sie auch diesem zu: D
quelle