Birden Çok Dilde Merhaba Dünya


72

Görev

Birden çok programlama dilinde geçerli olan ve farklı bir dil olarak derlendiğinde / yorumlandığında bir program veya işlev oluşturun, "Merhaba Dünya!" farklı bir doğal dilde.

Örneğin, Hello World!derlendiğinde ve C olarak çalıştırıldığında geçerli bir çözüm (İngilizce), derlendiğinde ve Hallo Welt!C ++ olarak çalıştırıldığında (Almanca) ve 你好世界!Python olarak çalıştırıldığında (Çince) çıktı verebilir .

kurallar

Bir cevabın geçerliliği hakkında belirsizliği önlemek için, aşağıda birkaç dilde ifadenin izin verilen versiyonlarının bir listesi bulunmaktadır. Liste, Google Çeviri’nin topluluk tarafından doğrulanmış bir çevirisinin olduğu dillerdeki ifadeden oluşur (bu yazı itibariyle). *

Bu çevirilerin doğruluğu tartışmalı, ancak bu zorluğun kullanacağı şeyler. Yazdırılan dizelerin tam olarak aşağıdaki biçimi izlemesi gerekir (satır içi veya sondaki boşluk hariç).

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!

Bu yüzden kullanılabilecek 74 dil var.

Kazanan Kriter

İfadeyi en fazla dilde çıkaran çözüm kazanır. Beraberlik durumunda, kısa çözüm (bayt cinsinden) kazanır.


* Madagaskar ve Malta dillerine yapılan çeviriler topluluk tarafından doğrulandı, ancak açıkça yanlıştı (biri sadece "Merhaba Dünya!" Ve diğeri "Merhaba dinja!" İdi, ancak "Merhaba!" Yalnızca "Bongu!" Anlamına gelir). Bunlar dışlandı. Ayrıca bazı diller (Arapça, İbranice, Peştuca, Farsça ve Yidişçe) Google Çeviri’de sağdan sola okuyor, ancak buraya kopyalandığında soldan sağa okuyorlar. Umarım herşey yolundadır.


Kullanılan programlama dillerinden herhangi biri tarafından kullanılmayan bayt sayımı için tutarlı bir yöntem kullanmamıza izin var mı?
Zacharý

@ Zacharý Sanırım cevapta kullanılan tüm karakterleri temsil eden tek bir kodlamanın baytları saymak için kullanılabileceğini düşünüyorum. Veya belki de byte'lar her cevap için UTF-8'de sayılmalıdır?
Steadybox

1
Diğerlerinden farklı bir kodlama kullanan bir dile sahipsem, kodu o dilin kod sayfasına dönüştürmeli miyim yoksa aynı byte gösterimini mi kullanmalıyım? (bu zor olabilir çünkü bazı baytlar hatalı UTF-8 ile sonuçlanır)
NieDzejkob

2
@NieDzejkob Polyglot kuralının ölçülebilir baytlı bir dosyaya sahip olduğunu ve çoklu tercüman / derleyici tarafından çalıştırılabileceğini düşünüyorum. ( örnek )
user202729

4
Çince ve Japonca ( , U + FF01) ünlem işaretlerinin diğerlerinden ( !, U + 0021) farklı olduğunu unutmayın.
alephalpha

Yanıtlar:


32

23 Kanat, 713 bayt

Gerçekten bildiğim tek dil Befunge, bu yüzden birden fazla dil yerine, sadece Befunge'ın birçok uygulamasına geçtim. Bunun hala uygulaması tarafından tanımlanacak dili belirleyen PPCG kuralları uyarınca geçerli olduğuna inanıyorum .

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

Befunge hakkındaki sinir bozucu şey, açık kaynak kodlu bir başvuru uygulaması olmasına ve dilin de basit olmasına rağmen, referans davranışı ile tam olarak eşleşen tek bir üçüncü taraf tercümanı (farkında olduğum) olmamasıdır. Her uygulama farklı şekilde başarısız olur.

Artı tarafta, bu bize hemen hemen her tercümanda farklı bir sonuç verecek tek bir kod parçasını geliştirme fırsatı veriyor. Ve yukarıdaki programda deniyorum budur.

Herhangi biri sonuçları doğrulamakla ilgileniyorsa, çeşitli uygulamaları, ne kadar kolay ve çalıştırılabilir olduklarına göre kategorilere ayırmaya çalıştım (örneğin, bazı insanlar Windows ikili dosyalarını çalıştıramayabilir veya istemeyebilirler). kaynaktan inşa, ancak herkes çevrimiçi tercümanlar test edebilmelidir).

Online Tercümanlar

Kurulum gerekmez. Bu genellikle sadece kodu yapıştırma ve bir veya iki düğmeyi tıklatma meselesidir. Ancak bunlardan bazılarının oldukça yavaş olduğuna dikkat edin, bu yüzden yürütmeyi bitirmek için biraz zamana ihtiyacınız olabilir.

Alexios 'Befunge Bahçesi - Salamu Dunia!

Click Clear...düğmesi ve giriş alanına yapıştırın. EditYorumlayıcıyı etkinleştirmek için düğmeyi değiştirin ve ardından Runçalıştırmaya başlamak için düğmeye tıklayın .
Bu sitenin muhtemelen Chrome dışındaki Tarayıcılarda çalışmayacağını unutmayın.

Befungius - Molo Lizwe!

Kodu, mevcut kodun üzerine yazdığınızdan emin olarak giriş alanına yapıştırın. Ardından Runyürütmek için düğmeye tıklayın .

David Klick'in Befunge 93 Tercümanı - Sannu Duniya!

Kodu Playfield giriş alanına yapıştırın ve Runyürütmeye başlamak için düğmeye tıklayın .

Ian Osgood'un Befunge-93 Tercümanı - Salut Lume!

Kodu, Showtuşun altındaki giriş alanına yapıştırın, orada olanın üzerine @yazdığınızdan emin olun . ShowKodu almak için düğmeye tıklayın , daha sonra Runyürütmeye başlamak için düğmeye tıklayın .

jsFunge IDE - Hej Verden!

Önce Yardım iletişim kutusunu kapatın , ardından Aç / İçe Aktar araç çubuğu düğmesini (soldan ikinci), kodu yapıştırın ve tıklayın OK. Çalıştırmak için, Çalıştırma Modu düğmesine (soldan dördüncü) ve ardından Başlat'a (soldan beşinci) tıklayın.

Ayrıca, konsol tabanlı tercümanlardan birkaçının TIO'da gerçekten bulunduğundan, teknik olarak çevrimiçi tercümanlar olmadıklarında çevrimiçi olarak test edilebileceklerini unutmayın. Desteklenenler için (şu anda BEF, FBBI, MTFI ve PyFunge), Çevrimiçi Deneyin! girişlerinin yanındaki bağlantı.

Java IDE'leri

Bunlar için Java çalışma zamanının yüklü olması gerekir, ancak teorik olarak herhangi bir platformda çalışması gerekir. Sadece Windows'ta olsa test edildi.

Ashley Mills'in Görsel Befunge Uygulaması - Moien Welt!

Bu başlangıçta ne yazık ki artık kullanılamayan bir çevrimiçi uygulama oldu, ancak yine de küpü indirebilir ve bir masaüstü uygulaması olarak yerel olarak çalıştırabilirsiniz. Kodu Program Düzenleyici penceresine yapıştırmanız , ardından Convertdüğmesine ve ardından Rundüğmesine basmanız gerekir.

WASABI: Wasabi'nin Harika Bir Asin Befunge Tercümanı - Hallo Welt!

Kodu yapıştırmak için, editör penceresinin sol üst köşesine sağ tıklayın (en sol üst olmalı ) ve Yapıştır menü öğesini seçin . Ardından, Tam Hız onay kutusunu etkinleştirin (aksi takdirde sonsuza kadar sürecektir) ve Run!yürütmeye başlamak için düğmeyi tıklayın .

YABI93: Bir Başka Befunge93 Tercüman - Halo Dunia!

Varsayılan kaynağın üzerine yazdığınızdan emin olarak kodu editör penceresine yapıştırmak için Ctrl+ A, Ctrl+ tuşlarına basın V. Sonra Startyürütmeye başlamak için düğmeye tıklayın .

Windows IDE'leri

Bunlar için tipik olarak Windows'a ihtiyacınız olacak, ancak bazı durumlarda diğer işletim sistemlerinde kullanılabilen ikili dosyalar bulunabilir. Ancak kodun diğer platformlarda da çalışacağına söz veremem.

BefunExec - Merhaba Dünya!

Kodu düzenleyiciye yapıştıramazsınız, bu nedenle önce diske bir yere kaydetmeniz gerekir. Ardından IDE'den, kodu diskten yüklemek için Dosya> Aç menüsünü kullanın ve çalıştırmak için Simülasyon> Çalıştır / Duraklat menüsünü seçin.

BeQunge - Labas pasauli!

Kodu yapıştırmak için Ctrl+ düğmesine basın Vve daha sonra yürütmeye başlamak için Hata Ayıklama araç çubuğu düğmesini (mavi dişli) tıklayın. Bir kez Debugger paneli görünür, ayarlamak isteyeceksiniz Hız kaydırıcı sağındaki düğmeye - - maksimuma aksi takdirde bitirmek için sonsuza dek sürecek.

Mantar - Tere maailm!

Basın Ctrl+ Vkodunda yapıştırın ve ardından basın F5çalıştırmak için.

Visbef: Windows için Görsel Befunge '93 - Hallo Wereld!

Kodu düzenleyiciye yapıştıramazsınız, bu nedenle önce diske bir yere kaydetmeniz gerekir. Ardından IDE'den, dosya tarayıcısını açmak ve kodu diskten yüklemek için Ctrl+ Otuşuna basın F5ve çalıştırmak için tuşuna basın .

Windows Konsolu Uygulamaları

Yine bunlar tipik olarak Windows gerektirir, ancak diğer platformlar da kullanılabilir, ancak çalışması garanti edilemez.

Her durumda, kodun diskteki bir dosyaya kaydedilmesi gerekir ve dosya adının bir komut satırı parametresi olarak yorumlayıcıya iletilmesi gerekir ( aşağıdaki örnek komut satırlarında source.bf ). Ayrıca bunlardan bazılarının teknik olarak Befunge-98 tercümanları olduğunu ve bir Befunge-93 uyumluluk modunu zorlamak için belirli bir komut satırı seçeneğiyle çalıştırılması gerektiğini unutmayın. Bunu yapmazsanız, doğru sonuçları alamazsınız.

BEFI: Rugxulo'nun Befunge-93 Tercümanı - Hei Verden!

Komut satırı: bef93w32 -q source.bf

CCBI: Eşzamanlı Befunge-98 Tercümanına Uygundur - Sveika pasaule!

Comand satırı: ccbi --befunge93 source.bf

MTFI: Magus Technica Funge Tercüman - Hai dunia!

Komut satırı: mtfi -3 source.bf( Çevrimiçi deneyin! )

Python ve PHP Konsolu Uygulamaları

Bunlar, uygun bir betik dili kurulmasını gerektirir - Python veya PHP.

Befungee - Helo Byd!

Komut satırı: befungee.py source.bf

PyFunge - Halo Dunya!

Komut satırı: pyfunge -v 93 source.bf( Çevrimiçi deneyin! )

Bephunge - Bonjour monde!

Komut satırı: php bephunge.phps source.bf

Yalnızca Kaynak Konsolu Uygulamaları

Bunların kaynaktan inşa edilmesi gerekecektir ve bu genellikle * nix benzeri bir ortamla en kolay olanıdır. Windows'ta Linux için Windows Alt Sistemini kullanıyorum .

BEF: Befunge-93 Referans Dağıtım - Ciao mondo!

Komut satırı: bef -q source.bf( Çevrimiçi deneyin! )

cfunge - Sawubona Mhlaba!

Komut satırı: cfunge -s 93 source.bf

FBBI: Flaming Bovine Befunge-98 Tercüman - Hei maailma!

Komut satırı: fbbi -93 source.bf( Çevrimiçi deneyin! )

Mantarlar - Kaixo Mundua!

Komut satırı: fungi source.bf

Rc / Funge-98 - Salom Dunyo!

Komut satırı: rcfunge -93 source.bf

Nasıl çalışır

Buradaki zorluk, tercümanlar arasında en fazla farklılaşmayı sağlayan en az sayıda test bulmaktı. Sonunda dört ana test dizisine indi:

  1. Bunlardan ilki, -1,1 ofsetinden okunan sınır dışı bir bellektir. Teorik olarak bu her zaman 32 (ASCII alanı) döndürmelidir, ancak uygulamada aslında 10 çeşitlilik vardı. Bu test, tercümanların ikisinin sınır dışı okumaya çarpması nedeniyle karmaşıktır, bu yüzden bu ikisini sınırlara zorlamak için birkaç özel durum testi (bölme yuvarlama ve boşluk köprüleme) gerekiyordu.

  2. İkinci sekans, Befunge-98 işlevselliğinin bir testidir - özellikle talimatlar ;ve '. Tercümanların neredeyse tamamı Befunge-93'tür veya Befunge-93 uyumluluk modunda çalıştırılır, bu nedenle bu talimatları göz ardı etmeleri gerekir. Uygulamada, bu dizinin yorumlanmasının 6 farklı yolu vardı.

  3. Üçüncü test, hafıza hücrelerinin aralığını kontrol eder. Referans yorumlayıcısında, bellek hücreleri 8 bit olarak işaretlenmiştir, ancak diğer uygulamalar 8 bit ile sınırlandırılmamış, bazıları imzalı ve bazıları imzasız olarak değişmektedir. Ancak, bu testin amaçları doğrultusunda, sadece bu değişkenlerin 5 tanesini ayırt etmemiz gerekti.

  4. Dördüncü ve son dizi, düşük akış ve negatif bölme testlerinin bir kombinasyonudur. Tercümanların yanlış yönlendirilmesinin birkaç yolu vardır ve bölme ve modulo talimatlarının uygulandığı en az 3 farklı yol vardır, ancak burada değer verdiğimiz sadece 3 kombinasyon vardı.

Bu dizilerin her biri tek bir sayı döndürdü ve bu dört sayı bir araya getirildi (bazı temel aritmetik ve çeviri tabloları yoluyla) 0 ila 22 aralığında bir son değer üretmek için bu değer gerçek mesajı aramak için bir endeks olarak kullanılabilir. göstermek.


Oldukça cıvıl cıvıl yöntem, ama bunu yenmemin bir yolu yok. Şimdi muhtemelen bunu ayarlayabilir ve orada BrainFuck varyantlarını sıkabiliriz.
Zacharý

10
Sizi temin ederim ki hayal edebileceğiniz kadar kolay değil. Bu sadece 20'den fazla buggy tercümana çarpmadan kod çalıştırmak için bir meydan okumadır. Eğer ucuz olmak isteseydim, Befunge-98'i kullanırdım ve uygulama el izlerini sorguladım ( 3y).
James Holderness

2
Sadece mantarları nasıl kullandığınız gibi ucuza atıfta bulunuyorum, ama bu gerçekten çok etkileyici.
Zacharı

Bu inanılmaz derecede etkileyici, ancak farklı tercümanların neden farklı davrandığını açıklamak mümkün mü? Belki de 23 versiyonun tamamı değil, ama sömürdüğün davranışsal farklılıklardan birkaç örnek, en azından?
Jack Brounstein

1
@ JackBrounstein Cevap sonunda bir açıklama ekledim.
James Holderness,

64

16 dil, 1363 bayt

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

Çevrimiçi deneyin!

(dili değiştirmek için "dilleri değiştir" i kullanın)

  • Python 3 = Halo Dunia! (Endonezya)

  • Python 2 = Hic Verden! (Danimarka)

  • Python 1 = Hai Dunya! (Malayca)

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

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

  • Amaç C (clang) = Hallo Welt! (Almanca)

  • Brainfuck = Merhaba Dünya! (İngilizce, belli ki)

  • Befunge-93 = Salut Lume! (Romen)

  • Ruby = Moien Welt! (Lüksemburg dili)

  • Bash = Salom Dunyo! (Özbekçe)

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

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

  • Kardinal = Hallo Wereld! (Flemenkçe)

  • Alphuck = Ciao Mondo! (İtalyan)

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

  • Fisyon = Pozdrav svijete! (Hırvat)

Herhangi bir golf ipucu bekliyoruz (özellikle Brainfuck'ta) !!

@JonathanFrech'e -1 bayt için teşekkürler! Ayrıca, -40 bayt için @ovs sayesinde!

Nasıl (genel fikirler, aslında ayrıntıları unuttum)?

Diller dört gruba ayrılabilir:

  • Makro: C, C ++, Amaç C
  • Yorum: Python3, Python2, Python1, Yakut, Bash
  • Boyutsal: Befunge-93, Befunge-98, Unefunge-98, Kardinal,> <>, Fisyon
  • Kaba: Brainfuck, Alphuck

Makro dilleri #bir önişlemci direktifinin başlangıcı olarak görür. Bunlar üç nedenden dolayı kullanılır: diğer grupların kodlarını oluşturmak, Makro dillerini ayırt etmek ve aslında bir makro tanımlamak için kullanılır. Üçü //de yorum olarak kullanır , bundan sonra diğer gruplar için kodları saklarız. Ayrıca, ters eğik çizgi, bu dillerde yorum devam ediyor.

Yorum dilleri #, yorumun başlangıcı olarak görür. Buradaki tuhaflıklar, Pyton'ları Ruby'den Bash'den ayıran üçlü alıntılardır. Python 1'i 2'den 3'e ayırmak için, her üçünde de bir dizi çıktıyla birlikte ayırt edici bir özellik kullanıyoruz. Evet, o da var __END__. Bu, Yorum dillerinin bazıları için kodu sonlandırmak (tam olarak hangilerini hatırlayamıyorum) için kullanılır.

Boyutsal diller açıklanması zor bir şekilde ayırt edilir. Bunu anlamak için her dilin özelliklerini bilmek gerekiyor. Örneğin #, sadece mantarlarda atlanır, diğer dillerde ise farklı şeyler yapar. Kod, bu diller için her yere dağılmış durumda.

Sonunda Vulgar dillerine geliyoruz. Bu ikisi, geçerli karakter kümesinde olmayan her şeyi görmezden gelir. Kod zaten karakter kümelerinde karakter içerdiğinden, bu dillerle ve diğerleriyle dengeleyici bir hareket oynanmalıdır.


Python gönderimindeki dizeleri tek bir büyük dizgede birleştirip dizgisini dizine eklemek için kullanabilir misiniz? örn "abcabcabc"[n::3] -> "aaa" for n = 0, "bbb" for n = 1. Dilimlemeye kopyalanan karakterleri bir şekilde (H ve! Gibi) dahil ederek, dilimlemenin ve baytları kurtarmanın bir yolu olduğunu düşünüyorum.
cole,

2
Güzel! Braketlerdeki ["Hai dunia!","Hej Verden!","Halo Dunia!"]kalkanlar virgül!
Uriel

3
Buna gerek kalmaz, TIO beyninin varsayılan olarak 0 (veya hiçbir şey yapmaz, söyleyemem) kullanıcısının kullanıcıdan çıkması bittiği gerçeğini kötüye kullanıyorum. Orada 9 bu gerçeği kötüye diğer zırhsız virgül.
Zacharý

2
+[++[<+++>->+++<]>+++++++]<<<--.<.<--..<<---.<+++.<+.>>.>+.>.>-.<<<<+.BF bölümünüzü kullanmamanızın bir nedeni var mı ? ( kaynak )
Esolanging Fruit,

1
Görmek isteyen herkes için bir açıklama ekledim.
Zacharý

38

15 dil, 532 bayt

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

Çevrimiçi deneyin!

  1. Kaixo Mundua! içinde Befunge-93
  2. Hej Verden! Fisyonda
  3. Tere maailm! içinde Unefunge-98
  4. Hei maailma!! içinde Befunge-98
  5. Hai dunia! içinde> <>
  6. Hola món! Ruby'de
  7. Hola Mundo! GolfScript'te
  8. Hallo Welt! kısaca
  9. Ndewo Ụwa! ksh içinde
  10. Ciao mondo! çizgi halinde
  11. Moien Welt! zsh içinde
  12. Hei Verden! kül içinde
  13. Olá Mundo! Kardinal'de
  14. Hello World!beyninde, primo'nun izniyle .
  15. Helo Byd! boşlukta

açıklama

Satır 1, beş 2B esolang'ı birbirinden ayırır:

  1. ><>#Ayna olarak okur , sola doğru sarılır, yazdırılır "Hai dunia!"ve kilitlenir ( @). Tüm Mantarlar bir trambolin olarak okur ve sağa gider.
  2. Befunge-93 yok sayar ;, yazdırır Kaixo Mundua!ve çıkar ( @).
  3. '98 Mantar ilkinden ;ikinciye, daha sonra üçüncüden ;dördüncü sıraya atlar . wBefunge-98 için bir NOP baskıdır Hei maailma!.
  4. Ancak wUnefunge-98'deki baskı işaretleyicisini gösterir Tere maailm!.
  5. Fisyon sol üst köşede hiç başlamıyor. R"Hej Verden!";Idam edildi. (Başka bir talimat işaretçisi başlar Din __END__, ancak daha sonra hiçbir şey yapmaz için ölür ;in true;.)

Ruby `true #{puts'Hola món!'}`o zaman görür __END__.

GolfScript görür `, sonra true(NOP), sonra bir yorum; sonra __END__(NOP); sonra "Hola Mundo!" puts(bu yürütülür); sonra case(NOP), sonra `(boş istifte çöker).

Mermiler, bir yorum, daha sonra true(NOP) çağırma, daha sonra bilinmeyen komutlara __END__ve "Hola Mundo!"(STDERR'ye yapılan ancak yürütme işlemine devam eden), sonra casegeçerli işlem adının ilk harfine göre ayrım yapan ifadeye çağrı yapar .

Kardinal, %4 IP yukarı, aşağı, sola ve sağa göndererek başlayan 2B bir esolang . Hepsi çevreleyen xkomutlar tarafından öldürülür , ancak bir kişi "Olá Mundo!"ölmeden önce basar .

Brainfuck kodu, ++çizgi ile başa çıkmak için önceden eklenmiş olan primo'dur ps -p$$ -oargs=.

Kodumdaki boşluk, boşluk programı olarak yürütüldü.

 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

hangi yazdırır Helo Byd!

EDIT : UDLRKarakter eklemenin Fission programını bozduğunu unuttum , bu yüzden bunları önlemek için dizeleri değiştirdim.


1
Seni yakında bulurum.
Zacharý

1
Sanırım şimdi teslim oldum, harika bir iş çıkardın.
Zacharý

Kendimi biraz kötü hissediyorum çünkü çözümünüzde diller çok daha ilginç bir şekilde etkileşime giriyor! Gerçekten “5 mermi” cevabımı birbirleriyle çokgenleşmesi kolay olan eşliklerle doldurdum…>. <;
Lynn

1
Şimdi, eğer bu dilleri D ile çoklu dilde konuşabilen varsa , sonsuza dek huzursuz olacağım. ( #defineD’de çok şey çizilen bir şey değil). Ayrıca, boşlukları gerçekten öğrenmem gerekiyor.
Zacharý

1
Ah, şimdi daha büyük harfler var, anlıyorum. Biraz farklı dünyalar seçerek düzelteceğim.
Lynn

18

4 dil, 75 bayt

#"Hej Verden!"o|
print ([]and(0and"Hola món!"or"Helo Byd!")or"Hai dunia!")

Python -Hai dunia!

Perl -Helo Byd!

Ruby -Hola món!

Samanlık -Hej Verden!


12

7 dil, 221 bayt

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

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

Bu program bazı kötü karakterler içerdiğinden, işte bir 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!".

Neden olmasın <?='مرحبا بالعالم!';die?>? Geçerli PHP (aslında aynı <?php echo ... ?>),
Ismael Miguel

@IsmaelMiguel çünkü bu özelliği unuttum ... bu kadar basit
NieDzejkob

9

5 dil, 168 bayt

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

2 boyutlu dillerin ilginç olduğunu düşünüyorum.

> <> baskılar Tere maailm!
Befunge-98 baskılar Hej Verden!
Balmumu baskıları Sawubona Mhlaba!
Kardinal baskılar Helo Byd!
Fisyon baskılarHello World!

Çevrimiçi deneyin! (Cardinal)


2
Burada //birçok dilde yorum yapıldığı için büyük potansiyel görüyorum .
Zacharý

@ Zacharý Çoğu kişinin orada olmasının tek nedeni bu. Şimdilik ikisi> <> ve biri Balmumu için kullanılıyor. İlk iki sütundakiler hiçbir şey yapmaz.
KSmarts

Balmumu için kontrol akışını açıklayabilir misiniz? Bu zorluk için uygun olup olmadığını görmek istiyorum .
Patates44

@ Patates44 Kodu sınırlı altıgen ızgara olarak yorumlayan 2 boyutlu bir dildir, böylece işaretçiler 6 yönde hareket edebilir. Arılar (işaretçiler) karakterler tarafından üretilir */\_ve sabit yönlerde veya aynalar veya döndürülerek yeniden yönlendirilebilirler. Daha fazlası için buraya bakın .
KSmart’lar

Balmumu kısmı ;için ikinci backtick sonrasında gerekli olmadığından 1 bayt azaltabilirsiniz . Arı sadece petekten sağa doğru koşar.
ML

7

2 dil, 16 karakter, 24 bayt

En azından her iki diziden de kısa.

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

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

Yardım, WarDoq! -Hello World!

Yardım, WarDoq! İki sayı ekleyebilir ve primeları test edebilir, bu nedenle bu meta yazı için geçerli bir programlama dili olarak kabul edilir .


IIRC, 05AB1E'de bir bayt değil, yalnızca TIO'nun kısıtlamaları nedeniyle. \
Zacharý

@ Zacharý emin misiniz? Bazı kodlamalarda İbranice karakterlerin 1 bayt olduğunu biliyorum. Çakışan karakter kodları olabilir.
Uriel

Burada İbranice görüyor musun ?
Zacharý

@ Zacharý düzeltildi (Sanırım 24 byte olur)
Uriel

6

3 dil, 67 62 bayt

Bu ödül almaya hak kazanmak için (100 rep).

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

Ekle ++: Çevrimiçi deneyin!

Foo: Çevrimiçi deneyin!

Somme: Çevrimiçi deneyin!

açıklama

ekle ++

Ekleyin ++ görür:

x:Helo Byd!
O

"Çıktı xdizesi"

y:"Hai dunia!"

"Y'yi farklı bir dizeye ayarla"

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

"garip bir şey idk, ben hatayım"

varsayılan değer

Foo görür:

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

“Oo, alıntılar, ben bunları çıkartacağım.”

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

“Uh ... bir mod hakkında bir şey mi? Idk, hata yapacağım.”

Somme

Birileri şunu görür, iyi, bu:

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

Her sütun kod noktalarına dönüştürülür, daha sonra 32 tanesi ondan çıkarılır, daha sonra her biri modulo 95 alınır. Bu, "Hei Verden!" Yazdıran bu karakterlere karşılık gelir.


Eh, hafta doldu ve sen en kısa (ve sadece) yarışan cevap sensin, ödül için tebrikler!
caird coinheringaahing 'da

@cairdcoinheringaahing Teşekkürler! : D
Conor O'Brien,


4

4 dil, 115 bayt

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

Perl 5 verir Hallo Wereld!- TIO

Ruby verir Hello World!- TIO

Python 2 verir Hej Verden!- TIO

Python 3 verir Hei Verden!- TIO


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

4

Dört Dil, bir kuyruklu 650 bayt

//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 "Salut Lume!" Veriyor Dene!

SILOS "Hola Mundo" verir Deneyin!

Brainfuck "Ciao mondo!" Veriyor. Dene!

(Alphuck kod üzerinde Esolangs sayfasından değiştirilir Alphuck )

Alphuck "Merhaba Dünya!" Dene!

\ U000A ile başlayan satır Java kodudur. Birinci satırdaki kod, kodun geri kalanını ("p" ve "s" dengelendiği sürece) görmezden gelecek olan Alphuck kodudur. SIL / SILOS ile ilgili satır, "print Hola Mundo" ve brainfuck kodudur. sonundadır ve kodun geri kalanını görmezden gelir.


1
Bu sayfa tarafından sağlanan sabitleri ve orada kullanılan teknikleri kullanarak BF kodunu golf oynayabileceğinizi düşünüyorum .
cole,

@ cole Bunu optimize etmek için biraz daha zaman kazandığımda bf koduna bir daha bakmaya çalışıyorum. Temel olarak, sadece sabitleri kullanmanın yeterli olduğunu düşünmüyorum, bir nüks ilişkisi tanımlamak zorunda kalacağım
Rohan Jhunjhunwala

1
'Ciao mondo!' İçin 78: +>++>+>+++[+++++[>+++++++++++>++++<<-]+++<]>>--.>+.>.>-.>.<--.++.-.<+++.>+.>+.bayt dizisini kullanma [69, 104, 97, 112, 32]
primo

4

5 dil, 213 bayt

Ben kendim küçük bir cevap yazmaya karar verdim.

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

Diller:

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 ve C ++ kodu şu şekilde görür:

#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;(aslında) int i=0;C'ye eşittir, ancak double i=0.5;C ++ 'a eşittir .

Çevrimiçi deneyin! (C olarak)

Çevrimiçi deneyin! (C ++ olarak)

Python 3 kodu şöyle görür:

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

Çevrimiçi deneyin!

OFP betik dili şunları görür:

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

Fisyon görür:

R "Pozdrav svijete!";

Çevrimiçi deneyin!


2

3 dil, 184 181 bayt

Sadece bir kez çalışır - tekrar çalıştırmak için listeyi temizlemeniz gerekir.

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!

Karalama 1.4: Helo Byd!

Çizik 2.0: Hello world!

Bu cevabın zamanı itibariyle 3.0 beta çizin: Hai dunia!

açıklama

Scratch 1.4'te, bir listeye bir boole eklenmesi 1veya ekler 0, ancak 2.0 ve üstü ekler trueveya ekler false, ancak öğenin 1<[] = []> ile eşit olup olmadığını denetlerken , öğe ya 1da true, böylece başka bir harf ekleyip kontrol ettik.

Scratch 3.0'da, listelerin boyutu en fazla 200.000 adettir, bu nedenle yalnızca birkaç öğe ekleriz ve listenin o kadar uzun olup olmadığını kontrol ederiz.


1

3 dil, 61 bayt

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

++ çıktıları ekleHai dunia!

Jöle çıkışlarıHello World!

Foo çıktılarıHelo Byd!

Ödül ayarladığım için katılamayacağım anlamına gelmiyor: D (ab) Conor'un Add ++ için bulduğu parlak dize ayarını kullanıyor

Nasıl çalışır

ekle ++

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

Jöle

Jelly'teki yorumlar ḷ“comment”, Add ++ ve Foo kodunun nasıl görmezden gelindiği gibi sözdizimi ile oluşturulabilir . Jelly tarafından yürütülen kod.

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

varsayılan değer

Foo "Helo Byd!", burada olduğu gibi, tırnaklarda olduğu gibi çıktı olarak verilen tüm karakterleri yok sayar .

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.