Witaj świecie w wielu językach


72

Zadanie

Utwórz program lub funkcję, która będzie poprawna w wielu językach programowania, a po skompilowaniu / zinterpretowaniu jako inny język wyświetli „Hello, World!” w innym języku naturalnym.

Na przykład prawidłowe rozwiązanie może generować Hello World!(angielski) po kompilacji i działać jako C, Hallo Welt!(niemiecki) po kompilacji i działać jako C ++ i 你好世界!(chiński) po uruchomieniu jako Python.

Zasady

Aby uniknąć dwuznaczności co do ważności odpowiedzi, poniżej znajduje się lista dozwolonych wersji frazy w kilku językach. Lista składa się z wyrażenia w językach, dla których Tłumacz Google ma przetłumaczone przez społeczność tłumaczenie wyrażenia (od tego momentu). *

Dokładność tych tłumaczeń jest dyskusyjna, ale to one wykorzystają to wyzwanie. Wydrukowane ciągi muszą mieć dokładnie następujący format (z wyjątkiem początkowych lub końcowych białych znaków).

Afrikaans:    Hello Wêreld!
Albanian:     Përshendetje Botë!
Amharic:      ሰላም ልዑል!
Arabic:       مرحبا بالعالم!
Armenian:     Բարեւ աշխարհ!
Basque:       Kaixo Mundua!
Belarussian:  Прывітанне Сусвет!
Bengali:      ওহে বিশ্ব!
Bulgarian:    Здравей свят!
Catalan:      Hola món!
Chichewa:     Moni Dziko Lapansi!
Chinese:      你好世界!
Croatian:     Pozdrav svijete!
Czech:        Ahoj světe!
Danish:       Hej Verden!
Dutch:        Hallo Wereld!
English:      Hello World!
Estonian:     Tere maailm!
Finnish:      Hei maailma!
French:       Bonjour monde!
Frisian:      Hallo wrâld!
Georgian:     გამარჯობა მსოფლიო!
German:       Hallo Welt!
Greek:        Γειά σου Κόσμε!
Hausa:        Sannu Duniya!
Hebrew:       שלום עולם!
Hindi:        नमस्ते दुनिया!
Hungarian:    Helló Világ!
Icelandic:    Halló heimur!
Igbo:         Ndewo Ụwa!
Indonesian:   Halo Dunia!
Italian:      Ciao mondo!
Japanese:     こんにちは世界!
Kazakh:       Сәлем Әлем!
Khmer:        សួស្តី​ពិភពលោក!
Kyrgyz:       Салам дүйнө!
Lao:          ສະ​ບາຍ​ດີ​ຊາວ​ໂລກ!
Latvian:      Sveika pasaule!
Lithuanian:   Labas pasauli!
Luxemburgish: Moien Welt!
Macedonian:   Здраво свету!
Malay:        Hai dunia!
Malayalam:    ഹലോ വേൾഡ്!
Mongolian:    Сайн уу дэлхий!
Myanmar:      မင်္ဂလာပါကမ္ဘာလောက!
Nepali:       नमस्कार संसार!
Norwegian:    Hei Verden!
Pashto:       سلام نړی!
Persian:      سلام دنیا!
Polish:       Witaj świecie!
Portuguese:   Olá Mundo!
Punjabi:      ਸਤਿ ਸ੍ਰੀ ਅਕਾਲ ਦੁਨਿਆ!
Romanian:     Salut Lume!
Russian:      Привет мир!
Scots Gaelic: Hàlo a Shaoghail!
Serbian:      Здраво Свете!
Sesotho:      Lefatše Lumela!
Sinhala:      හෙලෝ වර්ල්ඩ්!
Slovenian:    Pozdravljen svet!
Spanish:      ¡Hola Mundo!         // Leading '¡' optional
Sundanese:    Halo Dunya!
Swahili:      Salamu Dunia!
Swedish:      Hej världen!
Tajik:        Салом Ҷаҳон!
Thai:         สวัสดีชาวโลก!
Turkish:      Selam Dünya!
Ukrainian:    Привіт Світ!
Uzbek:        Salom Dunyo!
Vietnamese:   Chào thế giới!
Welsh:        Helo Byd!
Xhosa:        Molo Lizwe!
Yiddish:      העלא וועלט!
Yoruba:       Mo ki O Ile Aiye!
Zulu:         Sawubona Mhlaba!

Można więc użyć 74 języków.

Zwycięskie kryterium

Rozwiązanie, które może wypisać wyrażenie w największej liczbie języków, wygrywa. W przypadku remisu wygrywa krótsze rozwiązanie (w bajtach).


* Tłumaczenia na język malgaski i maltański zostały oznaczone jako zweryfikowane przez społeczność, ale były wyraźnie niepoprawne (jedno było po prostu „Hello World!”, A drugie „Hello dinja!”, Ale samo „Hello!” Tłumaczy się na „Bongu!”). Zostały one wyłączone. Również niektóre języki (arabski, hebrajski, paszto, perski i jidysz) czytają od prawej do lewej w Tłumaczu Google, ale po skopiowaniu tutaj czytają od lewej do prawej. Mam nadzieję, że to w porządku.


Czy wolno nam stosować spójną metodę liczenia bajtów, która nie jest używana przez żaden z używanych języków programowania?
Zacharý

@ Zacharý Myślę, że do zliczenia bajtów można użyć dowolnego pojedynczego kodowania, które ma reprezentację dla wszystkich znaków użytych w odpowiedzi. A może bajty powinny być liczone w UTF-8 dla każdej odpowiedzi?
Steadybox

1
Jeśli mam język, który używa innego kodowania niż wszystkie inne, czy powinienem przekonwertować kod na stronę kodową tego języka lub użyć tej samej reprezentacji bajtów? (co byłoby trudne, ponieważ niektóre bajty powodują niepoprawne UTF-8)
NieDzejkob

2
@NieDzejkob Myślę, że reguła dla polyglota to jeden plik z mierzalną wielkością bajtów i może być uruchamiany przez wiele interpreterów / kompilatorów. ( przykład )
user202729,

4
Pamiętaj, że wykrzykniki w języku chińskim i japońskim ( , U + FF01) różnią się od pozostałych ( !, U + 0021).
alephalpha

Odpowiedzi:


32

23 Befunges, 713 bajtów

Jedynym językiem, który naprawdę znam, jest Befunge, więc zamiast wielu języków, właśnie wybrałem wiele implementacji Befunge. Uważam, że nadal obowiązuje to zgodnie z zasadami PPCG, które uznają język za definiowany przez jego implementację .

8023/# !-1401p680p88+79*6+1p238*7+0pg90p$#v0';1';+>9%80p$$$$"ph~s"+3vv
vv_2#!>#-/\#21#:+#:>#\<0/-2*3`0:-/2g01g00p>#< 2#0 ^#1/4*:*9"9"p00***<<
>>$:2%3*-4/3g68*-70p1-0`02-3/-03-2%1+2/-70g+80g65+70g`7++3g68*-70g9`*v
0168:0>0133?45130120340200v00:<+8*+76%4p00+5/4:+-*86g3++98/2%+98g09+<<
                         @>gg#^:#+,#$"!"-#1_@
       !Helo Byd!!!!!Hai dunia!!!!Ciao mondo!!!Hallo Wereld!!!!
       !Hallo Welt!!!Halo Dunia!!!Halo Dunya!!!Bonjour monde!!!
       !Hei Verden!!!Hej Verden!!!Moien Welt!!!Labas pasauli!!!
       !Molo Lizwe!!!Salut Lume!!!Hei maailma!!Sveika pasaule!!
       !Hello World!!Salom Dunyo!!Tere maailm!!Sawubona Mhlaba!
       !Kaixo Mundua!Salamu Dunia!Sannu Duniya!!!!!!!!!!!!!!!!!

Frustrującą rzeczą w Befunge jest to, że chociaż istnieje implementacja referencji typu open source, a sam język jest bardzo prosty, nie ma ani jednego zewnętrznego tłumacza (o którym wiem) dokładnie pasującego do zachowania referencyjnego. Każde wdrożenie kończy się niepowodzeniem w inny sposób.

Na plus daje to nam możliwość opracowania jednego fragmentu kodu, który da inny wynik w prawie każdym tłumaczu. I tego właśnie próbuję w powyższym programie.

Jeśli ktoś jest zainteresowany weryfikacją wyników, próbowałem pogrupować różne implementacje w kategorie w zależności od tego, jak łatwo je uruchomić (np. Niektóre osoby mogą nie być w stanie uruchomić plików binarnych systemu Windows lub mogą nie chcieć kompilacja ze źródła, ale każdy powinien mieć możliwość testowania tłumaczy internetowych).

Tłumacze online

Nie wymaga instalacji. Zwykle jest to tylko kwestia wklejenia kodu i kliknięcia przycisku lub dwóch. Pamiętaj jednak, że niektóre z nich są dość powolne, więc może trochę potrwać, aby zakończyć wykonywanie.

Plac zabaw Befios Alexiosa - Salamu Dunia!

Kliknij Clear...przycisk i wklej kod w polu wejściowym. Przełącz Editprzełącznik, aby aktywować tłumacza, a następnie kliknij Runprzycisk, aby rozpocząć wykonywanie.
Pamiętaj, że ta strona prawdopodobnie nie będzie działać w przeglądarce innej niż Chrome.

Befungius - Molo Lizwe!

Wklej kod do pola wejściowego, pamiętając o zastąpieniu istniejącego kodu. Następnie kliknij Runprzycisk, aby wykonać.

Tłumaczka Befunge 93 Davida Klicka - Sannu Duniya!

Wklej kod w polu wejściowym Playfield , a następnie kliknij Runprzycisk, aby rozpocząć wykonywanie.

Tłumacz Ian Osgooda Befunge-93 - Salut Lume!

Wklej kod do pola wejściowego pod Showprzyciskiem, upewniając się, że nadpisałeś @już tam. Kliknij Showprzycisk, aby zaimportować kod, a następnie kliknij Runprzycisk, aby rozpocząć wykonywanie.

jsFunge IDE - Hej Verden!

Najpierw zamknij okno dialogowe Pomoc , a następnie kliknij przycisk paska narzędzi Otwórz / Importuj (drugi od lewej), wklej kod i kliknij OK. Aby wykonać, kliknij przycisk Tryb uruchamiania (czwarty od lewej), a następnie Start (piąty od lewej).

Należy również pamiętać, że kilka tłumaczy konsolowych jest faktycznie dostępnych w TIO, więc chociaż nie są technicznie tłumaczami online, można je przetestować online. Dla tych, którzy są obsługiwani (obecnie BEF, FBBI, MTFI i PyFunge), zamieściłem Wypróbuj online! link obok ich wpisu.

IDE Java

Będziesz musiał mieć zainstalowane środowisko wykonawcze Java, ale teoretycznie powinny one działać na dowolnej platformie. Testowane tylko w systemie Windows.

Wizualny aplet Befunge Ashleya Millsa - Moien Welt!

Początkowo był to aplet online, który niestety nie jest już dostępny, ale nadal możesz pobrać słoik i uruchomić go lokalnie jako aplikację komputerową. Musisz wkleić kod w oknie edytora programów , a następnie kliknij Convertprzycisk, a następnie Runprzycisk.

WASABI: Wspaniały Asinine Befunge Interpreter Wasabi - Hallo Welt!

Aby wkleić kod, kliknij prawym przyciskiem myszy w lewym górnym rogu okna edytora ( musi to być górny lewy górny róg ) i wybierz element menu Wklej . Następnie zaznacz pole wyboru Pełna prędkość (w przeciwnym razie zajmie to wieczność) i kliknij Run!przycisk, aby rozpocząć wykonywanie.

YABI93: Yet Another Befunge93 Interpreter - Halo Dunia!

Naciśnij Ctrl+ A, Ctrl+, Vaby wkleić kod do okna edytora, pamiętając o zastąpieniu domyślnego źródła. Następnie kliknij Startprzycisk, aby rozpocząć wykonywanie.

IDE systemu Windows

Zazwyczaj potrzebujesz do tego systemu Windows, chociaż w niektórych przypadkach mogą być dostępne pliki binarne dla innych systemów operacyjnych. Nie mogę obiecać, że kod będzie działał na innych platformach.

BefunExec - Hello World!

Nie możesz wkleić kodu do edytora, więc najpierw musisz go gdzieś zapisać na dysku. Następnie z IDE użyj menu Plik> Otwórz, aby załadować kod z dysku i wybierz menu Symulacja> Uruchom / Pauza, aby go uruchomić.

BeQunge - Labas pasauli!

Naciśnij Ctrl+, Vaby wkleić kod, a następnie kliknij przycisk paska narzędzi Debugowanie (niebieski tryb), aby rozpocząć wykonywanie. Gdy pojawi się panel Debugger , będziesz chciał ustawić Prędkość na maksimum - przycisk po prawej stronie suwaka - w przeciwnym razie ukończenie zajmie wieczność.

Grzyb - Tere maailm!

Naciśnij Ctrl+, Vaby wkleić kod, a następnie naciśnij, F5aby go uruchomić.

Visbef: Visual Befunge '93 dla Windows - Hallo Wereld!

Nie możesz wkleić kodu do edytora, więc najpierw musisz go gdzieś zapisać na dysku. Następnie z IDE naciśnij Ctrl+, Oaby otworzyć przeglądarkę plików i załaduj kod z dysku, i naciśnij, F5aby go uruchomić.

Aplikacje konsoli Windows

Ponownie zazwyczaj wymagają one systemu Windows, chociaż inne platformy mogą być dostępne, ale nie gwarantuje to, że będą działać.

We wszystkich przypadkach kod będzie musiał zostać zapisany w pliku na dysku, a nazwa pliku przekazana do interpretera jako parametr wiersza poleceń ( source.bf w przykładowych wierszach poleceń podanych poniżej). Należy również pamiętać, że niektóre z nich są technicznie tłumaczami Befunge-98 i muszą być uruchamiane z określoną opcją wiersza polecenia, aby wymusić tryb zgodności Befunge-93. Jeśli tego nie zrobisz, nie uzyskasz poprawnych wyników.

BEFI: Tłumaczka Befunge-93 Rugxulo - Hei Verden!

Wiersz poleceń: bef93w32 -q source.bf

CCBI: Zgodny interpreter Befunge-98 - Sveika pasaule!

Linia poleceń: ccbi --befunge93 source.bf

MTFI: Magus Technica Funge Interpreter - Hai dunia!

Wiersz polecenia: mtfi -3 source.bf( Wypróbuj online! )

Aplikacje konsoli Python i PHP

Wymagają one zainstalowania odpowiedniego języka skryptowego - Python lub PHP.

Befungee - Helo Byd!

Wiersz poleceń: befungee.py source.bf

PyFunge - Halo Dunya!

Wiersz polecenia: pyfunge -v 93 source.bf( Wypróbuj online! )

Bephunge - Bonjour monde!

Wiersz poleceń: php bephunge.phps source.bf

Aplikacje konsoli tylko do źródła

Będą one musiały zostać zbudowane ze źródła, co zwykle jest najłatwiejsze w środowisku podobnym do * nix. W systemie Windows korzystam z podsystemu Windows dla systemu Linux .

BEF: Dystrybucja referencyjna Befunge-93 - Ciao mondo!

Wiersz polecenia: bef -q source.bf( Wypróbuj online! )

cfunge - Sawubona Mhlaba!

Wiersz poleceń: cfunge -s 93 source.bf

FBBI: Płomienny bydło Befunge-98 Intepreter - Hei maailma!

Wiersz polecenia: fbbi -93 source.bf( Wypróbuj online! )

Grzyby - Kaixo Mundua!

Wiersz poleceń: fungi source.bf

Rc / Funge-98 - Salom Dunyo!

Wiersz poleceń: rcfunge -93 source.bf

Jak to działa

Wyzwanie polegało na znalezieniu jak najmniejszej liczby testów zapewniających największe rozróżnienie między tłumaczami. Ostatecznie sprowadzono się do czterech głównych sekwencji testowych:

  1. Pierwszy to pamięć poza zakresem odczytana z offsetu -1,1. Teoretycznie powinno to zawsze zwracać 32 (przestrzeń ASCII), ale w praktyce było 10 odmian. Test ten komplikuje fakt, że dwóch tłumaczy ustnych odczytuje się po odczytaniu poza granicami, dlatego do przeprowadzenia tych dwóch testów konieczne było wykonanie kilku specjalnych testów (zaokrąglanie podziałów i mostkowanie przestrzeni).

  2. Druga sekwencja to test funkcjonalności Befunge-98 - w szczególności instrukcji ;i '. Prawie wszyscy tłumacze są Befunge-93 lub działają w trybie zgodności Befunge-93, więc powinni po prostu zignorować te instrukcje. W praktyce istniało 6 różnych sposobów interpretacji tej sekwencji.

  3. Trzeci test sprawdza zasięg komórek pamięci. W interpretatorze referencyjnym komórki pamięci są podpisane 8-bitowe, ale inne implementacje różnią się w zakresie od 8-bitowych do nieograniczonych, niektóre podpisane, a niektóre niepodpisane. Jednak do celów tego testu musieliśmy jedynie rozróżnić 5 z tych wariantów.

  4. Czwarta i ostatnia sekwencja to połączenie testów niedomiaru i ujemnego podziału. Istnieje wiele sposobów, w jakie tłumacze popełniają błąd niedomiaru, i istnieją co najmniej 3 różne sposoby implementacji instrukcji podziału i modulo, ale tutaj były tylko 3 kombinacje.

Każda z tych sekwencji zwróciła jedną liczbę, a te cztery liczby zostały połączone (za pomocą niektórych podstawowych tabel arytmetycznych i translacyjnych), aby uzyskać końcową wartość z zakresu od 0 do 22. Tę wartość można następnie wykorzystać jako indeks do wyszukania rzeczywistej wiadomości wystawić.


Bardzo dobra metoda, ale nie ma mowy, żebym to pokonał. Teraz prawdopodobnie moglibyśmy to dostosować i wycisnąć tam warianty BrainFuck.
Zacharý

10
Zapewniam cię, że to nie jest tak łatwe, jak możesz sobie wyobrazić. Wyzwaniem jest uruchomienie kodu bez awarii w ponad 20 błędnych interpretatorach. Gdybym chciał być tani, użyłbym Befunge-98 i po prostu zapytał mnie o ręczne odciski implementacji ( 3y).
James Holderness

2
Mam na myśli tani, ponieważ używasz tylko befunges, ale w rzeczywistości jest to bardzo imponujące.
Zacharý

Jest to niezwykle imponujące, ale czy można wyjaśnić, dlaczego różni tłumacze traktują to inaczej? Może nie wszystkie 23 wersje, a przynajmniej kilka przykładów różnic behawioralnych, które wykorzystujesz?
Jack Brounstein,

1
@JackBrounstein Na końcu odpowiedzi dodałem trochę wyjaśnienia.
James Holderness

64

16 języków, 1363 bajtów

 #define ip"MemuL tulaS",,,,,,,,,,"!",@++++++++++[>+++++++>++++++++++>+++>+<<<<-]>++.>+.+++++++..+++.>++.<<+++++++++++++++.>.+++.------.--------.>+.@,kc"Kaixo Mundua!"v#!
#define print(A,B,C)main(){printf("Helo Byd!");}//ss                                                                          ;ooooooooooooooooooo"Moni Dziko Lapansi!"<  
#ifdef __cplusplus//p                                                                                                                                 ;;];;
#include<cstdio>//ffffffffff?
#define print(A,B,C)int main(){printf("Halo Dunya!");}//ssp
#endif//;  [;;;;;;;;;     "!etejivs vardzoP"]
#ifdef __OBJC__//;;;;;
#define print(A,B,C)main(){printf("Hallo Welt!");}//ss
#endif//\
"""echo" "Salom Dunyo!";"exit";puts"Moien Welt!";\
__END__
#define B//\
"""#;;;;;
print(["Hai dunia!","Hej Verden!","Halo Dunia!"][(int(1>0)is 1)+~int(-1/2)*2])
#define s eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeejeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeejiiiiiiiijeeeeeeeeeeeeeejiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiijeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeejeejijiiiiiiiiiijeeeeeeeeeeejiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiij
#define U   !"!dlereW ollaH"<           ;
#define T@,kc"Sannu Duniya!?%?"

Wypróbuj online!

(użyj „zmień języki”, aby zmienić język)

  • Python 3 = Halo Dunia! (Indonezyjski)

  • Python 2 = Hej Verden! (Duński)

  • Python 1 = Hai dunia! (Malajski)

  • C (gcc) = Helo Byd! (Walijski)

  • C ++ (gcc) = Halo Dunya! (Sundajski)

  • Cel C (brzęk) = Cześć Welt! (Niemiecki)

  • Brainfuck = Hello World! (Oczywiście angielski)

  • Befunge-93 = Salut Lume! (Rumuński)

  • Ruby = Moien Welt! (Luksemburski)

  • Bash = Salom Dunyo! (Uzbecki)

  • Befunge-98 (PyFunge) = Kaixo Mundua! (Baskijski)

  • Unefunge-98 (PyFunge) = Sannu Duniya! (Hausa)

  • Kardynał = Cześć Wereld! (Holenderski)

  • Alphuck = Ciao mondo! (Włoski)

  • > <> = Moni Dziko Lapansi! (Chichewa)

  • Rozszczepienie = Pozdrav svijete! (Chorwacki)

Wszelkie wskazówki dotyczące gry w golfa są mile widziane (szczególnie na Brainfuck) !!

Dzięki @JonathanFrech za -1 bajt! Ponadto, dzięki @ovs za -40 bajtów!

Jak (ogólne pomysły, właściwie zapomniałem o szczegółach)?

Języki można podzielić na cztery grupy:

  • Makro: C, C ++, cel C
  • Komentarz: Python3, Python2, Python1, Ruby, Bash
  • Wymiary: Befunge-93, Befunge-98, Unefunge-98, kardynał,> <>, rozszczepienie
  • Vulgar: Brainfuck, Alphuck

Języki makr widzą #jako początek dyrektywy preprocesora. Są one używane z trzech powodów: do przechowywania kodu dla innych grup, rozróżniania języków makr i faktycznego definiowania makra. Wszystkie trzy wykorzystują //jako komentarz, więc potem przechowujemy kod dla innych grup. Również odwrotny ukośnik kontynuuje komentarz w tych językach.

Języki komentarzy #są początkiem komentarza. Dziwactwo tutaj to potrójne cytaty, które odróżniają Pytony od Ruby od Basha. Aby odróżnić Python 1 od 2 od 3, używamy funkcji wyróżniającej we wszystkich trzech, wraz z tablicą wyników. O tak, jest też to __END__. Służy to do zakończenia kodu niektórych (nie pamiętając dokładnie, które) języków komentarzy.

Języki wymiarów wyróżnia się w sposób trudny do wyjaśnienia. Trzeba znać specyfikę każdego języka, aby to zrozumieć. Na przykład #jest tylko pomijaniem w fungeoidach, podczas gdy robi różne różne rzeczy w innych językach. Kod jest rozrzucony wszędzie dla tych języków.

I wreszcie dochodzimy do języków wulgarnych. Ci dwaj ignorują wszystko, czego nie ma w zestawie prawidłowych znaków. W tych i innych językach należy grać w równoważenie, ponieważ kod zawiera już znaki w zestawach znaków.


Czy potrafisz połączyć ciągi znaków w Pythonie w jeden duży ciąg i użyć odcinania ciągów, aby go zindeksować? np "abcabcabc"[n::3] -> "aaa" for n = 0, "bbb" for n = 1. Wydaje mi się, że prawdopodobnie istnieje sposób, aby go pokroić i zaoszczędzić bajty, włączając w to w jakiś sposób zduplikowane znaki (np. H i!).
cole

2
Chłodny! nawiasy klamrowe ["Hai dunia!","Hej Verden!","Halo Dunia!"]chronią przecinki!
Uriel

3
Nie musieliby tego robić, nadużywam faktu, że pieprzenie mózgu TIO ma domyślną wartość 0 (lub nic nie robi, nie mogę powiedzieć), jeśli zabraknie danych wejściowych od użytkownika. Istnieje 9 innych nieekranowanych przecinków, które nadużywają tego faktu.
Zacharý

2
Czy istnieje powód, dla którego nie używasz +[++[<+++>->+++<]>+++++++]<<<--.<.<--..<<---.<+++.<+.>>.>+.>.>-.<<<<+.części BF? ( źródło )
Esolanging Fruit

1
Dodałem wyjaśnienie dla każdego, kto chce je zobaczyć.
Zacharý

38

15 języków, 532 bajty

# ;"!audnuM oxiaK">:#,_@R"Hej Verden!";;@,kb"Tere maailm!";# w"!amliaam ieH"ck,@oooooooooo"Hai dunia!"
`true #{puts'Hola món!'}` \
__END__
"Hola Mundo!" puts
case `ps -p$$ -oargs=` in \
b*)echo Hallo Welt!;;k*)echo Ndewo Ụwa!;;d*)echo Ciao mondo!;;z*)echo Moien Welt!;;a*)echo Hei Verden!;;esac
true; 
#xx
#x%"Olá Mundo!"x
#xx+++[++[<+++>->+++<]>+++++++]<<<--.<.<--..<<---.<+++.<+.>>.>+.>.>-.<<<<+.
   	  	   
	
     		  	 	
	
     		 		  
	
     		 				
	
     	     
	
     	    	 
	
     				  	
	
     		  	  
	
     	    	
	
  

Wypróbuj online!

  1. Kaixo Mundua! w Befunge-93
  2. Hej Verden! w rozszczepieniu
  3. Tere maailm! w Unefunge-98
  4. Hei maailma!! w Befunge-98
  5. Hai dunia! w> <>
  6. Hola món! w Ruby
  7. Hola Mundo! w GolfScript
  8. Hallo Welt! w bash
  9. Ndewo Ụwa! w ksh
  10. Ciao mondo! w desce rozdzielczej
  11. Moien Welt! w Zsh
  12. Hei Verden! w popiele
  13. Olá Mundo! w Kardynał
  14. Hello World!w pieprzeniu mózgu, dzięki uprzejmości primo .
  15. Helo Byd! w spacji

Wyjaśnienie

Linia 1 rozróżnia pięć esolangów 2D:

  1. ><>czyta się #jak lustro, owija się w lewo, drukuje "Hai dunia!"i ulega awarii ( @). Wszystkie Grzyby czytają to jako trampolinę i idź w prawo.
  2. Befunge-93 ignoruje ;, drukuje Kaixo Mundua!i wychodzi ( @).
  3. Grzyby z '98 skaczą z pierwszego ;na drugi, a następnie z trzeciego ;na czwarty. wto NOP dla Befunge-98, drukowanie Hei maailma!.
  4. Ale wodzwierciedla wskaźnik instrukcji w Unefunge-98, drukowanie Tere maailm!.
  5. Rozszczepienie wcale się nie zaczyna w lewym górnym rogu. R"Hej Verden!";jest wykonywany. (Inna instrukcja wskaźnik zaczyna się od DIN __END__, ale nie robi nic, potem umiera na ;IN true;).

Ruby widzi `true #{puts'Hola món!'}`, wtedy __END__.

GolfScript widzi `, potem true(NOP), potem komentarz; następnie __END__(NOP); następnie "Hola Mundo!" puts(jest to wykonywane); następnie case(NOP), a następnie `(ulega awarii na pustym stosie).

Powłoki widzą komentarz, następnie wywołanie do true(NOP), następnie wywołanie do nieznanych poleceń __END__i "Hola Mundo!"(który błąd do STDERR, ale wykonanie jest kontynuowane), a następnie caseinstrukcja, która wyróżnia się na podstawie pierwszej litery nazwy bieżącego procesu.

Kardynał to kolejny esolang 2D, który zaczyna się od %, wysyłając 4 adresy IP w górę, w dół, w lewo i w prawo. Wszyscy zostali zabici przez otaczające je xpolecenia, ale jeden drukuje się "Olá Mundo!"przed śmiercią.

Kod pieprzenia mózgu jest kodem Primo, z prefiksem, ++aby przeciwdziałać myślnikom ps -p$$ -oargs=.

Biała spacja w moim kodzie jest wykonywana jako program Whitespace

 push 0
 push 0
label_0:
 push 0
 push 0
 drop
 drop
 push 72; printc
 push 101; printc
 push 108; printc
 push 111; printc
 push 32; printc
 push 66; printc
 push 121; printc
 push 100; printc
 push 33; printc

który drukuje Helo Byd!

EDYCJA : Zapomniałem, że dodawanie UDLRznaków psuje program Rozszczepienia, więc zmieniłem ciągi znaków, aby ich uniknąć.


1
Dostanę cię wkrótce.
Zacharý

1
Myślę, że teraz się poddaję, zrobiłeś niesamowitą robotę.
Zacharý

Czuję się trochę źle, ponieważ w Twoim rozwiązaniu języki współdziałają na wiele ciekawszych sposobów! Naprawdę właśnie wypełniłem swoją odpowiedź „5 skorup” esolangami, które łatwo ze sobą poliglotować…>. <;
Lynn

1
Teraz, jeśli ktokolwiek może poliglotować te języki za pomocą D , na zawsze będę zachwycony. ( #definenie jest rzeczą w D ... która często przeszkadza w poliglocie). Poza tym naprawdę muszę się nauczyć białych znaków.
Zacharý

1
och, rozumiem, teraz jest więcej wielkich liter. Naprawię to trochę, wybierając różne Hello Worlds.
Lynn,


12

7 języków, 221 bajtów

<?php echo'مرحبا بالعالم!';die?>h+#;"!dlereW ollaH"ck,@;
;echo Kaixo Mundua!;                        <@,k+4f"ሰላም ልዑል!"

Բարեւ աշխարհ!
@,k+4f"Përshendetje Botë!";XXXX;"Hello Wêreld!"

Ponieważ ten program zawiera kilka nieprzyjemnych znaków, oto xxd:

00000000: 3c3f 7068 7020 6563 686f 27d9 85d8 b1d8  <?php echo'.....
00000010: add8 a8d8 a720 d8a8 d8a7 d984 d8b9 d8a7  ..... ..........
00000020: d984 d985 2127 3b64 6965 3f3e 682b 233b  ....!';die?>h+#;
00000030: 2221 646c 6572 6557 206f 6c6c 6148 2263  "!dlereW ollaH"c
00000040: 6b2c 403b 0a0c 3b65 6368 6f20 4b61 6978  k,@;..;echo Kaix
00000050: 6f20 4d75 6e64 7561 213b 2020 2020 2020  o Mundua !;
00000060: 2020 2020 2020 2020 2020 2020 2020 2020
00000070: 2020 3c40 2c6b 2b34 6622 e188 b0e1 888b    <@,k+4f"......
00000080: e188 9d20 e188 8de1 8b91 e188 8d21 220a  ... .........!".
00000090: 0ad4 b2d5 a1d6 80d5 a5d6 8220 d5a1 d5b7  ........... ....
000000a0: d5ad d5a1 d680 d5b0 210a 402c 6b2b 3466  ........!.@,k+4f
000000b0: 2250 c3ab 7273 6865 6e64 6574 6a65 2042  "P..rshendetje B
000000c0: 6f74 c3ab 2122 3b58 5858 583b 2248 656c  ot..!";XXXX;"Hel
000000d0: 6c6f 2057 c3aa 7265 6c64 2122 0a         lo W..reld!".

Dlaczego nie <?='مرحبا بالعالم!';die?>? To poprawny PHP (zasadniczo taki sam jak <?php echo ... ?>),
Ismael Miguel

@ IsmaelMiguel, ponieważ zapomniałem o tej funkcji ... tak proste
NieDzejkob,

9

5 języków, 168 bajtów

  //"!nedreV jeH",,,,,,,,,,,@R"Hello World!"*#x
///"!mliaam ereT">:?v; x"!dyB oleH"           %x
//               ^ o<                         x
// >`Sawubona Mhlaba!`;

Myślę, że dwuwymiarowe języki są interesujące.

> <> druki Tere maailm!
Befunge-98 druki Druki wosk Hej Verden!
pszczeli Druki Sawubona Mhlaba!
kardynalne Druki Helo Byd!
rozszczepieniaHello World!

Wypróbuj online! (Kardynał)


2
Widzę tutaj duży potencjał, ponieważ //są komentarze w wielu językach.
Zacharý

@ Zacharý To jedyny powód, dla którego większość z nich istnieje. Obecnie dwa są używane do> <>, a jeden do wosku pszczelego. Te w pierwszych dwóch kolumnach nic nie robią.
KSmarts

Czy potrafisz wyjaśnić proces kontroli wosku pszczelego? Chcę sprawdzić, czy nadaje się do tego wyzwania .
Potato44

@ Potato44 To dwuwymiarowy język, który interpretuje kod jako ograniczoną sześciokątną siatkę, dzięki czemu wskaźniki mogą przesuwać się w 6 kierunkach. Pszczoły (wskaźniki) są odradzane przez postacie */\_i mogą być przekierowywane w ustalonych kierunkach lub przez lusterka lub rotację. Zobacz tutaj po więcej.
KSmarts

Możesz go wyciąć o 1 bajt, ponieważ w przypadku części z wosku pszczelego ;po drugim cofnięciu nie jest konieczne. Pszczoła po prostu ucieka z plastra miodu w prawo.
ML

7

2 języki, 16 znaków, 24 bajty

Cóż, przynajmniej jest to krótszy niż oba ciągi.

L"שלום עולם"33ç«

05AB1E -שלום עולם!

Pomoc, WarDoq! -Hello World!

Pomoc, WarDoq! można dodać dwie liczby i przetestować liczby pierwsze, dlatego jest uważany za prawidłowy język programowania dla tego postu .


IIRC, nie są jednym bajtem w 05AB1E, to tylko z powodu ograniczeń TIO. \
Zacharý

@ Zacharý jesteś pewien? Wiem, że znaki hebrajskie mają w niektórych kodowaniach 1 bajt. Mogą nakładać się kody znaków.
Uriel

Widzisz tu hebrajski ?
Zacharý

@ Zacharý naprawiony (myślę, że to 24 bajty)
Uriel

6

3 języki, 67 62 bajtów

Aby zakwalifikować się do tej nagrody (100 powtórzeń).

x:Helo Byd!
O
y:"Hai dunia!"
u?`h;`4$'5^5D+Asi:^:E+IvIvAB*vhm,

Dodaj ++: Wypróbuj online!

Foo: Wypróbuj online!

Somme: Wypróbuj online!

Wyjaśnienie

Dodaj ++

Dodaj ++ widzi:

x:Helo Byd!
O

xCiąg wyjściowy ”

y:"Hai dunia!"

„Ustaw y na inny ciąg”

u?`h;`4$'5^5D+Asi:^:E+IvIvAB*vhm,

„Idk coś dziwnego, popełniam błąd”

bla

Foo widzi:

x:Helo Byd!
O
y:"Hai dunia!"

„O, cytaty, wydam je”.

u?`h;`4$'5^5D+Asi:^:E+IvIvAB*vhm,

„Ee… coś o trybie? Idk, popełniam błąd.”

Somma

Somme widzi, cóż, to:

8s+vi:4+vhIvE-Asi:^:E+IvIvAB*vhm,

Każda kolumna jest konwertowana na punkty kodowe, następnie odejmuje się od nich 32, a następnie pobiera się modulo 95. To odpowiada tym znakom, które wypisują „Hei Verden!”


Tydzień minął, a ty jesteś najkrótszą (i jedyną) konkurencyjną odpowiedzią, więc gratuluję nagrody!
caird coinheringaahing

@cairdcoinheringaahing Thanks! : D
Conor O'Brien


4

4 języki, 115 bajtów

print ((("b" + "0" == 0)and eval('"Hallo Wereld!"'))or(0 and"Hello World!"or(1/2and"Hei Verden!"or"Hej Verden!")));

Perl 5 daje Hallo Wereld!- TIO

Ruby daje Hello World!- TIO

Python 2 daje Hej Verden!- TIO

Python 3 daje Hei Verden!- TIO


107 bajtów -print (((“b”+”0"==0)and eval('"Hallo Wereld!"'))or(0and"Hello World!”or((1/2and"Hei"or"Hej")+" Verden!")));
Jollywatt,

4

Cztery języki, aż 650 bajtów

//iiciccepepceaiiiaiaiaicccsascciijceeeeeejccijjccjceaajaajcccjeeejaajaaijcccej
//[
/*
GOTO end
*/
//pis
//p
//p
//\u000Apublic class Main{public static void main(String[]a){System.out.print("Salut Lume!");}}
/*
lblend
print Hola Mundo!
//s
*/
//]
//s
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.++++++++++++++++++++++++++++++++++++++.--------.++++++++++++++.-------------------------------------------------------------------------------.+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.++.-.----------.+++++++++++.------------------------------------------------------------------------------.

Java daje „Salut Lume!” Spróbuj!

SILOS daje „Hola Mundo” Wypróbuj!

Brainfuck daje „Ciao mondo!” Spróbuj!

(Kod alphuck jest modyfikowany ze strony Esolangs na Alphucku )

Alphuck daje „Hello World!” Spróbuj!

Linia zaczynająca się od \ u000A to kod Java. Kodem w pierwszej linii jest kod Alphuck, który zignoruje resztę kodu (o ile „p” i „s” są zbalansowane. Odpowiednia linia dla SIL / SILOS to „print Hola Mundo” i kod pieprzenia mózgu znajduje się na końcu i zignoruje resztę kodu.


1
Myślę, że możesz zagrać w golfa w kodzie BF, używając stałych podanych na tej stronie i technik tam zastosowanych.
cole

@cole Staram się rzucić okiem na kod bf, kiedy mam więcej czasu na jego optymalizację. Zasadniczo nie sądzę, że wystarczy użyć stałych, będę musiał zdefiniować relację nawrotu
Rohan Jhunjhunwala,

1
78 dla „Ciao mondo!”: Przy +>++>+>+++[+++++[>+++++++++++>++++<<-]+++<]>>--.>+.>.>-.>.<--.++.-.<+++.>+.>+.użyciu sekwencji bajtów [69, 104, 97, 112, 32]
primo

4

5 języków, 213 bajtów

Postanowiłem sam napisać krótką odpowiedź.

#include<stdio.h>
#define hint(x)int main(){auto i=.5;puts(i?"Hallo Welt!":"Hei maailma!");}
#define R "Pozdrav svijete!";
#if 0
hint=print
goto=len
s="Tere maailm!"
goto("endif")
s="Hallo Wereld!";
#endif
hint(s)

Języki:

C:                                       Hei maailma!      (Finnish)
C++:                                     Hallo Welt!       (German)
Python 3:                                Hallo Wereld!     (Dutch)
Operation Flashpoint scripting language: Tere maailm!      (Estonian)
Fission:                                 Pozdrav svijete!  (Croatian)

C i C ++ widzą kod jako:

#include<stdio.h>
#define hint(x)int main(){auto i=.5;puts(i?"Hallo Welt!":"Hei maailma!");}
#define R "Pozdrav svijete!"; // Unused macro
hint(s)

auto i=.5;jest (w efekcie) równy int i=0;w C, ale równy double i=0.5;w C ++.

Wypróbuj online! (jako C)

Wypróbuj online! (jako C ++)

Python 3 widzi kod jako:

hint=print
goto=len
s="Tere maailm!"
goto("endif")         # Calculate string length and discard the result.
s="Hallo Wereld!"
hint(s)

Wypróbuj online!

Język skryptowy OFP widzi:

; (A semicolon at the beginning of a line comments the line in a script.)

; Four labels with strange names.
#include<stdio.h>
#define hint(x)int main(){auto i=.5;puts(i?"Hallo Welt!":"Hei maailma!");}
#define R "Pozdrav svijete!";
#if 0

; Assign a null value to "hint", no practical effect. Same for "goto".
hint=print
goto=len

; Assign the string to variable "s".
; I would like to have used the Czech phrase for OFP (because it's a Czech game),
; but it didn't recognize the 'ě' and printed a '?' instead.
s="Tere maailm!"

; Jump to label "endif".
goto("endif")

; This reassignment of "s" gets skipped.
s="Hallo Wereld!";

; Declare a label called "endif".
#endif

; Print the string "s".
hint(s)

Rozszczepienie widzi:

R "Pozdrav svijete!";

Wypróbuj online!


2

3 języki, 184 181 bajtów

Działa tylko raz - musisz wyczyścić listę, aby uruchomić ją ponownie.

when gf clicked
add<[]=[]>to[c v
if<(join(item(1 v)of[c v])[d])=[1d
say[Helo Byd!
else
repeat(300000
add[]to[c v
end
if<(length of[c v])>[250000
say[Hello world!
else
say[Hai dunia!

Scratch 1.4: Helo Byd!

Scratch 2.0: Hello world!

Scratch 3.0 beta w momencie odpowiedzi: Hai dunia!

Wyjaśnienie

W Scratch 1.4, dodając wartość logiczną do listy dodaje 1lub 0, ale w 2.0 i up dodaje truealbo false, ale podczas sprawdzania, czy pozycja jest równa 1z <[] = []>, zwróci true, jeśli element jest albo 1albotrue , więc dodajemy do niego kolejny list i to sprawdzamy.

W Scratch 3.0 listy mają maksymalny rozmiar 200 000 elementów, więc po prostu dodajemy kilka elementów i sprawdzamy, czy lista jest tak długa.


1

3 języki, 61 bajtów

;“,ḷṅḳȦ»Ḋḷ“
x:Hai dunia!
O
y:"Helo Byd!"
;”

Dodaj wyjścia ++Hai dunia!

Jelly wyjściaHello World!

Wyjścia FooHelo Byd!

To, że ustawiłem nagrodę, nie oznacza, że ​​nie mogę wziąć udziału: D (ab) używa tej genialnej sztuczki ustawiania strun znalazł Conor dla Add ++

Jak to działa

Dodaj ++

;“,ḷṅḳȦ»Ḋḷ“     ; A comment. This does nothing
x:Hai dunia!    ; Set the x accumulator to the string "Hai dunia!"
O               ; Output x
y:"Helo Byd!"   ; Set the y accumulator to the string "Helo Byd!"
;”              ; Another comment

Galareta

Komentarze w Galaretce mogą być tworzone przy użyciu składni ḷ“comment”, która ignoruje kod Add ++ i Foo. Kod, który jest faktycznie wykonywany przez Jelly, to

;“,ḷṅḳȦ»Ḋ - Main link. Arguments: None
 “,ḷṅḳȦ»  - Yield the string "Hello World!"
;         - Append 0, yielding "0Hello World!"
        Ḋ - Remove the first character, yielding "Hello World!"

bla

Foo ignoruje tutaj wszystkie znaki "Helo Byd!", które, jak w cudzysłowie, są wyprowadzane.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.