źródło: Dilbert, 8 września 1992 r
Mam nadzieję, że dodam nowy zwrot do klasycznego „Hello World!” program.
Kod programu, który wyświetla Hello World!
bez:
- Literały łańcuchowe / znakowe
- Liczby (dowolna baza)
- Wbudowane funkcje zwracające „Hello World!”
- Literały RegEx
Z wyjątkiem „O” † i 0.
† „O” jest wielkie, „o” jest niedopuszczalne.
code-golf
hello-world
restricted-source
zzzzBov
źródło
źródło
"O"*
oznacza to, że mogą mieć dosłowny ciąg znaków z dowolną liczbą O, w tym zerem. Nie sądzę, żeby taka była intencja. Proszę o wyjaśnienie.Odpowiedzi:
Windows PowerShell, zdecydowanie za dużo
Tak, w rzeczy samej, w czasach, gdy musieliśmy napisać „Witaj świecie” używając (prawie wyłącznie) zer…
Mówiąc poważniej:
Windows PowerShell, 25
Brak dosłownego ciągu znaków.
Hello World!
Tam właśnie dzieje się analizowany jako łańcuch od PowerShell jest w trybie przetwarzania argumentów tam.źródło
C, 327 znaków
O dziwo, nie traci swojego piękna po obróbce wstępnej:
źródło
BrainFuck, 102
111znakówSpełnia wszystkie zasady.
Zasługa Daniela Cristofani .
źródło
0 and/or "O" must be used
. To trochę wredne dla BrainFuck i gry w golfa, ale nie mają trudności z tym wyzwaniem.C, 182 bajty
źródło
Program C - 45
(oszukiwanie)
Leksykalnie nie używa żadnych literałów łańcuchowych ani literałów regularnych. Wykorzystuje funkcję rygoryzacji preprocesora C.
s(x)
to makro, które zamienia argument w ciąg znaków.źródło
Haskell - 143 znaki
och, to było wełniane!
Bez liczb, bez operacji numerycznych, zmieniono nazwy zmiennych dla rozrywki.
Niektóre ekspozycje mogą być ładne:
o%y
,o&y
Io!y
każda ma zastosowanie funkcjio
doy
różnych czasach: 3, 9, i 29 godzinach odpowiednio. 29?!?! Tak, 29!r
iw
są następnymi i poprzednimi znakami, które po zastosowaniu powyższych funkcji wyższego rzędu można uzyskać, aby uzyskać wszystkie potrzebne znaki'O'
.Potrzebna sekwencja skoków to:
$
, przemianowany#
na!
dla Hugs.źródło
r=succ
iw=pred
ucieleśnienie tego, jak Hugs implementuje ograniczenie monomorfizmu. Zmiana nar x=succ x
iw x=pred x
sprawia, że działa (koszt 4 znaków). To wydaje się być problemem w Uściskach.Unary ,
10 1971137672766964589547169964037018563746793726105983919528073581559828 bajtówDziwi mnie, że nikt tego jeszcze nie zrobił ...
Publikowanie tutaj jest za długie, ale to 1137672766964589547169964037018563746793726105983919528073581559828 .
Lub łatwiej odczytać: ~ 10 67 zer.
Dzięki @dzaima za oszczędność 10 197 bajtów
źródło
Mathematica 12 znaków
Tylko symbole, bez ciągów znaków.
The! jest operatorem silnia, ale ponieważ symbole Hello i Świat są niezdefiniowane, zwraca dane wejściowe bez zmian.
Jeśli nieco zmodyfikujemy program:
Następnie drukuje
12
(2 * 3!)źródło
Zestaw i386 (Linux, składnia gcc),
440442435Dzisiaj jest mój dzień zgromadzeń, a potem będę miał dość czasu.
Pozwoliłem sobie na numer 128, patrz poniżej program do dyskusji dlaczego.Nic nadzwyczajnego: po prostu koduję „Hello World!” jako kody montażowe, w których ma to sens bez stałych numerycznych, a resztę wypełniają arytmetyką.(montuj z
gcc -nostartfiles hello.S -o hello
, prawdopodobnie w-m32
zależności od łuku)Dlaczego tolerancja dla 128? Potrzebuję wywołań systemowych, aby cokolwiek pokazać; Połączenia systemowe w systemie Linux są wykonywane w INT 80h (128 miejsc po przecinku); jedyny format operandu dla INT jest natychmiastowy, więc nie ma tam nic innego niż stałą (do kodu). I mógł (po tym, jak dostać trzeźwy) próbują wyrazić jako funkcję innych stałych symbolicznych w kodzie, prawdopodobnie n , ale coraz bardzo nudny za nie wiele korzyści. Przeczytałem ograniczenie liczbowe jako sposób na zapobieganie kodowaniu ASCII, i zdecydowanie nie to robię tutaj, więc czuję się wystarczająco niewinny, aby to zgłosić. (FWIW, próbowałem również samodostosowującego się kodu, ale ten działał błędnie)Teraz nie ma już 128. Kod jest czysty!mov
z makrami CPP; wyeliminował pozostałe 128.źródło
JavaScript - 305
Trochę długi, ale podoba mi się zastosowana metoda.
źródło
OO
,OOO
ale oczywiście, że stałaby się dłużej.C # (131 znaków)
141 zwęgla142 znakówCzytelny:
źródło
enum X{Hello,World,A,B=A<<A<<A}void Main(){var c=(char)X.B;(X.Hello.ToString()+c+++X.World+c).Dump();}
.ToString()
->+""
oszczędza niektóre cahryJavaScript, 88
99
Ogromne podziękowania dla @Timwi za sugestie
usunięto operator trójskładnikowy:
103
aliasowane
String.fromCharCode
117
Przełączony jeśli-inny na operatora trójskładnikowego
125
Zachowuję
"O"
sprawiedliwość, aby mieć „O” w programie.133
źródło
GolfScript, 63 znaki
Co, jeszcze nie ma wpisu w GolfScript?
Ten używa pojedynczego literału liczbowego
0
i zmiennej o nazwieO
(która służy do przechowywania liczby3
). Cała reszta to arytmetyka i manipulacja stosami. CiągHello World!
składa się z kodów ASCII, znak po znaku.Oto jak to działa:
źródło
Brainfuck, 111 bajtów
Algorytm wyjaśniony
Dłuższa wersja bez pętli, 389 bajtów:
źródło
Lua
1449786 znakówInne podejście, oparte na fakcie, że klucze tabeli są również ciągami, oraz na tym, że #Hello == #World == 32 == string.byte '\ n'
Rozwiązanie 145 znaków
Czy kodowanie bajtów w delcie, a następnie kilka liczb pierwotnych itp. Itd. :)
Wersja golfowa:
Skomentowano:
Edycja: Zmieniłem wiele ciągów O i znalazłem więcej optymalizacji.
źródło
Python (
126130)źródło
''
jest niedozwolona.[:0]
.J, 250
Miałem z tym całkiem za dużo zabawy i nauczyłem się trochę więcej J, aby uruchomić. Ponadto,
ooo ooo ooo
może być najgłupsza kod, jaki kiedykolwiek napisano.źródło
QR z półblokami
(169)121 znakówZ kodem QR za pomocą znaków UTF-8 Półbloki:
Niestety, nie będzie to ładnie się renderować. Jest mały fragment z odpowiednim arkuszem stylów, ale… Nie! Językiem tutaj przedstawionym nie jest HTML! Językiem tutaj przedstawionym jest kod QR ! (HTML i CSS są tutaj używane tylko do obejścia błędu prezentacji!)
Pokaż fragment kodu
QR z półblokami (169)
Idealnie może to wyglądać następująco:
źródło
zbar
systemie Linux. (przykład:xwd | xwdtopnm | zbarimg /dev/stdin
)Code golf!
znak nie jest dosłowny?postscript
,svg
czy innych języków prezentacyjnych już używany tam !? W każdym razie sposób na kodowanie to język ... Myślę!Scala (
357423361 znaków)Niestety nie jest to najkrótsza odpowiedź, ale liczenie na uzyskanie premii za najczęściej używane
'O'
i'0'
Poprzednio:
Stara (nielegalna) wersja:
źródło
""
) i ciągi znaków / literały znaków zawierające znak zero ('0'
) są niedozwolone. Tylko ciąg"O"
( duża litera O) i liczba0
to.C (lub C ++) (segment ciała: 49) (oszukiwanie)
podczas kompilacji, kompiluj do pliku binarnego o nazwie
Hello\ World\!
, kod jest następujący:strrchr
Segment jest wymagane, aby usunąć pełną ścieżkę w przypadku gdy nazwa programu przekazany zawiera pełną ścieżkę, również żadne argumenty muszą być przekazywane w ..Typowa linia kompilacji może być:
gcc -o Hello\ World\! foo.c
źródło
C ++, 141,
146Po raz pierwszy wypróbowania jednego z nich, prawdopodobnie można go jeszcze trochę poprawić:
EDYTOWAĆ:
Ukradłem sztuczkę dzielącą od innego postu, nie mogę uwierzyć, że o tym nie pomyślałem :(
źródło
std::
itp.Haskell - 146
Uznałem, że dopasowanie wzoru dałoby Haskellowi ogromną nogę, szczególnie dlatego, że możesz zainicjować moc dwóch takich postaci:
Jednak, jak widać w odpowiedzi Haskell MtnViewMarka (która, nawiasem mówiąc, zasługuje na wiele pozytywnych opinii) i innych odpowiedziach, lepszą kompresję można osiągnąć, używając więcej niż tylko
+
i-
.źródło
Clojure - 46 znaków
Zauważ, że
Hello
iWorld!
są symbolami, a nie literałami jakiegokolwiek rodzaju.źródło
C ++
źródło
100
Narusza zasadę o liczbach. Proszę zamienić na coś bardziej zabawnego.Line 7: error: ISO C++ forbids declaration of 'main' with no type
int
g ++PHP - 49 znaków
Dziennik zmian :
źródło
<?$a=-~-~-~0;echo Hello.chr($a.$a-1).World.chr($a.$a);
działa, ale to 54 znaki.1
tam. Tam idę łamać własne zasady ...<?$a=-~-~-~0;echo Hello,chr($a.~-$a),World,chr($a.$a);
powinienem był użyć, wciąż 54 znaków.Python, 106
źródło
Perl, 186 bajtów
Każdy znak jest drukowany za pomocą numeru porządkowego, który jest długością tablicy. Konstrukcja tablic jest zoptymalizowana poprzez binarną reprezentację liczb znaków.
Nie golfowany:
źródło
Java 389 znaków
zauważyłem niepotrzebną deklarację
Historia jest w historii edycji, teraz można odczytać oryginalną wersję bez golfa:
źródło
Perl 6 , 199 bajtów
(nowe wiersze są dodawane w celu zmniejszenia szerokości, ale są niepotrzebne, więc nie są liczone)
Hello World!
jest zakodowany jako lista list potęg 2 z każdej litery.Jest dokładnie jedno miejsce, w którym mam literał,
0
który jest używany do czegokolwiek innego niż0
. Służy do tworzenia listy jednoelementowej, która jest natychmiast zamieniana na liczbę1
za pomocą operatora prefiksu numerycznego (+[0]
).źródło
JavaScript 662 znaków
Co powiesz na nadużywanie literałów tablicowych tylko po to, by mieć jednolitą bazę. Zaletą tego programu jest nieużywanie
0
.źródło
0
. CoO_O=0;
?O_O=[].length
można zapisać jakoO_O=false
zmniejszające go o 4.