Zadanie:
Utwórz zaciemniony program, który drukuje Hello World!
(dokładnie tak). Twój program może nie zawierać żadnych ciągów.
Zasady:
- Możesz użyć dowolnego języka programowania, który ci się podoba.
- Zrób to tak zaciemnione, jak to możliwe
- To konkurs popularności , więc wygrywa odpowiedź z największą popularnością.
Uwaga:
To nie jest duplikat tego pytania . Ten był golfem kodowanym i miał inne zasady.
:)
/[dehlorw01]/
. Oceniano także długość. W tym przypadku po prostu nie wymaga użycia ciągów (i prawdopodobnie niechar[][]
, więdnięcia). Długość nie jest liczona, ale kreatywność jest głównym czynnikiem decydującym, a zatem tagiem popularności .Odpowiedzi:
Python 2
Grałem z tym wczoraj, więc:
Oto bardziej czytelna wersja: http://codepad.org/UzSmoxF2
Uwagi:
Jedna linia, pojedyncze wyrażenie (tj. Brak instrukcji print).
Bez ciągów, bez ints; tylko funkcje, dostęp do atrybutów, listy, krotki, podstawowa matematyka, jedna
True
i jedna gwiazda-argumenty.Minimalne zużycie wbudowane (
__import__
,getattr
ichr
raz w każdej).Ładowność można łatwo zmienić. Oto program, który napisałem, aby go wygenerować.
Edycja: Napisałem dość istotne wyjaśnienie, jak to działa na moim blogu .
źródło
JavaScript
Po prostu uruchom to w konsoli przeglądarki (np. W Firebug lub w Chrome Dev Tools).
źródło
do
Powitanie multiplikatywne:
źródło
PHP
Przetłumaczyłem to na jedno stwierdzenie, które moim zdaniem znacznie utrudnia rozszyfrowanie. Ta wersja używa tylko 13 unikalnych znaków.
Orginalna wersja
14 unikalnych postaci. Mógłbym stworzyć skrypt do ich wygenerowania i nazwać go „PHPFuck”, ale nie sądzę, aby był bardzo przydatny.
Jak to działa
źródło
/H/
i/W/
w nim.PHP
Oto prosty skrypt PHP, który wyświetla
Hello World!
:Kliknij tutaj, aby zobaczyć wersję demonstracyjną.
źródło
;)
Biała przestrzeń
Wikipedia: Whitespace (język programowania)
Interpreter online do testowania odpowiedzi
Program wypycha kody znaków ASCII poprzez następujące kroki (zaczerpnięte z paska bocznego debugowania interpretera):
źródło
Bash (pod Linuksem)
Mam nadzieję, że twoje skrypty powłoki nie wyglądają tak:
attr
plik jest pierwszym plikiem/proc/$PID
z 4-znakową nazwą plikuSprawdź, czy możesz dostrzec ukryte
eval
.źródło
${__[${____}]}${__[${__________}]}${__[${_______}]}${__[${___}${____}]} -${__[${____}]}
(echo -e
) i zastąpiona!
przez\\${_________}${____}${___}
\\${_________}$[${______}${____}#${_____[${___________}+${__________}]}]
zrób też wykrzyknik ;-)_________
byłby ustawiony na0
(co by się stało, gdyby skrypt byłsource
zamiast d po błędzie?).:
polecenie, aby usunąć wszystkie poprzednie błędy zgłaszane w$?
.GolfScript
Utworzenie i debugowanie tego było dość trudne. Nie zawiera ciągów znaków, tylko znaki.
Wyprowadza:
Przetestuj online
Wyjaśnienie
Jak to działa:
[' '(..4/++]
' '(
przekształca przestrzeń do jego kodu ASCII:32
...
duplikuje się32
dwukrotnie. Teraz masz trzy razy32
.4/
dzieli górę32
przez 4. Teraz masz dwa razy32
i raz8
.++
dodaje32
,32
i8
. Otrzymasz72
, który jest kodem ASCIIH
.[' '(3*)))))]
' '(
konwertuje przestrzeń na32
.3*
mnoży32
się3
:96
)))))
wzrasta96
z 5, otrzymujesz101
, co jest kodem ASCIIe
.[6`(2*.]
6`(
podaje kod ASCII znaku6
:54
2*
mnoży to przez 2, otrzymujesz108
, który jest kodem ASCIIl
..
duplikujel
['1'..++~]
'1'..
kładzie znak1
na stos i duplikuje go dwukrotnie.++
konkatenuje trzy znaki i zwraca ciąg znaków111
~
konwertuje go na liczbę całkowitą111
, która jest kodem ASCIIo
[8 2?2/]
8 2?
oblicza 8 2 , dostajesz64
2/
dzieli się przez 2, otrzymujesz32
, który jest kodem ASCII dla spacji.[' '(4/.(`\`\+~]
' '(
konwertuje przestrzeń na32
.4/.
dzieli to przez 4, rozumiesz8
. W.
duplikaty IT.(`
zmniejsza drugi8
i konwertuje go na ciąg.\
zamienia dwa górne elementy.8
Staje górny element.`
konwertuje8
ciąg na.\
zamienia dwa górne elementy.7
Staje górny element.+
łączy dwa ciągi. Dostajesz87
(jako ciąg).~
konwertuje ciąg87
na liczbę całkowitą87
, która jest kodem ASCIIW
.['1'.+~2?10-]
'1'.
umieszcza znak1
na stosie i kopiuje go.+~
łączy dwa znaki w łańcuch11
i konwertuje go na liczbę całkowitą.2?
oblicza 11 2 , dostajesz121
.10-
zmniejsza się121
z 10, otrzymasz kod ASCII dlao
:111
.[13(1)?8((0)))))*-]
13(
kładzie12
na stosie.1)
kładzie2
na stosie.?
oblicza 12 2 , dostajesz144
.8((
kładzie6
na stosie.0)))))
kładzie5
na stosie.*
mnoży się6
i5
dostajesz30
.-
odejmuje144
się30
, masz114
, który jest kodem ASCIIr
[6`(1)*]
6`(
konwertuje6
na char i pobiera kod ASCII:54
1)*
mnoży się54
z2
, dostajesz108
, kod ASCII zl
['('(4/2?]
'('(
konwertuje(
do jego kodu ASCII40
.4/
dzieli40
przez4
, rozumiesz10
.2?
oblicza 10 2 , otrzymujesz100
, który jest kodem ASCIId
[' '()]
' '(
konwertuje przestrzeń na kod ASCII:32
)
zwiększa32
, otrzymujesz33
, który jest kodem ASCII!
+++++++++++
łączy wszystkie kody ASCII w jeden ciąg.źródło
Brainf ***
Nie jestem pewien, czy to naprawdę liczy się jako zaciemnione, ale nigdy nie używa więcej niż czterech symboli plus lub minus z rzędu. Więc to jest to.
źródło
Matematyka
Prosta algebra I matematyka.
źródło
FromCharacterCode
przełamuje wszelkie intrygi ...FromCharacterCode
jest teraz zaciemniony. Tak jestCoefficientList
.do
Meta-zaciemniony. Uruchomienie tego przez preprocesor zapewnia:
Wynik:
Edycja: dodano podświetlanie składni dla przejrzystości. :-P
źródło
u *l=x;
ifree(l);
daje mi ten sam wynik.szałwia
Wyjaśnienie:
11382954456.digits(42)
konwertuje 11382954456 na bazę 42 i podaje tablicę cyfr, czyli[6, 1, 0, 5, 4, 3, 2]
Tak więc
sum
faktycznie daje sumę 1 + 2 + 4 + ... + 32 + 64, czyli 127Następnie
5105882569598991528047304.digits(...)
konwertuje liczbę na bazę 128, co daje listę[72, 101, 108, 108, 111, 32, 87, 111, 114, 108, 100, 33]
I to są kody ASCII dla łańcucha do wydrukowania.
źródło
JavaScript (28187 znaków)
Prawdopodobnie nie jest to najkrótszy sposób na przywitanie się z tym światem.
Wygenerowano z JSFuck
źródło
DO:
Wyjścia:
Hello World!
źródło
Malbolge
lub
Nie mam pojęcia, jak to działa.
Źródło: http://en.wikipedia.org/wiki/Malbolge#.22Hello_World.21.22_in_Malbolge
źródło
Jawa
Oto jest Czy rozumiesz, jak to działa?
Ostrzeżenie: bardzo niestabilne. Może spontanicznie pęknąć w przyszłości.
źródło
;)
while((crazy = wtf.read()) != -1) stoned.write(crazy);
xDBefunge
Kod z napisem „Witaj, świecie!”:
Kod z napisem „Hello World!”:
źródło
Befunge 98 - 7610 znaków
Na podstawie mojej odpowiedzi tutaj: https://codegolf.stackexchange.com/a/15736/9498
Jako bonus, ta odpowiedź nie używa żadnych liczb i nie zawiera zbędnych znaków (to znaczy nie ma kombinacji znaków, które można by usunąć, aby uzyskać ten sam wynik).
Wypróbuj go tutaj (kod pasty, zastąpić każde wystąpienie
'/'[
z"/["
): http://www.quirkster.com/iano/js/befunge.htmlJak to działa:
Dodatkowy bonus: ten post jest tak długi, że zajmuje około 1 sekundy, zanim stackexchange rozpozna zmiany w pisaniu tego postu.
źródło
Brainf ** k
To jest zaciemnione, a jednak nie może być prostsze.
Ponieważ kiedy przyjrzysz się uważnie:
źródło
JavaScript
Bez literałów liczbowych, bez literałów łańcuchowych i tylko jedna funkcja (nie w tym
console.log
)!Demonstracja tutaj .
źródło
[]
jest dosłowny?No number literals
, a ja pominąłem numer. Jeśli chcesz, możesz użyćArray()
zamiast tego. To nie byłoby dosłowne. Sprawiłoby to, że byłoby to bardziej mylące. Alternatywnie możesz użyć+false
do+[]
. Lub nawetArray()-Array()
.Python 2.6+
Bez ciągów, po prostu prosta funkcja wielomianowa .
źródło
Ten język programowania
Czy potrafisz zgadnąć, co to robi?
Być może będziesz musiał zejść głębiej do króliczej nory, aby się dowiedzieć.
ZASTRZEŻENIE: Język programowania jest nowszy niż wyzwanie.
źródło
do
Komentarze mają na celu wprowadzenie w błąd niedoinformowanych czytelników.
Stałe są tak skonstruowane, że ich reprezentacja w pamięci (dla systemów little-endian) jest taka sama jak ciąg znaków
"Hello World!"
. Następnie tablica (rozpada się na wskaźnik) jest przekazywana doputs
, gdzieputs
ślepo traktuje ją jako achar*
i drukuje wszystko, aż trafiNUL
(co jest zakodowane w ostatnim numerze).Kod kompiluje się (z ostrzeżeniami) i drukuje oczekiwane dane wyjściowe w gcc 4.7.0, Windows 7 32-bit.
źródło
Jawa
Przetestuj tutaj.
Wiem, że kiepskie jest używanie znaków zamiast ciągów znaków. Dziwne, że działa poprawnie. Czyż nie
źródło
a[]
.C (szczerze mówiąc, preprocesor 90% C):
Tylko z gcc lub innym kompilatorem obsługującym
__COUNTER__
makro.źródło
(Wiem, że to nie jest naprawdę dziwne .)
dc
Wynik:
źródło
dc<<<5735816763073005734600101863690P
DO#
Bez literałów łańcuchowych lub literowych, chociaż używane są funkcje łańcuchowe . Zaciemnianie za pomocą zgnilizny 13.
źródło
UryybJbeyq
wyliczenia i albo zwiększa indeks której litery należy pobrać z nazwy, albo resetuje indeks, w zależności od długości nazwy.do
Bez ciągów, bez tablic, bez znaków, bardzo mało oczywistych „przechowujących dane dużych stałych”.
źródło
> <> (Ryby)
Zrobiłem mały labirynt dla wskaźnika instrukcji w> <>
Online> <> tłumacz tutaj
źródło
C ++
Wynik
źródło