Hello World dalam Berbagai Bahasa


72

Tugas

Buat program atau fungsi yang valid dalam berbagai bahasa pemrograman, dan ketika dikompilasi / ditafsirkan sebagai bahasa yang berbeda, output "Halo, Dunia!" dalam bahasa alami yang berbeda.

Misalnya, solusi yang valid mungkin menampilkan Hello World!(bahasa Inggris) saat dikompilasi dan dijalankan sebagai C, Hallo Welt!(Jerman) saat dikompilasi dan dijalankan sebagai C ++ dan 你好世界!(Cina) saat dijalankan sebagai Python.

Aturan

Untuk menghindari ambiguitas tentang validitas jawaban, di bawah ini adalah daftar versi frasa yang diperbolehkan dalam beberapa bahasa. Daftar ini terdiri dari frasa dalam bahasa yang Google Translate memiliki terjemahan frasa yang diverifikasi komunitas (saat tulisan ini dibuat). *

Keakuratan terjemahan ini masih bisa diperdebatkan, tetapi itulah yang akan digunakan oleh tantangan ini. String yang dicetak harus mengikuti persis format di bawah ini (dengan pengecualian spasi spasi awal atau akhir).

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!

Jadi ada 74 bahasa yang bisa digunakan.

Kriteria Kemenangan

Solusi yang dapat menghasilkan frase dalam jumlah bahasa terbanyak akan menang. Dalam kasus seri, solusi yang lebih pendek (dalam byte) menang.


* Terjemahan untuk Malagasi dan Malta ditandai dengan diverifikasi komunitas, tetapi jelas tidak benar (satu hanya "Hello World!" Dan yang lainnya "Hello dinja!", Tetapi "Hello!" Saja diterjemahkan menjadi "Bongu!"). Ini dikecualikan. Juga beberapa bahasa (Arab, Ibrani, Pashto, Persia, dan Yiddish) membaca dari kanan ke kiri di Google Translate, tetapi ketika disalin di sini mereka membaca dari kiri ke kanan. Saya harap tidak apa-apa.


Apakah kami diizinkan menggunakan metode penghitungan byte yang konsisten yang tidak digunakan oleh bahasa pemrograman apa pun yang digunakan?
Zacharý

@ Zacharý Saya kira setiap pengkodean tunggal yang memiliki representasi untuk semua karakter yang digunakan dalam jawaban dapat digunakan untuk menghitung byte. Atau mungkin byte harus dihitung dalam UTF-8 untuk setiap jawaban?
Steadybox

1
Jika saya memiliki bahasa yang menggunakan pengkodean berbeda dari yang lain, haruskah saya mengonversi kode ke bahasa halaman itu atau menggunakan representasi byte yang sama? (yang akan sulit karena beberapa byte menghasilkan UTF-8 salah)
NieDzejkob

2
@NieDzejkob Saya pikir aturan untuk polyglot adalah memiliki satu file dengan bytesize yang dapat diukur dan dapat dijalankan oleh beberapa interpreter / compiler. ( contoh )
user202729

4
Perhatikan bahwa tanda seru dalam bahasa Cina dan Jepang ( , U + FF01) berbeda dari yang lain ( !, U + 0021).
alephalpha

Jawaban:


32

23 Befunges, 713 byte

Satu-satunya bahasa yang saya benar-benar tahu adalah Befunge, jadi alih-alih beberapa bahasa, saya hanya menggunakan beberapa implementasi Befunge. Saya percaya ini masih berlaku di bawah aturan PPCG, yang menganggap bahasa akan ditentukan oleh implementasinya .

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!!!!!!!!!!!!!!!!!

Hal yang membuat frustrasi tentang Befunge, adalah bahwa meskipun ada implementasi referensi open source, dan bahasanya sendiri sangat sederhana, tidak ada satu pun penerjemah pihak ketiga (yang saya tahu) yang persis sesuai dengan perilaku referensi. Setiap implementasi gagal dengan cara yang berbeda.

Di sisi positifnya, ini memberi kita kesempatan untuk mengembangkan satu kode yang akan menghasilkan hasil yang berbeda di hampir setiap penerjemah. Dan itulah yang saya coba dalam program di atas.

Jika ada yang tertarik untuk memverifikasi hasil, saya telah mencoba untuk mengelompokkan berbagai implementasi ke dalam kategori berdasarkan seberapa mudah mereka untuk bangun dan berjalan (misalnya beberapa orang mungkin tidak dapat menjalankan binari Windows, atau mungkin tidak mau membangun dari sumber, tetapi semua orang harus dapat menguji penerjemah online).

Penerjemah Online

Tidak diperlukan instalasi. Biasanya hanya masalah menempelkan kode dan mengklik satu atau dua tombol. Tetapi perhatikan bahwa beberapa di antaranya sangat lambat, jadi mungkin perlu waktu untuk menyelesaikan eksekusi.

Arena Bermain Befunge Alexios - Salamu Dunia!

Klik Clear...tombol dan tempel kode ke dalam kolom input. Alihkan Editsakelar untuk mengaktifkan juru bahasa, lalu klik Runtombol untuk mulai menjalankan.
Perhatikan bahwa situs ini mungkin tidak akan berfungsi di Browser selain Chrome.

Befungius - Molo Lizwe!

Rekatkan kode ke bidang input, pastikan untuk menimpa kode yang ada. Kemudian klik Runtombol untuk menjalankan.

Befunge 93 Interpreter David Klick - Sannu Duniya!

Rekatkan kode ke bidang input Playfield , lalu klik Runtombol untuk mulai menjalankan.

Befunge-93 Interpreter Ian Osgood - Salut Lume!

Rekatkan kode ke bidang input di bawah Showtombol, pastikan untuk menimpa @yang sudah ada. Klik Showtombol untuk mengimpor kode, lalu klik Runtombol untuk mulai menjalankan.

jsFunge IDE - Hej Verden!

Pertama tutup dialog Bantuan , lalu klik tombol Buka / Impor bilah alat (kedua dari kiri), rekatkan kode, dan klik OK. Untuk menjalankan, klik tombol Jalankan Mode (keempat dari kiri), dan kemudian Mulai (kelima dari kiri).

Juga perhatikan bahwa beberapa penerjemah berbasis konsol sebenarnya tersedia di TIO, jadi meskipun mereka bukan penerjemah online teknis, mereka dapat diuji secara online. Bagi mereka yang didukung (saat ini BEF, FBBI, MTFI dan PyFunge), saya telah menyertakan Try It Online! tautan di sebelah entri mereka.

IDE Java

Anda perlu menginstal run-time Java untuk ini, tetapi mereka secara teoritis harus bekerja pada platform apa pun. Hanya diuji pada Windows sekalipun.

Applet Befunge Visual Ashley Mills - Moien Welt!

Awalnya ini adalah applet online yang sayangnya tidak lagi tersedia, tetapi Anda masih dapat mengunduh toples dan menjalankannya secara lokal sebagai aplikasi desktop. Anda harus menempelkan kode ke jendela Program Editor , lalu klik Converttombolnya, diikuti Runtombolnya.

WASABI: Penerjemah Befunge Bein Asinine yang Luar Biasa dari Wasabi - Hallo Welt!

Untuk menempelkan kode, klik kanan di sudut kiri atas jendela editor (itu harus paling kiri atas) dan pilih item menu Tempel . Kemudian aktifkan kotak centang Kecepatan Penuh (jika tidak akan selamanya), dan klik Run!tombol untuk mulai menjalankan.

YABI93: Penerjemah Befunge93 Lagi - Halo Dunia!

Tekan Ctrl+ A, Ctrl+ Vuntuk menempelkan kode ke jendela editor, pastikan untuk menimpa sumber default. Kemudian klik Starttombol untuk mulai menjalankan.

IDE Windows

Anda biasanya memerlukan Windows untuk ini, walaupun dalam beberapa kasus mungkin ada binari yang tersedia untuk sistem operasi lain. Saya tidak bisa menjanjikan kode akan bekerja pada platform lain.

BefunExec - Hello World!

Anda tidak dapat menempelkan kode ke editor, jadi pertama-tama Anda harus menyimpannya di disk di suatu tempat. Kemudian dari IDE, gunakan menu File> Open untuk memuat kode dari disk, dan pilih menu Simulasi> Run / Pause untuk menjalankannya.

BeQunge - Labas pasauli!

Tekan Ctrl+ Vuntuk menempelkan kode, lalu klik tombol Bilah alat Debug (roda gigi biru) untuk mulai menjalankan. Setelah panel Debugger muncul, Anda ingin mengatur Kecepatan ke maksimum - tombol di sebelah kanan bilah geser - jika tidak, akan butuh selamanya untuk menyelesaikannya.

Jamur - Tere maailm!

Tekan Ctrl+ Vuntuk menempelkan kode, lalu tekan F5untuk menjalankannya.

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

Anda tidak dapat menempelkan kode ke editor, jadi pertama-tama Anda harus menyimpannya di disk di suatu tempat. Kemudian dari IDE, tekan Ctrl+ Ountuk membuka browser file dan memuat kode dari disk, dan tekan F5untuk menjalankannya.

Aplikasi Konsol Windows

Sekali lagi ini biasanya memerlukan Windows, meskipun platform lain mungkin tersedia, tetapi tidak dijamin berfungsi.

Dalam semua kasus, kode harus disimpan ke file pada disk dan nama file diteruskan ke penerjemah sebagai parameter baris perintah ( source.bf dalam contoh baris perintah yang diberikan di bawah). Juga perhatikan bahwa beberapa di antaranya secara teknis Befunge-98 interpreter, dan harus dijalankan dengan opsi baris perintah tertentu untuk memaksa mode kompatibilitas Befunge-93. Jika Anda tidak melakukan itu, Anda tidak akan mendapatkan hasil yang benar.

BEFI: Penerjemah Befunge-93 Rugxulo - Hei Verden!

Garis komando: bef93w32 -q source.bf

CCBI: Menyesuaikan Interpreter Befunge-98 Serentak - Sveika pasaule!

Baris perintah: ccbi --befunge93 source.bf

MTFI: Magus Technica Funge Interpreter - Hai dunia!

Baris perintah: mtfi -3 source.bf( Coba online! )

Aplikasi Konsol Python dan PHP

Ini membutuhkan bahasa scripting yang sesuai diinstal - baik Python atau PHP.

Befungee - Helo Byd!

Garis komando: befungee.py source.bf

PyFunge - Halo Dunya!

Baris perintah: pyfunge -v 93 source.bf( Coba online! )

Bephunge - Bonjour monde!

Garis komando: php bephunge.phps source.bf

Aplikasi Konsol Sumber Saja

Ini perlu dibangun dari sumber, dan itu biasanya paling mudah dengan lingkungan * nix-like. Pada Windows saya menggunakan Subsistem Windows untuk Linux .

BEF: Distribusi Referensi Befunge-93 - Ciao mondo!

Baris perintah: bef -q source.bf( Coba online! )

cfunge - Sawubona Mhlaba!

Garis komando: cfunge -s 93 source.bf

FBBI: Intepreter Flaming Bovine Befunge-98 - Hei maailma!

Baris perintah: fbbi -93 source.bf( Coba online! )

Jamur - Kaixo Mundua!

Garis komando: fungi source.bf

Rc / Funge-98 - Salom Dunyo!

Garis komando: rcfunge -93 source.bf

Bagaimana itu bekerja

Tantangan dengan ini adalah menemukan jumlah tes paling sedikit yang memberikan perbedaan paling banyak antara penafsir. Pada akhirnya turun menjadi empat urutan tes utama:

  1. Yang pertama adalah memori out-of-bounds yang dibaca dari offset -1,1. Secara teori ini harus selalu mengembalikan 32 (ruang ASCII), tetapi sebenarnya ada 10 variasi dalam praktik. Tes ini diperumit oleh fakta bahwa dua penerjemah jatuh pada bacaan out-of-bounds, sehingga beberapa tes kasus khusus (pembulatan pembagian dan ruang menjembatani) diperlukan untuk memaksa mereka berdua kembali ke dalam batas.

  2. Urutan kedua adalah tes fungsi Befunge-98 - secara khusus instruksi ;dan '. Hampir semua penterjemah adalah Befunge-93, atau dijalankan dalam mode kompatibilitas Befunge-93, jadi mereka harus mengabaikan instruksi tersebut. Dalam praktiknya ada 6 cara berbeda di mana urutan ini ditafsirkan.

  3. Tes ketiga memeriksa rentang sel memori. Dalam juru bahasa referensi, sel-sel memori ditandatangani 8-bit, tetapi implementasi lain bervariasi dalam kisaran dari 8-bit untuk tidak terikat, beberapa ditandatangani dan beberapa tidak ditandatangani. Namun, untuk keperluan tes ini, kami hanya harus membedakan antara 5 varian tersebut.

  4. Urutan keempat dan terakhir adalah kombinasi dari tes pembagian bawah dan negatif. Ada beberapa cara yang menyebabkan interpreter mendapatkan kesalahan, dan setidaknya ada 3 cara berbeda di mana instruksi pembagian dan modulo diterapkan, tetapi hanya ada 3 kombinasi yang kami perhatikan di sini.

Setiap urutan ini menghasilkan satu angka, dan keempat angka tersebut digabungkan (melalui beberapa tabel aritmatika dan terjemahan dasar) untuk menghasilkan nilai akhir dalam kisaran 0 hingga 22. Nilai itu kemudian dapat digunakan sebagai indeks untuk mencari pesan aktual menampilkan.


Metode ciak yang cantik, tapi tidak mungkin aku mengalahkan ini. Sekarang kita mungkin bisa menyesuaikan ini dan menekan varian BrainFuck di sana.
Zacharý

10
Saya yakinkan Anda itu tidak semudah yang Anda bayangkan. Ini adalah tantangan hanya untuk menjalankan kode tanpa menabrak 20+ penerjemah kereta. Jika saya ingin menjadi murah, saya akan menggunakan Befunge-98 dan hanya menanyakan capaian implementasi ( 3y).
James Holderness

2
Saya merujuk ke murah seperti pada bagaimana Anda hanya menggunakan befunges, tapi ini sebenarnya sangat mengesankan.
Zacharý

Ini sangat mengesankan, tetapi apakah mungkin untuk menjelaskan mengapa penafsir yang berbeda memperlakukannya secara berbeda? Mungkin tidak semua 23 versi, tetapi beberapa contoh perbedaan perilaku yang Anda eksploitasi, setidaknya?
Jack Brounstein

1
@JackBrounstein Saya telah menambahkan sedikit penjelasan di akhir jawaban.
James Holderness

64

16 bahasa, 1363 byte

 #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!?%?"

Cobalah online!

(gunakan "ganti bahasa" untuk mengubah bahasa)

  • Python 3 = Halo Dunia! (Bahasa Indonesia)

  • Python 2 = Hej Verden! (Orang Denmark)

  • Python 1 = Hai dunia! (Melayu)

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

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

  • Objective C (clang) = Hallo Welt! (Jerman)

  • Brainfuck = Halo Dunia! (Bahasa Inggris, tentu saja)

  • Befunge-93 = Salut Lume! (Rumania)

  • Ruby = Moien Welt! (Luxemburgish)

  • Bash = Salom Dunyo! (Uzbek)

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

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

  • Kardinal = Hallo Wereld! (Belanda)

  • Alphuck = Ciao mondo! (Italia)

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

  • Fission = Pozdrav svijete! (Kroasia)

Setiap tips bermain golf disambut (terutama di Brainfuck) !!

Terima kasih kepada @JonathanFrech untuk -1 byte! Juga, terima kasih kepada @ovs untuk -40 byte!

Bagaimana (ide umum, saya benar-benar lupa spesifik) ??

Bahasa dapat dimasukkan ke dalam empat grup:

  • Makro: C, C ++, Tujuan C
  • Komentar: Python3, Python2, Python1, Ruby, Bash
  • Dimensi: Befunge-93, Befunge-98, Unefunge-98, Cardinal,> <>, Fission
  • Vulgar: Brainfuck, Alphuck

Bahasa Makro dilihat #sebagai awal dari arahan preprosesor. Ini digunakan karena tiga alasan: kode rumah untuk grup lain, untuk membedakan antara bahasa makro, dan untuk benar-benar mendefinisikan makro. Ketiganya digunakan //sebagai komentar, jadi setelah itu kami menyimpan kode untuk grup lain. Juga, garis miring terbalik melanjutkan komentar dalam bahasa-bahasa ini.

Bahasa Komentar dilihat #sebagai awal dari sebuah komentar. The quirk di sini adalah tanda kutip tiga, yang membedakan Python dari Ruby dari Bash. Dan untuk membedakan Python 1 dari 2 dari 3, kami menggunakan fitur pembeda di ketiganya, bersama dengan berbagai output. Oh ya, ada juga itu __END__. Ini digunakan untuk mengakhiri kode untuk beberapa (tidak ingat persis yang mana) dari bahasa Komentar.

Bahasa Dimensi dibedakan dengan cara yang sulit untuk dijelaskan. Kita harus mengetahui secara spesifik setiap bahasa untuk mengetahuinya. Misalnya, #hanya lompatan di fungeoids, sementara ia melakukan berbagai hal dalam bahasa lain. Kode ini berserakan di mana-mana untuk bahasa-bahasa ini.

Dan akhirnya, kami tiba di bahasa Vulgar. Keduanya mengabaikan semua yang tidak ada dalam set karakter yang valid. Tindakan menyeimbangkan harus dimainkan dengan bahasa-bahasa ini dan yang lain, karena kode sudah berisi karakter dalam set karakter.


Bisakah Anda menggabungkan string dalam pengiriman Python menjadi satu string besar dan menggunakan slicing string untuk mengindeks ke dalamnya? mis "abcabcabc"[n::3] -> "aaa" for n = 0, "bbb" for n = 1. Saya merasa seperti mungkin ada cara Anda bisa mengiris dan menyimpan byte dengan memasukkan karakter yang digandakan dalam mengiris entah bagaimana (seperti H dan!).
cole

2
Keren! tanda kurung di ["Hai dunia!","Hej Verden!","Halo Dunia!"]koma koma!
Uriel

3
Mereka tidak perlu, saya menyalahgunakan fakta bahwa TIO brainfuck default 0 (atau tidak melakukan apa-apa, saya tidak tahu) jika kehabisan input dari pengguna. Ada 9 koma tanpa pelindung lainnya yang menyalahgunakan fakta ini.
Zacharý

2
Apakah ada alasan Anda tidak menggunakan +[++[<+++>->+++<]>+++++++]<<<--.<.<--..<<---.<+++.<+.>>.>+.>.>-.<<<<+.untuk bagian BF Anda? ( sumber )
Buah Esolanging

1
Saya telah menambahkan penjelasan, untuk siapa saja yang ingin melihatnya.
Zacharý

38

15 bahasa, 532 byte

# ;"!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+++[++[<+++>->+++<]>+++++++]<<<--.<.<--..<<---.<+++.<+.>>.>+.>.>-.<<<<+.
   	  	   
	
     		  	 	
	
     		 		  
	
     		 				
	
     	     
	
     	    	 
	
     				  	
	
     		  	  
	
     	    	
	
  

Cobalah online!

  1. Kaixo Mundua! di Befunge-93
  2. Hej Verden! dalam fisi
  3. Tere maailm! di Unefunge-98
  4. Hei maailma!! di Befunge-98
  5. Hai dunia! di> <>
  6. Hola món! di Ruby
  7. Hola Mundo! dalam GolfScript
  8. Hallo Welt! di bash
  9. Ndewo Ụwa! dalam ksh
  10. Ciao mondo! terburu-buru
  11. Moien Welt! dalam zsh
  12. Hei Verden! dalam abu
  13. Olá Mundo! dalam Kardinal
  14. Hello World!di brainfuck, milik primo .
  15. Helo Byd! di Whitespace

Penjelasan

Baris 1 membedakan antara lima esolang 2D:

  1. ><>dibaca #sebagai cermin, membungkus ke kiri, cetak "Hai dunia!"dan crash ( @). Semua Jamur membacanya sebagai trampolin dan ke kanan.
  2. Befunge-93 mengabaikan ;, mencetak, Kaixo Mundua!dan keluar ( @).
  3. Jamur '98 melompat dari yang pertama ;ke yang kedua, lalu dari yang ketiga ;ke yang keempat. wadalah NOP untuk Befunge-98, percetakan Hei maailma!.
  4. Tetapi wmencerminkan penunjuk instruksi di Unefunge-98, mencetak Tere maailm!.
  5. Fisi sama sekali tidak dimulai di sudut kiri atas. R"Hej Verden!";dieksekusi. (Petunjuk instruksi lain dimulai dari Ddalam __END__, tetapi tidak melakukan apa-apa kemudian mati ke ;dalam true;.)

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

GolfScript melihat `, lalu true(NOP), lalu komentar; lalu __END__(NOP); lalu "Hola Mundo!" puts(ini dieksekusi); then case(NOP), then `(crash pada stack kosong).

Kerang melihat komentar, lalu doa ke true(NOP), lalu doa ke perintah yang tidak diketahui __END__dan "Hola Mundo!"(yang kesalahan untuk STDERR tetapi eksekusi berlanjut), kemudian casepernyataan yang membedakan berdasarkan huruf pertama dari nama proses saat ini.

Kardinal adalah esolang 2D lain yang dimulai dari %, mengirimkan 4 IP ke atas, bawah, kiri, dan kanan. Mereka semua terbunuh oleh xperintah di sekitarnya , tetapi satu cetak "Olá Mundo!"sebelum mati.

Kode brainfuck adalah primo, diawali dengan ++untuk menangkal tanda hubung ps -p$$ -oargs=.

Ruang kosong dalam kode saya dieksekusi sebagai program Ruang Putih

 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

yang mencetak Helo Byd!

EDIT : Saya lupa bahwa menambahkan UDLRkarakter merusak program Fission, jadi saya telah mengubah string untuk menghindari ini.


1
Saya akan segera menghubungi Anda.
Zacharý

1
Saya pikir saya menyerah sekarang, Anda melakukan pekerjaan yang luar biasa.
Zacharý

Saya merasa agak buruk, karena solusi Anda membuat bahasa berinteraksi jauh lebih menarik! Saya benar-benar hanya mengisi jawaban "5 cangkang" saya dengan esolang yang mudah disatukan satu sama lain ...>. <;
Lynn

1
Sekarang, jika ada yang bisa polyglot bahasa ini dengan D , saya akan selamanya kagum. ( #definebukan hal di D ... yang menghalangi banyak polyglotting). Juga, saya benar-benar perlu belajar spasi.
Zacharý

1
oh, ada lebih banyak huruf besar sekarang, saya mengerti. Saya akan memperbaikinya sedikit dengan memilih Hello Worlds yang berbeda.
Lynn


12

7 bahasa, 221 byte

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

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

Karena program ini mengandung beberapa karakter jahat, berikut ini adalah 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!".

Mengapa tidak <?='مرحبا بالعالم!';die?>? Ini PHP yang valid (dasarnya sama dengan <?php echo ... ?>),
Ismael Miguel

@IsmaelMiguel karena saya lupa tentang fitur itu ... sesederhana itu
NieDzejkob

9

5 bahasa, 168 byte

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

Saya pikir bahasa 2 dimensi menarik.

> <> cetakan Tere maailm!
Befunge-98 cetakan Cetakan Hej Verden!
lilin lebah Sawubona Mhlaba!
Kardinal mencetak cetakan Helo Byd!
FisiHello World!

Cobalah online! (Kardinal)


2
Saya melihat potensi besar di sini, karena //ada komentar dalam banyak bahasa.
Zacharý

@ Zacharý. Itulah satu-satunya alasan kebanyakan dari mereka ada di sana. Saat ini, dua digunakan untuk> <> dan satu untuk Beeswax. Yang di dua kolom pertama tidak melakukan apa pun.
KSmarts

Bisakah Anda menjelaskan aliran kontrol untuk Beeswax? Saya ingin melihat apakah itu cocok untuk tantangan ini .
Potato44

@ Potato44 Ini adalah bahasa 2-d yang menafsirkan kode sebagai kisi heksagonal terbatas, sehingga pointer dapat bergerak dalam 6 arah. Lebah (pointer) */\_dihasilkan oleh karakter dan dapat diarahkan ke arah tertentu atau dengan cermin atau rotasi. Lihat di sini untuk lebih lanjut.
KSmarts

Anda dapat memotongnya dengan 1 byte karena untuk bagian lilin lebah ;setelah backtick kedua tidak diperlukan. Lebah lari dari sarang madu ke kanan.
ML

7

2 bahasa, 16 karakter, 24 byte

Yah, setidaknya itu lebih pendek dari kedua string.

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

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

Tolong, WarDoq! -Hello World!

Tolong, WarDoq! dapat menambahkan dua angka dan menguji bilangan prima, sehingga dianggap sebagai bahasa pemrograman yang valid per posting meta ini .


IIRC, mereka bukan satu byte di 05AB1E, itu hanya karena keterbatasan TIO. \
Zacharý

@ Zacharý Anda yakin? Saya tahu karakter Ibrani menjadi 1 byte dalam beberapa pengkodean. Bisa jadi tumpang tindih kode char.
Uriel

Apakah Anda melihat bahasa Ibrani di sini ?
Zacharý

@ Zacharý diperbaiki (Saya pikir itu akan membuat 24 byte)
Uriel

6

3 bahasa, 67 62 byte

Untuk memenuhi syarat untuk hadiah ini (100 rep).

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

Tambah ++: Cobalah online!

Foo: Coba online!

Somme: Coba online!

Penjelasan

Tambahkan ++

Tambahkan ++ lihat:

x:Helo Byd!
O

" xString keluaran "

y:"Hai dunia!"

"Setel y ke string lain"

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

"idk sesuatu yang aneh, aku akan salah"

Foo

Foo melihat:

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

"Oo, kutipan, aku akan menampilkannya."

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

"Uh ... sesuatu tentang mode? Idk, aku akan salah."

Somme

Somme melihat, yah, ini:

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

Setiap kolom dikonversi menjadi titik kode, kemudian 32 dikurangkan dari mereka, lalu masing-masing diambil modulo 95. Ini sesuai dengan karakter ini, yang mencetak, "Hei Verden!"


Nah, minggu sudah habis, dan Anda adalah jawaban yang paling pendek (dan satu-satunya) yang bersaing, jadi selamat atas hadiahnya!
caird coinheringaahing

@cairdcoinheringaahing Terima kasih! : D
Conor O'Brien


4

4 bahasa, 115 byte

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

Perl 5 memberi Hallo Wereld!- TIO

Ruby memberi Hello World!- TIO

Python 2 memberi Hej Verden!- TIO

Python 3 memberi Hei Verden!- TIO


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

4

Empat Bahasa, 650 byte kekalahan

//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 memberi "Salut Lume!" Cobalah!

SILOS memberi "Hola Mundo" Cobalah!

Brainfuck memberikan "Ciao mondo!" Cobalah!

(Kode alphuck dimodifikasi dari halaman Esolangs di Alphuck )

Alphuck memberikan "Hello World!" Cobalah!

Baris awal \ u000A adalah kode Java. Kode on line satu adalah kode Alphuck, yang akan mengabaikan sisa kode (selama "p" dan "s" seimbang. Baris yang relevan untuk SIL / SILOS adalah "print Hola Mundo", dan kode brainfuck ada di akhir dan akan mengabaikan sisa kode.


1
Saya pikir Anda dapat membuat kode BF beberapa menggunakan konstanta yang disediakan oleh halaman ini dan teknik yang digunakan di sana.
cole

@cole Saya mencoba untuk melihat kode bf ketika saya mendapatkan lebih banyak waktu untuk mengoptimalkannya. Pada dasarnya, saya tidak berpikir itu cukup hanya dengan menggunakan konstanta, saya harus mendefinisikan hubungan perulangan
Rohan Jhunjhunwala

1
78 untuk 'Ciao mondo!': +>++>+>+++[+++++[>+++++++++++>++++<<-]+++<]>>--.>+.>.>-.>.<--.++.-.<+++.>+.>+.Menggunakan urutan byte [69, 104, 97, 112, 32]
primo

4

5 bahasa, 213 byte

Saya memutuskan untuk mencoba dan menulis sendiri jawaban kecil.

#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)

Bahasa:

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 dan C ++ melihat kode sebagai:

#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;sama (dalam efek) sama dengan int i=0;di C, tetapi sama dengan double i=0.5;di C ++.

Cobalah online! (sebagai C)

Cobalah online! (sebagai C ++)

Python 3 melihat kode sebagai:

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

Cobalah online!

Bahasa scripting OFP melihat:

; (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)

Fission melihat:

R "Pozdrav svijete!";

Cobalah online!


2

3 bahasa, 184 181 byte

Hanya berfungsi sekali - Anda harus menghapus daftar untuk menjalankannya lagi.

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!

Gores 1.4: Helo Byd!

Gores 2.0: Hello world!

Gosok 3.0 beta pada saat jawaban ini: Hai dunia!

Penjelasan

Di Awal 1.4, menambahkan boolean ke daftar menambah 1atau 0, tetapi di 2.0 dan di atasnya menambah trueatau false, tetapi ketika memeriksa apakah item sama 1dengan <[] = []>, itu akan mengembalikan true jika item tersebut salah satu 1atau true, jadi kami menambahkan surat lain untuk itu dan memeriksanya.

Di Scratch 3.0, daftar memiliki ukuran maksimum 200.000 item, jadi kami hanya menambahkan banyak item dan melihat apakah daftar itu panjang.


1

3 bahasa, 61 byte

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

Tambahkan ++ keluaranHai dunia!

Output jeliHello World!

Keluaran FooHelo Byd!

Hanya karena saya mengatur karunia tidak berarti saya tidak dapat mengambil bagian: D (ab) menggunakan trik pengaturan string yang brilian yang ditemukan Conor untuk Add ++

Bagaimana itu bekerja

Tambahkan ++

;“,ḷṅḳȦ»Ḋḷ“     ; 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

Jeli

Komentar dalam Jelly dapat dibentuk dengan sintaksis ḷ“comment”, yaitu bagaimana kode Tambah ++ dan Foo diabaikan. Kode yang sebenarnya dieksekusi oleh Jelly adalah

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

Foo

Foo mengabaikan semua karakter di sini selain "Helo Byd!", yang, seperti dalam tanda kutip, dikeluarkan.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.