Aufgabe:
Erstellen Sie ein verschleiertes Programm, das Hello World!
(genau so) gedruckt wird . Ihr Programm enthält möglicherweise keine Zeichenfolgen.
Regeln:
- Sie können eine beliebige Programmiersprache verwenden.
- Mach es so verschleiert wie möglich
- Dies ist ein Beliebtheitswettbewerb , daher gewinnt die Antwort mit den meisten positiven Stimmen.
Hinweis:
Dies ist kein Duplikat dieser Frage . Das hier war Code-Golf und es gab andere Regeln.
popularity-contest
obfuscation
hello-world
Der Arzt
quelle
quelle
:)
/[dehlorw01]/
. Auch die Länge wurde benotet. In diesem Fall müssen nur keine Zeichenfolgen verwendet werden (und wahrscheinlich auch keinechar[][]
, welken). Die Länge wird nicht gezählt, aber die Kreativität ist der entscheidende Faktor und somit das Schlagwort des Beliebtheitswettbewerbs .Antworten:
Python 2
Ich habe gestern damit gespielt, also:
Hier ist eine besser lesbare Version: http://codepad.org/UzSmoxF2
Anmerkungen:
Eine Zeile, ein Ausdruck (dh keine Druckanweisung).
Keine Schnüre, keine Ints; Nur Funktionen, Attributzugriff, Listen, Tupel, Grundlegende Mathematik, ein
True
und ein Sternchen.Minimal builtin Nutzung (
__import__
,getattr
undchr
je einmal).Die Nutzlast kann leicht geändert werden. Hier ist das Programm, das ich geschrieben habe, um es zu generieren.
Edit: Ich habe in meinem Blog eine ziemlich ausführliche Erklärung geschrieben, wie das funktioniert .
quelle
JavaScript
Führen Sie dies einfach in der Browserkonsole aus (z. B. in Firebug oder in Chrome Dev Tools).
quelle
C
Eine multiplikative Anrede:
quelle
PHP
Ich habe dies in eine einzige Aussage übersetzt, was meiner Meinung nach die Entschlüsselung erheblich erschwert. Diese Version verwendet nur 13 eindeutige Zeichen.
Originalfassung
14 einzigartige Charaktere. Ich könnte ein Skript erstellen, um diese zu generieren und es als "PHPFuck" zu bezeichnen, aber ich denke nicht, dass es sehr nützlich wäre.
Wie es funktioniert
quelle
/H/
und/W/
in ihm hat.PHP
Hier ist ein einfaches PHP-Skript, das ausgibt
Hello World!
:Klicken Sie hier für die Demo.
quelle
;)
Leerzeichen
Wikipedia: Whitespace (Programmiersprache)
Online-Dolmetscher zur Testantwort
Das Programm führt die ASCII-Zeichencodes durch die folgenden Schritte (aus der Interpreter-Debug-Seitenleiste):
quelle
Bash (unter Linux)
Ich hoffe, Ihre Shell-Skripte sehen nicht so aus:
attr
Datei die erste Datei/proc/$PID
mit einem 4-stelligen Dateinamen istSehen Sie, ob Sie das Verborgene erkennen können
eval
.quelle
${__[${____}]}${__[${__________}]}${__[${_______}]}${__[${___}${____}]} -${__[${____}]}
(echo -e
) beginnen und!
durch\\${_________}${____}${___}
\\${_________}$[${______}${____}#${_____[${___________}+${__________}]}]
machen Sie auch ein Ausrufezeichen ;-)_________
dies auf gesetzt ist0
(Was würde passieren, wenn das Skriptsource
nach einem Fehler stattdessen d wäre ?).:
Befehl aus, um alle zuvor in gemeldeten Fehlerzustände zu löschen$?
.GolfScript
Es war eine ziemliche Herausforderung, dies zu erstellen und zu debuggen. Es enthält keine Zeichenfolgen, nur Zeichen.
Es gibt aus:
Online testen
Erläuterung
Wie das funktioniert:
[' '(..4/++]
' '(
wandelt den Raum , um seinen ASCII - Code:32
...
dupliziert32
zweimal. Jetzt hast du dreimal32
.4/
teilt die Spitze32
durch 4. Jetzt hast du zweimal32
und einmal8
.++
das summiert sich32
,32
und8
. Du bekommst72
, wofür ist der ASCII-CodeH
.[' '(3*)))))]
' '(
wandelt das Leerzeichen in32
.3*
multipliziert das32
mit3
:96
)))))
steigt96
mit 5 an, bekommt man101
, wofür der ASCII-Code stehte
.[6`(2*.]
6`(
gibt den ASCII-Code des Zeichens an6
:54
2*
multipliziert man es mit 2, so erhält man108
, wofür der ASCII-Code stehtl
..
dupliziert diel
['1'..++~]
'1'..
legt das Zeichen1
auf den Stapel und dupliziert es zweimal.++
verkettet die drei Zeichen und gibt den String zurück111
~
konvertiert es in die Ganzzahl111
, die den ASCII-Code für isto
[8 2?2/]
8 2?
berechnet 8 2 , die Sie erhalten64
2/
Dividiert man es durch 2, erhält man32
, das ist der ASCII-Code für ein Leerzeichen.[' '(4/.(`\`\+~]
' '(
wandelt das Leerzeichen in32
.4/.
Dividiert man es durch 4, erhält man8
. Das.
dupliziert es.(`
dekrementiert die Sekunde8
und konvertiert sie in einen String.\
vertauscht die beiden obersten Elemente. Das8
wird zum obersten Element.`
konvertiert die8
in eine Zeichenfolge.\
vertauscht die beiden obersten Elemente. Das7
wird zum obersten Element.+
verkettet die beiden Zeichenfolgen. Sie erhalten87
(als Zeichenfolge).~
konvertiert den String87
in die Ganzzahl87
, für die der ASCII-Code angegeben istW
.['1'.+~2?10-]
'1'.
legt das Zeichen1
auf den Stapel und dupliziert es.+~
Verkettet die beiden Zeichen mit der Zeichenfolge11
und konvertiert sie in eine Ganzzahl.2?
berechnet 11 2 , die Sie erhalten121
.10-
nimmt121
mit 10, können Sie den ASCII - Code für bekommeno
:111
.[13(1)?8((0)))))*-]
13(
legt12
auf den stapel.1)
legt2
auf den stapel.?
berechnet 12 2 , die Sie erhalten144
.8((
legt6
auf den stapel.0)))))
legt5
auf den stapel.*
multipliziert6
und5
Sie bekommen30
.-
subtrahiert man144
mit30
, bekommt man114
, wofür der ASCII-Code stehtr
[6`(1)*]
6`(
konvertiert6
in ein Zeichen und erhält seinen ASCII-Code:54
1)*
multipliziert54
mit2
, Sie erhalten108
, den ASCII - Codel
['('(4/2?]
'('(
wandelt(
auf seinen ASCII - Code40
.4/
teilt sich40
durch4
, Sie bekommen10
.2?
berechnet 10 2 ,100
das ist der ASCII-Code fürd
[' '()]
' '(
konvertiert das Leerzeichen in seinen ASCII-Code:32
)
erhöht den Wert32
, den Sie erhalten33
. Dies ist der ASCII-Code für!
+++++++++++
Verkettet alle ASCII-Codes zu einer Zeichenfolge.quelle
Brainf ***
Ich bin nicht sicher, ob dies wirklich als verschleiert gilt, aber es werden nie mehr als vier Plus- oder Minuszeichen in einer Reihe verwendet. Das ist es also.
quelle
Mathematica
Einfache Algebra I math.
quelle
FromCharacterCode
bricht alle Intrigen ...FromCharacterCode
ist jetzt verschleiert. So ist es auchCoefficientList
.C
Meta-verschleiert. Wenn Sie dies über den Präprozessor ausführen, erhalten Sie Folgendes:
Ausgabe:
Bearbeiten: Syntax-Hervorhebung zur besseren Übersicht hinzugefügt. :-P
quelle
u *l=x;
undfree(l);
gibt mir das gleiche Ergebnis.Salbei
Erläuterung:
11382954456.digits(42)
konvertiert 11382954456 in Basis 42 und gibt ein Array seiner Ziffern an, nämlich[6, 1, 0, 5, 4, 3, 2]
Das
sum
ergibt also tatsächlich die Summe von 1 + 2 + 4 + ... + 32 + 64, also 127Dann
5105882569598991528047304.digits(...)
wandelt die Zahl in der Basis 128, die die Liste gibt[72, 101, 108, 108, 111, 32, 87, 111, 114, 108, 100, 33]
Und dies sind die ASCII-Codes für die zu druckende Zeichenfolge.
quelle
Javascript (28187 Zeichen)
Wahrscheinlich nicht der kürzeste Weg, um diese Welt zu begrüßen.
Mit JSFuck generiert
quelle
C:
Ausgänge:
Hello World!
quelle
Malbolge
oder
Ich habe keine Ahnung, wie das funktioniert.
Quelle: http://de.wikipedia.org/wiki/Malbolge#.22Hello_World.21.22_in_Malbolge
quelle
Java
Hier ist es. Kannst du verstehen, wie es funktioniert?
Warnung: Sehr flüchtig. Kann in Zukunft spontan abbrechen.
quelle
;)
while((crazy = wtf.read()) != -1) stoned.write(crazy);
xDBefunge
Code mit der Aufschrift "Hallo Welt!":
Code mit der Aufschrift "Hallo Welt!":
quelle
Befunge 98 - 7610 Zeichen
Basierend auf meiner Antwort hier: https://codegolf.stackexchange.com/a/15736/9498
Als Bonus verwendet diese Antwort keine Zahlen und enthält keine redundanten Zeichen (dh, es gibt keine Zeichenkombination, die entfernt werden könnte, sodass dieselbe Ausgabe erfolgt).
Probieren Sie es hier aus (fügen Sie Code ein, ersetzen Sie jede Instanz
'/'[
durch"/["
): http://www.quirkster.com/iano/js/befunge.htmlWie es funktioniert:
Zusätzlicher Bonus: Dieser Beitrag ist so lang, dass es ca. 1 Sekunde dauert, bis stackexchange die Änderungen beim Schreiben dieses Beitrags erkennt.
quelle
Brainf ** k
Es ist verschleiert und doch könnte es nicht einfacher sein.
Denn wenn Sie genau hinsehen:
quelle
JavaScript
Keine Zahlenliterale, keine Stringliterale und nur eine Funktion (ohne
console.log
)!Demonstration hier .
quelle
[]
ein Wort?No number literals
, und ich habe die Nummer übersprungen. Wenn Sie möchten, können SieArray()
stattdessen verwenden. Das wäre kein wörtliches Wort. Und es würde es verwirrender machen. Alternativ können Sie+false
für die+[]
. Oder sogarArray()-Array()
.Python 2.6+
Keine Zeichenketten, nur eine einfache Polynomfunktion .
quelle
Diese Programmiersprache
Kannst du erraten, was es tut?
Vielleicht musst du tiefer in das Kaninchenloch gehen, um es herauszufinden.
HAFTUNGSAUSSCHLUSS: Programmiersprache ist neuer als Herausforderung.
quelle
C
Die Kommentare sind nur dazu da, uninformierte Leser irrezuführen.
Die Konstanten sind so aufgebaut, dass ihre Darstellung im Speicher (für Little-Endian-Systeme) der Zeichenfolge entspricht
"Hello World!"
. Dann wird das Array (verwandelt sich in einen Zeiger) übergebenputs
, wo esputs
blind als ein behandeltchar*
und alles gedruckt wird, bis es trifftNUL
(was in der letzten Zahl codiert ist).Der Code kompiliert (mit Warnungen) und druckt die erwartete Ausgabe mit gcc 4.7.0, Windows 7 32-Bit.
quelle
Java
Hier testen.
Ich weiß, irgendwie lahm, Zeichen anstelle von Zeichenketten zu verwenden. Komisch, dass es richtig läuft. Ist es nicht
quelle
a[]
.C (ehrlich gesagt, 90% C-Präprozessor):
Nur mit gcc oder einem anderen Compiler, der das
__COUNTER__
Makro unterstützt .quelle
(Ich weiß, es ist nicht wirklich komisch .)
dc
Ausgabe:
quelle
dc<<<5735816763073005734600101863690P
C #
Keine Zeichenfolge oder Zeichenliterale, obwohl String - Funktionen werden verwendet. Verschleierung über rot13.
quelle
UryybJbeyq
Aufzählung und erhöht entweder den Index des zu erfassenden Buchstabens oder setzt den Index zurück, je nachdem, wie lang der Name ist.C
Keine Zeichenketten, keine Arrays, keine Zeichen, sehr wenige offensichtliche "Datenspeicher-Konstanten".
quelle
> <> (Fisch)
Ich habe ein kleines Labyrinth für den Anweisungszeiger in> <> gemacht
Online> <> Dolmetscher hier
quelle
C ++
Ausgabe
quelle