Twoim celem jest napisanie „Witaj, świecie!” (minus cytaty). To konkurs popularności , więc najwięcej głosów wygrywa. Długość kodu zostanie użyta do zerwania więzi.
Wszystko idzie, o ile jest zgodne z następującymi zasadami:
- Wszystkie znaki muszą być literami lub cyframi, więc można używać tylko znaków w ciągu „abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789”.
- Cały używany kod musi znajdować się w jednym pliku, z wyjątkiem importowanych modułów / klas / niezależnie od tego, jak są one nazywane w twoim ulubionym języku.
- Dozwolone są tylko standardowe biblioteki / frameworki dla wybranego języka (na przykład moduł Math Pythona jest dozwolony, ale Numpy, Scipy i Pygame nie są). Pozwolę TkInter, ponieważ jest to de facto standard GUI w Pythonie.
- Nie jest dozwolone wprowadzanie danych, czy to odczytywania ze standardowego wejścia, odczytywania pliku, wysyłania obrazu, czy odczytywania z Internetu.
+10 punktów brownie, jeśli dowiesz się, jak to zrobić w Javie bez zginania reguł.
Na swoje oceny, przygotuj się, koduj!
EDYCJA: nawiasy klamrowe ({}), nawiasy kwadratowe ([]) i nawiasy (()) są dozwolone, ponieważ byłoby to prawie niemożliwe w większości języków bez nich. Usuwam także zasadę limitu znaków. Mam nadzieję, że dzięki temu będzie ciekawiej.
EDYCJA ^ 2: dozwolona jest również biała spacja. Przepraszam, mój mózg nie działa poprawnie. >. <
;
? Jak mogę coś napisać w C?72 101 108 108 111 44 32 87 111 114 108 100 33{a.
wymaga końca okresu do końca, a ścieżka przezu:
podobnie wymaga dwukropka. Bez.
i:
jesteśmy niczym.Odpowiedzi:
Perl
Niektórzy twierdzą, że perl jest językiem pełnym ascii noise i przypadkowych symboli, takich jak
$
... To nieprawda: Pźródło
s/PATTERN/REPLACEMENT/FLAGS
, ale w rzeczywistości możesz użyć większości wszystkiego, co chcesz zamiast ukośników. W tym przypadku kod używa „z” zamiast ukośników i zmienia (nic) w „Helloq Worldm”, a następnie zastępuje „q” dla chr 44 (używając flagi \ e do oceny WYMIANY aka „chr 44” jako wyrażenia), która jest „, „. Następnie zamienia „m” na chr 33, a „!” I drukuje.q//
, każdy ogranicznik może być stosowaneq!! q** q\\ q;;
. Kilka wyjątków są takie, że aby zamknąć(
użyć)
,q() q[] q{} q<>
i że użycie alfanumeryczne jako ogranicznik, powinno być oddalone od operatora, aby uniemożliwić niejasności, npq qq
,q 66
. Te same sztuczki dotyczą innych operatorów podobnych do cytatów.do
źródło
switch(putchar(72)){}switch(putchar(101)){}
itd.putchar(putchar(108))
(edytuj - BBC basic przeniósł się do osobnej odpowiedzi zgodnie z sugestią. Większość głosów w tej sprawie zdecydowanie dotyczy odpowiedzi LOGO).
LOGO
Tłumacz na http://www.calormen.com/jslogo/#
Wyjście (zielony trójkąt to kursor żółwia)
źródło
Jabłkowy
Brak nawiasów
[]
, nawiasów klamrowych{}
lub nawiasów()
w tym:Dane wyjściowe to:
źródło
set s to s as list
przekształca się"H"
w{"H"}
(listę). W innych językach, takich jak Java, jest to o wiele bardziej skomplikowane.Grzmotnąć
Ten rodzaj działa, jeśli zmrużysz oczy:
źródło
banner Hello World
lubfiglet Hello World
,
i!
. W przeciwnym razie użyłbym zwykłego staregoecho
.base64
Spełnia oryginalne zasady.
źródło
"
Pyton
Więc zakładamy, że wszyscy czytają poziomo? Dla tych użytkowników, którzy lubią czytać w pionie:
źródło
sys.stdout.write
to standardowy sposób wyświetlania tekstu bez znaków nowej linii w większości wersji Pythona (zachowanie w wersji 3.0 zostało nieco zmienione). Nie możemy tego zrobić tutaj z powodu okresów.Polyglot: HQ9 +, H9 +, HQ9 ++, CHIQRSX9 +, HQ9 + B i HQ9 + 2D (1 bajt)
Dziękuję @victor za listę języków.
źródło
OMGROFL
Jestem wielkim fanem ezoterycznych języków. Na szczęście OMGROFL jest alfanumeryczny:
iz
Polecenie ustawia wartość zmiennej, w tym przypadkulol
,lool
iloool
służyć jako zmienne ...Te
rofl
echa polecenie odchodzący ASCII równoważne ilości przechowywanego w zmiennej.stfu
Komenda kończy program;)źródło
COBOL
Wymagało pewnych zmian, aby stać się prawdziwie alfanumerycznym źródłem.
ID programu można usunąć. Otrzymasz wygenerowaną nazwę programu (patrz komunikaty).
PRZECHOWYWANIE-PRZECHOWYWANIE można upuścić. Znów kompilator jęczy.
Ponieważ w obu tych liniach wcześniej brakowało kropek / kropek, które nie są już istotne, ponieważ opisy zostały całkowicie pominięte, liczba komunikatów o błędach jest taka sama jak poprzednio i nadal nie wpływa na generowany kod dla programu.
Przy zmianie COMP-5 na COMP klauzule WARTOŚĆ nie są już dozwolone, ponieważ COMP 9999 ma tylko cztery cyfry dziesiętne, podczas gdy COMP-5 jest dwubajtowym plikiem binarnym z wszystkimi dostępnymi wartościami bitowymi.
Wartości w MOVE są wartościami dziesiętnymi, które dają wartości binarne, które dają pary znaków.
Mimo że pola COMP mają cztery cyfry i nie pozwalają na klauzule VALUE zawierające więcej niż cztery cyfry, możesz użyć więcej cyfr w MOVE o wartości dosłownej bez obcięcia w tym momencie ... nie pytaj mnie dlaczego. Opcja kompilatora DIAGTRUNC (którą wyłączyłem) wygeneruje dla nich diagnostykę ostrzegawczą.
Opcja kompilatora TRUNC (BIN) może być używana do traktowania COMP jako COMP-5, ale MOVE są innym sposobem na zrobienie tego.
Ponieważ jest to COBOL, wyjście musi być w DUŻYM PRZYPADKU (kłamstwo, ale dla zabawy).
OK, ustąpił, teraz produkuje:
Które, ponieważ jest nieparzystą liczbą znaków, wymagało pewnych dalszych zmian, ponieważ w tym kompilatorze nie możemy mieć pól binarnych o nieparzystej liczbie bajtów. Spójrz na tę linię 13 Xs! Zwykle byłby zapisany jako X (13), ale może być tak, jak pokazałem ...
A ORTEXT jest potrzebny (lub nie OR, w każdym razie) jako nazwa, ponieważ OR jest słowem zastrzeżonym dla kompilatora (to znaczy OR, oczywiście).
Są to wartości EBCDIC, a nie ASCII, ponieważ działa on na pudełku obsługującym EBCDIC i Big Endian.
Och, COBOL wymaga wielu kropek / kropek. Zostawiłem je (są zbanowane), więc otrzymałem wiele kompilowanych wiadomości. Po prostu powiedział kompilatorowi, żeby wygenerował kod (żaden z komunikatów nie dotyczy kodu obiektowego).
Nawet bez DIAGTRUNC wiadomości mają teraz maksymalnie 17 ...
źródło
-
jest to dozwoloneRuby (używając tylko alnumów i białych znaków)
Wynik:
Hello, World!
źródło
JavaScript
Testuj za pomocą konsoli przeglądarki.
źródło
JavaScript
źródło
ferNANDo
źródło
Rebol
Rozwiązanie tylko alfanumeryczne:
Powyżej znajduje się aktualizacja, która korzysta z doskonałej sugestii Dr Rebmu
add space 1
(która produkuje!
), aby dostać się do wszystkich postaci.Poniżej znajduje się oryginalna wersja:
Krótsza wersja ze wspornikami:
I jeszcze krótsza wersja z szelkami:
I najkrótsza wersja z nawiasami klamrowymi:
Rebol używa nawiasów klamrowych
{}
do cytowania w wielu wierszach. Tak całkowicie zgodne ze zmianami zasad, ale niezupełnie w duchu (IMHO), jak moje pierwsze dwie odpowiedzi powyżej.NB. Drukowanie
!
było uciążliwe!Rebol zezwala i używa znaków interpunkcyjnych rutynowo dla nazw funkcji i typów danych. Tak więc opcje takie jak
to-char 33
lubto char! 33
nie byłyby dozwolone zgodnie z zasadami (nawet jeśli te interpunkcje nie są operatorami jako takie).Na szczęście znalazłem bezczelny sposób, zmieniając obiekt systemu Rebol:
make object! [...]
w sznurek i wiśnię go!
z niego wybieram :)Aktualizacja: A teraz również wybrałem przecinek z tekstu licencji w obiekcie systemowym.
źródło
!
jest zabronione-
lub!
Więc może teraz usunąć głos w dółdo
Używa tylko znaków alfanumerycznych, spacji i nawiasów klamrowych {}, nawiasów kwadratowych [] i nawiasów ().
printf () akceptuje char * jako argument, ale ponieważ nie możemy użyć cudzysłowów ("), typecast ciąg znaków jako długą długą tablicę. Wartości tutaj widoczne to ciągi ASCII, w małym endianie (0x48 = H, 0x65 = e, 0x6c = l itd.) Przerzucam go na długi [], ponieważ w ten sposób mogę przekazać 8-bajtowy argument, a zatem użyć tylko dwóch wywołań printf () zamiast czterech.
źródło
BBC BASIC
Emulator na bbcbasic.co.uk
Oddzielić od mojej odpowiedzi LOGO.
Łatwa droga
Liczby po prawej to tylko kody ASCII. To jest tak samo jak drukowanie. Gdybym miał przecinek, mógłbym to zrobić w jednym wierszu (
VDU 72,101,108,etc.
)Bardziej kreatywny sposób
źródło
Matematyka
źródło
DC
DC to idealne narzędzie do pracy.
P
Komenda DC wysyła jedną liczbę ze stosu i wysyła surową reprezentację komputera do STDIO. Widząc jako5735816763073854918203775149089 = 0x48656C6C6F2C20576F726C6421
, który jest reprezentowany jako0x21, 0x64, 0x6C... = 'H', 'e', 'l'...
w architekturze little-endian, wyprowadzaHello, World!
.źródło
16i48656C6C6F2C20576F726C6421P
JavaScript!
I powiedzieli, że nie da się tego zrobić ... Żadnych operatorów przypisań, żadnych konkatenatorów, żadnych cytatów! Aaaa!
Nie bój się ... Siła jest
with
tobą ...źródło
JavaScript
Aktualizacja: Udało się wyciąć grupę postaci, wprowadzając również funkcję Świata.
Kolejne rozwiązanie JavaScript, które zapisuje do pliku console.log:
Inspirowany tym wpisem .
Najpierw definiuję funkcje o nazwie Hello and World. Zostanie to wykorzystane później.
Następnie zaczynam łańcuch zagnieżdżonych z.
with (console)
Iwith (String)
są wykorzystywane tak, że mogę później invokeconsole.log
iString.fromCharCode
bez użycia kropki.Plan polega na zbudowaniu łańcucha
Hello, World!
przez nadużywanie zagnieżdżonych za pomocą. Za każdym razem, gdy wywołuję concat (), wynikowy ciąg znaków będzie kontekstem w następnym with-block. Skracam się, aby szybko uzyskać"Hello"
dostęp doname
właściwościHello
funkcji. Następnie łączę znaki przecinka i spacji za pomocąString.fromCharCode
.Następną sztuczką jest zdobycie
"World"
części ciągu. Nie mogę użyć tej samej metody, którą otrzymałemHello
, ponieważ nie mogę wywołać World.name. Zamiast tego umieściłem tę logikę w metodzie World i wywołałem ją.Na koniec dołączam końcowy wykrzyknik i wysyłam wynik bezpośrednio do funkcji dziennika, którą jest oczywiście console.log.
źródło
Perl
W nowoczesnym Perlu (5.10 lub nowszym):
W starszym Perlu:
Oba powyższe rozwiązania wykorzystują
q
operator podobny do cytatu Perla i umożliwiają selektywne ograniczniki do cytowania łańcucha, np.q{}
q[]
q()
q//
To rozwiązanie wymaga zmiany reguły, która zezwala na nawiasy klamrowe, nawiasy klamrowe lub pareny. Więc chociaż całkowicie poprawna, uważam, że
mniip
doskonała odpowiedź Perla jest bardziej zgodna z duchem zasad (+1).Jednak bez
mniip
odpowiedzi moje rozwiązanie można napisać w następujący sposób:i choć trudniejsze dla oka działa.
źródło
syntax error at -e line 1, near "say chr"
Perl
źródło
Pyton:
powoduje „Witaj, świecie!” pojawiać się na ekranie. Nie wierzysz mi? Wypróbuj to sam! Ponadto tak naprawdę nie korzysta z sieci, otwiera przeglądarkę, która może wyszukać stronę internetową.
źródło
Biała przestrzeń
Okej, możemy użyć białych znaków. Używa tylko
Space
,Tab
,LineFeed
i ignoruje wszelkie inne znaki.Z komentarzem:
S
,T
lubL
środkówSpace
,Tab
lubLineFeed
odpowiednio.Z wyróżnieniem: http://en.wikipedia.org/wiki/Whitespace_(programming_language )#Sample_code
źródło
dc, (26 bajtów dla golfistów)
Białe spacje i
[]
nawiasy są teraz dozwolone:Wynik:
źródło
Rebmu , 46 znaków
Silnie paraleluje rozwiązanie @ dragetun w Rebol (Ponieważ Rebmu jest narzędziem nauczania Rebol / Red, które jest „dialektem”, którego celem jest zwrócenie uwagi na języki poprzez kołysanie w Code Golf. :-P)
Jednak aby zdobyć brakujące postacie, zrobiłem coś bardziej oczywistego. Właśnie dodałem do przestrzeni, zamiast iść i przeglądać ciągi systemowe. Możesz dostać spację 1, aby uzyskać literę znaku # "!" i dodaj spację 12, aby uzyskać literę znaku # ",".
Jeśli uruchomimy to, możemy zobaczyć, że jest „unmushed”:
Co jest dość logiczne:
źródło
T-SQL, 52
Ach, tak jest lepiej! Bezpośrednia konwersja binarna, tylko 52 znaki.
Poprzednio...
Istnieje o wiele bardziej sprytne i bardziej golfowe rozwiązanie, które działałoby , gdybyśmy mogli użyć
=
i+
(wyszukiwanie standardowych danych wbudowanych w msdb i używanie ich do konstruowania ciągu zapytania zgodnego z EXEC)Ale skoro nie możemy, masz takie naiwne podejście:
źródło
Pyton:
Pfff, kto potrzebuje części numerycznej alfanumerycznej?
Jest to zależne od regionu, więc twój przebieg może się różnić. Jeśli jednak naprawdę chcesz zreplikować ten wynik, możesz użyć następujących instrukcji zamiast instrukcji importu:
(to nie jest część mojego zgłoszenia, to po prostu udostępnianie moich mieszkańców w celu odzyskania)
źródło
J - 73 char
W końcu można to zrobić!
Oto kwestia J. Większość prymitywów to interpunkcja ASCII, po której następują maksymalnie dwie kropki lub dwukropki. Te prymitywy, które nie są wykonane z interpunkcji, są znakami alfanumerycznymi, po których następują dwie kropki lub dwukropki. Więc nie wolno nam nic z tych, z wyjątkiem
{ } [ ]
.[
i]
są czasownikami tożsamości i dlatego są bezużyteczne.Na szczęście
{
indeksuje tablice, więc jeśli mielibyśmy, powiedzmy, ciąg znaków z każdym pojedynczym znakiem ASCII (a.
zwanym Alfabetem ), moglibyśmy wyciągnąć litery według ich punktów kodowych ASCII. Mamy również zapasowy sposób tworzenia ciągów ,0 : 0
a potem rzeczy i potem samotny)
; jelita grubego, w którym ma alias w standardowym bibliotekidef
.Następnie w standardowej bibliotece znajduje się czasownik
show
, który daje wewnętrzną reprezentację czasownika, jeśli podasz mu nazwę jako ciąg. Jest inny czasownikdo
, który ewaluuje ciąg. Więc jeśli możemy wyciągnąća.
z jakiejkolwiek takiej reprezentacji, możemy to sprawdzić i wyciągnąćHello, World!
.Nasz wybawca ma formę
take
aliasu,{.
który maa
swoją nazwę.show'take'
wrócitake=: {.
, więc mamy nasze,a.
a tym samym rozwiązanie.Możemy się go pozbyć
{
, używając zasadniczo odpowiednikapick
ze standardowej biblioteki, ale nie można uniknąć paren na samym końcu.źródło