W dowolnym języku programowania, który istniał przed zadaniem tego pytania, napisz program (nie funkcję), który wypisuje znaki, Hello world!
po których następuje nowa linia. Twój program:
- nie należy używać żadnych znaków więcej niż jeden raz (w tym białych znaków)
- powinien używać tylko znaków ASCII
- nie powinien używać żadnych wbudowanych bibliotek
- nie powinien otrzymywać danych wejściowych (użytkownik, plik, nazwa pliku, zmienna systemowa, internet, cokolwiek)
- nie powinien wypisywać niczego innego
Zwycięzcą jest ten, kto ma najwięcej głosów po 14 dniach i przestrzega sześciu zasad.
Szósta zasada mówi, że nie możesz używać H9 +, HQ9 +, HQ9 + B, HQ9 ++, HQ9 + 2D, Hello, Hello +, Hello ++, Hexish, CHIQRSX9 + ani Fugue. Ponadto wszystkie odpowiedzi wymagające implementacji nowszych niż to wyzwanie muszą zostać oznaczone jako niekonkurujące.
Zastrzeżenie: To pytanie zostało wysłane przy założeniu, że Hello world! z ograniczoną liczbą powtórzeń nie spowodował uszkodzenia komputera ani mózgu w trakcie uzyskiwania odpowiedzi.
Odpowiedzi:
Perl 6 (
2928 znaków)To było trochę denerwujące, ale w końcu udało mi się stworzyć program do tego zadania. Dziękujemy wielkiej społeczności # perl6 za pomoc w tym zadaniu. Zajęło mi to dwie godziny, mam nadzieję, że ci się spodoba. Dane wyjściowe są całkowicie zgodne ze specyfikacją, w tym nową linią.
Istnieją cztery znaki zainteresowania.
say
To generuje argument z nową linią na końcu. Nowy wiersz po samym poleceniu jest potrzebny jako zamiennik spacji.
Q[@A`DO world!]
To jest pierwszy ciąg.
Q[]
jest dla surowych ciągów znaków (jakr""
w Pythonie). W tym przypadku może zająć dowolny ogranicznik (lub ich parę)[]
. W tym przypadku używam tego do cytatów, nie potrzebuję zachowania nieprzetworzonego łańcucha.~|
Jest to operator łańcuchowy (
~
) bitowy lub (|
).<HeLhg>
<>
to lista literał, która zajmuje listę elementów oddzieloną spacjami. W tym przypadku ma jeden element i użyty jako skalar, daje ciąg.źródło
Perl 5 z
-M5.010
, 29 bajtówWypróbuj online!
Zdobyłem dużo wiedzy, odkąd po raz pierwszy tego spróbowałem. Wciąż nie tak krótkie jak inne odpowiedzi, ale najlepsze, co mogę wymyślić!
źródło
w
.Perl 5.10+: 24 znaki
OK, myślę, że jest tak krótki, jak to możliwe w Perlu.
Uruchom z
perl -M5.010
(lub po prostuperl -E
), aby włączyć funkcję Perl 5.10+say
.źródło
ll
...Golfscript
4233Równie dobrze mógłbym zagrać w golfa, biorąc pod uwagę, że musiałem dopasować część kodu i wszystkie dane w tym samym bloku bez możliwości rozgraniczenia dwóch, myślę, że jest to dość krótki wynik. W przeciwieństwie do mojego pierwszego przesłania, kod bloku jest teraz w pełni zintegrowaną częścią danych, dlatego
{1
nie tylko zaczynaj blok i umieszczaj1
na stosie, ale także dane, które definiująH
i tak dalej. Tworzenie tablicy obejmuje teraz pusty ciąg wejściowy, co oznacza, że nie muszę przycinać początku, ponieważ między pustym ciągiem a jest tylko jeden znakH
, znak ten jest odcinany, gdy biorę co drugi znak, a pusty łańcuch jest ostatecznie wyprowadzany jako nic.Demo online: http://golfscript.apphb.com/?c=ezF3WiRRZWleQWsgM2gtKXVsbXNvZ3I3fS5gKl0yJW4r
Definiuje blok kodu. Tworzy kopię bloku kodu i konwertuje go na ciąg znaków. Używa bloku kodu do iteracji po ciągu. Dla każdej iteracji kod utworzy kopię poprzedniej wartości char, xor ją z bieżącą wartością char, i odejmie 1. Wynikowy ciąg usuwa następnie pierwsze 6 znaków, a co drugi znak jest usuwany. W końcu dołączany jest wiersz.
„r iFNGDJUHv98oIMgtplbh4m” to tylko dwie niezadeklarowane zmienne, nic nie robią, ale są starannie skonstruowane, aby uzyskać pożądany rezultat.
Demo online: http://golfscript.apphb.com/?c=W3sxJF4ociBpRk5HREpVSHY5OG9JTWd0cGxiaDRtfS5gXCpdNj4yJW4rźródło
Vim 7.3, 18 klawiszy
Kopiuje ciąg
Hello world
z tego pliku pomocy , który niestety został usunięty w nigdy wersjach Vima.źródło
<Esc>
kombinacje klawiszy i kombinacje z klawiszem Ctrl liczą się jako jeden bajtBefunge-98 ,
3431 bajtówWypróbuj online!
Używa kilku różnych metod, aby uniknąć powielania znaków.
Po pierwsze, używamy literału zawijania, aby uniknąć użycia dwóch
"
liter s. To dodaje „świat!” do stosu.Idąc w lewo w drugim wierszu, dodajemy 9 do dodatkowego,
f
aby dodaćo
„Hello”. Badamyg
znak z komórki 5,0 (l
), a następnie go powielamy.'
Służy do pobierania liste
. Pomnóż 9 przez 8, aby uzyskać 72, wartość ASCII zH
. Następnie drukujemy wszystko za pomocąck,
i odwracamy kierunek za pomocą,>
aby ponownie użyć,
do drukowania nowej linii (a
).źródło
+
id
.Eliksir , 37 bajtów
Wypróbuj online!
Nie mogę zagwarantować, że zadziałałoby to w 2014 r., Kiedy opublikowano to wyzwanie, a Elixir był jeszcze w wersji wcześniejszej niż 1.0 (a zatem, czy formalnie „konkuruje”, ale patrząc na informacje o wydaniu, myślę, że powinien być DOBRZE). W każdym razie cieszę się, że w końcu znalazłem prawidłowe rozwiązanie tego zadania, używając konwencjonalnego języka ogólnego przeznaczenia innego niż Perl!
Przewodnik
źródło
Stax (niekonkurencyjny), 8 bajtów
Wypróbuj online!
Tylko skompresowany dosłowny ciąg znaków. Na szczęście Stax pozwala mi odejść bez zamykania się.
źródło