W wybranym języku napisz program, który dokładnie wypisuje znaki, Hello world!
po których następuje nowa linia. Kod:
- nie powinien używać żadnego znaku więcej niż dwa razy (alfanumeryczny, symbol, białe znaki ... cokolwiek)
- nie powinien używać żadnych zasobów zewnętrznych
- nie powinien używać żadnych danych wejściowych użytkownika
- nie powinien wypisywać niczego innego
Przykład prawidłowego programu w języku Python:
print("He%so world!"%(2*'l'))
Przykład nieprawidłowego programu python (znak „r” jest używany trzy razy):
print("Hel"+chr(108)+'o world!')
Zwycięzcą jest ten, kto ma najwięcej głosów po 14 dniach.
EDYCJA: Wybrano zwycięzcę! Dziękujemy wszystkim za pracę nad tym pytaniem!
Odpowiedzi:
Rubin (1.9+)
Ponieważ jest to konkurs popularności, starajmy się nie używać ŻADNEJ postaci z „Hello world!” wciąż wykorzystując inne postacie maksymalnie dwa razy:
To 40 znaków btw.
Grzmotnąć
A ten wykorzystuje magię Unicode.
Uwagi:
Kod:
Dla tych, którzy nie mają zainstalowanej właściwej czcionki, wygląda to tak:
Oto zrzut heksowy:
Musisz uruchomić go na komputerze, na którym domyślnym zestawem znaków jest utf-8. Próbowałem na OSX10.8 przy użyciu iTerm2 w następującym środowisku:
PHP 5.4
Używa zLib: (niestety używa znaków
e
io
)Hexdump:
+1
Oto kod Ruby 2.0, którego użyłem do testowania duplikatów:
źródło
Hello world!
po których następuje nowa linia”ascii//translit
spowoduje transliterację znaków Unicode na podstawowe ascii. I oczywiście echo doda nowy wiersz, więc ten pasuje do specyfikacji (jeśli nie rozważymy podobieństwa oktetów)Hello World?
zamiastHello World!
Musisz używać bardziej wyrazistych języków.
Chiński,
6 43 znakiUruchamianie google translate na tym produkuje
Hello world!
(dzięki @sreservoir i @Quincunx za aktualizację)
źródło
你好世!
喂世!
kosztem ... no cóż, nic więcej nie jest wydawane.HQ9 +, 1 znak
to proste :)
źródło
print Hello World
pytania są w rzeczywistościwho can submit a HQ9+ answer faster
pytaniami.C, 192 znaki
Ponieważ to nie jest golf, postanowiłem się zabawić i spróbować użyć każdej postaci dokładnie dwa razy (jednocześnie umieszczając jak najmniej w komentarzu, ponieważ to jest nudne). Zdaję sobie sprawę, że nie spisałem się zbyt dobrze, ponieważ mój kod zawiera również mnóstwo nudnych „martwych” kodów (nie w dosłownym sensie, ale w sensie znaków zastępczych używanych tylko w celu spełnienia wymagań). W każdym razie było to zaskakująco trudne (ale zabawne) z ograniczeniem dwóch znaków, więc niestety nie mogłem wymyślić nic bardziej interesującego. To dało mi pomysł na nowy problem ...
(Zaktualizowano w komentarzu @ ugoren).
źródło
.
, używając go do ułamków. Możesz także zadeklarować tablicę i użyć[]
..
; Myślałem tylko o użyciu go do dostępu do struktury. <s> Jeśli chodzi o deklaracje tablicowe, nie mam,
s z powoduprintf
wywołania, a także jestem poza;
s, więc nie jestem pewien, jak mógłbym zadeklarować jedną. </s> Mogę zastąpićATION_
. ..Polecenie Vima (18 naciśnięć klawiszy)
iHe
Esc3al
Escio Wor
Rightd!
EnterNie powtarza żadnego naciśnięcia klawisza więcej niż dwa razy.
To trochę narusza zasadę „Wejście użytkownika”, ponieważ jest to wciąż ten użytkownik, który potrzebuje do wejścia tej sekwencji, ale przypuszczam, że jeśli przechowywać go jako makro lub nnoremap wcześniej byłoby liczyć, ponieważ jesteś po prostu działa bez jawnie robić dowolny wkład, aby tak się stało.
Wymaga
nocompatible
to również ustawienia, które można zaliczyć do korzystania z zasobów zewnętrznych, dlatego podałem kolejną odmianę poniżej:Polecenie Vima (21 naciśnięć klawiszy)
iHe
Esc3al
Escio Wor
Ctrl+[$ad!
EnterTa odmiana nie musi
nocompatible
być ustawiona, chociaż działa około Esctrzy razy, używając Ctrl+[jej na swoim miejscu.źródło
Right
,Esc
orazEnter
, że nie są dosłownie te znaki. Vim zajmuje się naciśnięciami klawiszy, które uważam za równoważne z postaciami na potrzeby tego konkursu (i regułą „nie powtarzaj więcej niż dwa razy”). Używam tylkoi
dwa razy, a<Right>
jeden raz. Co do tegoE
, nigdy go nie używam - ale używam<Esc>
dwa razy i<Enter>
raz.l
sekundy.:set nocompatible
.Right
nie używam vim-y.Piet-- Żadnych postaci!
źródło
Perl, 29 znaków
Ta odpowiedź obejmuje drewniaki z oceną X!
Perl, 23 znaki
Krótsze, ale bez butów porno. :-( Jednak ten sam podstawowy pomysł ...
Perl, 20 znaków
Nudny...
źródło
PowerShell, 20
źródło
Sclipting , 11 znaków
Widziałem ten piękny program HelloWorld na liście programów Hello World firmy esolang .
źródło
Scala:
3429 znakówJestem z siebie dumny z tego:
Naprawdę ciężko mi było pokonać duplikaty „l”, „r”, cudzysłowów i nawiasów. Potem odkryłem starą
printf
funkcję Java , która z radością konwertuje liczby na litery, gdy otrzyma specyfikator%c
formatu.Aktualizacja
MrWonderful zrobił cudowną rzecz, wskazując, że można uratować całą masę znaków, używając ręcznie mojego drugiego „l” w ciągu!
źródło
printf
zawierar
co robiworld
. To samo dotyczy litery,o
która jest używana więcej niż raz. Jest to oparte na mojej interpretacji następującej instrukcji OP: „Przykład niepoprawnego programu python (znak„ r ”jest używany trzy razy):print("Hel"+chr(108)+'o world!')
”chr
Python 3 [38 bajtów]
Nie uważałbym go za
import __hello__
zasób zewnętrzny.źródło
Perl: 34 znaków
Przykładowy przebieg:
(Nie jest to wielka sprawa. Wysłany po to, by przynajmniej raz w życiu użyć
s///
tych fantazyjnych ograniczników.)źródło
PHP, 33 znaki
Uwielbiam, jak wiele PHP wybacza i rozumie!
Zanim został usunięty (lub jeśli nadal tam jest, jestem całkowicie ślepy), zobaczyłem komentarz „No brainf * ck?: D”. Jak wiadomo, rozwiązanie problemu w BrainF * ck jest prawie niemożliwe. Ale udało mi się to zakodować, tylko dla Lulz.
Jeśli nie masz interpretera BF, powyższy kod po prostu wypisuje kod PHP: P
źródło
Hel
nie jest otoczony cudzysłowami. Nigdy też o tym nie słyszałemstr_rot13
..
), umieszczającHel
przed nim<?=
.Hel<?=str_rot13("yb jbe")?>ld!
Fiddle HTML - 21 znaków
źródło
\n
więc powiedziałbym, że się<br>
liczyr
jest powtarzana w rozwiązaniu. Czy źle zinterpretowałem wymagania?Ruby: 27 znaków
Przykładowy przebieg:
Ruby: 25 znaków
(Na podstawie komentarza Vache.)
Ruby: 23 znaki
(Kopia odpowiedzi Powershell Danko Durbić .)
źródło
puts 'He'+'l'*2+'o world!'
jest o jedną postać krótszy!puts"He#{?l*2}o world!"
p
zawiera cytaty w danych wyjściowych. Wolę ściśle przestrzegać wymaganego formatu wyjściowego. Ale masz rację, przestrzeń nie jest potrzebna. Dziękuję Ci.JavaScript, 66 znaków
Zainspirowany przez FireFly, każdy znak używany przez ten kod jest używany dokładnie dwa razy.
źródło
C - 43 znaków
Wynik
Liczy się charakter
źródło
main
itp?i
).JavaScript [37 bajtów]
Zbyt prymitywne, prawda?
źródło
nginx.conf
W akcji:
źródło
set
. Ma teraz tylko 3 spacje, z których każde może być tabulatorem!Emacs Command (15 klawiszy)
Jeśli odpowiedzi tego vima są legalne, to też musi być :)
Żartuję, makro też może się stać :)
Pomijając więcej bzdur, pewnie mogę trochę więcej wycisnąć, ale na razie wydaje się to wystarczająco dobre (ponieważ bije vim).
PS, proszę zignoruj wszystkie moje bzdury (ja (rzadko, ale) też używam vima!).
źródło
Befunge 98
Oto wersja, w której każda postać pojawia się dwa razy.
Pozostawia kupę śmieci na stosie.
Jako bonus, każda postać ma coś z tym zrobione przez IP.
źródło
Malbolge
źródło
Hello, world.
zamiastHello world!\n
:( Wypróbuj online! Imponujące, ale nieważne.Właściwie to nie lubię oszukiwać: P
Pyton
źródło
TypeError
.print("!dlrow os%eH"[::-1]%('l'*2))
działa w obu wersjach (Python2 i Py3K).GolfScript
Zastępuje dwie nowe linie (na szczęście trzecia, potrzebna do zamiany, jest zapewniona przez wbudowane
n
), używając obu rodzajów literału ciągu, aby uniknąć czterokrotnych kopii znaku cudzysłowu. Ponieważl
jest to jedyny znak występujący więcej niż dwa razy w oryginalnym ciągu, nie jest to zbyt trudne.źródło
o
. Reguły mówią, że nie wolno mieć postaci więcej niż dwa razy .Hmm
W C, biorąc pod uwagę te reguły, możemy mieć tylko jedną
#define
(z powodui
in
) i co najwyżej dwie wywołania funkcji LUB definicje ((
i)
).Zakładam, że jest na to tylko jeden sposób (choć prawdopodobnie się mylę):
źródło
puts()
zamiastprintf()
.o
wworld
?GRZMOTNĄĆ
Cred @manatwork
źródło
-e
za pomocą specjalnej$'…'
składni:echo $'Hel\x6c\x6f world!'
.C - 46 znaków
main(){printf("He%clo wor%cd!\x0d",'l',108);}
Wydruki:
źródło
main(){printf("He%clo world!%c",108,10);}
powinien działać i oszczędza ci kilka znaków.Fuga
Z wiki esolang:
I możesz słuchać kodu źródłowego .
źródło
PHP
32 znaki
Zauważ, że nie używam znaku więcej niż dwa razy, ponieważ l! = L
Zauważ również, że pomimo przepełnienia stosu usuwającego go w reprezentacji, po znaku
!
.źródło
XQuery, 19 znaków
źródło