Çok Dilli Zorluklar


13

Yakın geçmişte çok dilli zorluklarla yaşadığımız tüm eğlenceden sonra , çıktının iki dilde olabileceği bir zorluğa ne dersiniz?

Cevabınızın boole girişini kabul etmesi bve metni "true"veya çıktısını alması gerekir "false". Aynı kod başka bir dilde çalışma çıktısı, ihtiyacı "waar"ya "onwaar"ya başka çeviri trueve false.

Giriş

  • Girdi açıkça ayırt edilebilir bir doğruluk / falseydir. Kabul edilebilir gerçek değerler T / F, bir bit, int veya (boş) dizedir.
  • Giriş, gönderiminizin tüm bölümleri için aynı olmalıdır.

Çıktı

  • Çıktı, üzerine yazılan STDOUT, açılan pencereye yerleştirilen, 3B yazdırılan ve gönderilen bir işlevle döndürülebilir .

  • Çıktının durumunu temsil etmesi gerekir b. Dolayısıyla, bir 'doğruluk', 'doğru', 'waar' çıktısı almalıdır ... ve 'falsey', 'yanlış', 'onwaar' vb.

  • Farklı diller farklı çıktı yöntemleri kullanabilir.

Kullanılan diller

  • Çıktılarınızdan biri OLMALIDIR "true"ve "false".

  • Programlama dillerinin farklı sürümleri bu zorluk için farklı diller olarak sayılır.

  • Bir insan dilinin farklı lehçeleri bu meydan okuma için farklı diller olarak sayılır.

  • Çokglotu ikiden fazla programlama diline genişletebilirsiniz. Her programlama dilinin farklı bir insan dili çıkarması gerekir.

En çok dili içeren cevap kazanan olarak ilan edilecektir. Bağlandığında bayt sayılır.


Programınızın sadece yorumlayıcı / derleyicinin çalıştığı sürümünü kontrol etmesi kasıtlı mıdır?
CodenameLambda

1
Are "True"ve "False"yerine kabul edilebilir gerekli "true"ve "false"?
Jonathan Allan

1
@JonathanAllan Kötüüm. Evet, bu çıktı için iyi.
steenbergh

3
Çıktının 3D olarak basıldığı ve size geri gönderildiği bir esolang görmek isterim.
ETHproductions

2
Bu bir popülerlik yarışması için çok geniş. X yaratıcı bir şekilde pop eksileri kapsam dışına düştü.
Dennis

Yanıtlar:


5

Dyalog APL , 243 237 bayt : 14 dilde, 131 kadar uzatılabilir *

Soaku sayesinde -6 bayt .

⎕IO←0Birçok sistemde varsayılan olanı gerektirir . 0Veya komutunun girilmesini ister 1.

((⎕AV'ëáàÆÅÄòðÓÈÇ')⍳⍎⎕D∩⍨41⊃#⎕WG'APLVersion')⊃⎕⊃s¨⌽(s←{1↓¨⍵⊂⍨⍵=⊃⍵})';,true,adevarat,haqiqiy,otito,tunay,bener,prawda,dogru,vrai,that,wahr,vero,verdade,cierto;,false,fals,yolg''on,eke,mali,palsu,falsz,yanlis,faux,sai,falsch',18',falso'

Versiyona (9.0 ila 16.0, küçük versiyonlarla) bağlı olarak, aksan içermese de İngilizce, İspanyolca, Portekizce, Almanca, Vietnamca, Fransızca, Türkçe, İtalyanca, Lehçe, Sundanca, Filipince, Yoruba, Özbekçe veya Rumence olarak çıktı.

⎕AV⍳'ëáàÆÅÄòðÓÈÇ'A tomic V sektörünün endekslerinde ( 15114214132332313112212121110210116 96)

((... )⍳... )konumunu bul

değerlendirildi

⎕D∩⍨kesişme D igits ve

4↑ dört * ilk karakteri

1⊃ ikinci unsuru

#⎕WG'APLVersion' sürüm numarası

(... )⊃sonra bunu kullanarak

⎕⊃ giriş (0: ilk; 1: ikinci) öğesinin

işlev s (kısaca tanımlayacak olan) her birine uygulanmış

tersi

(s←{... }) s uygulandı - burada s ,

1↓¨ ilk karakter her birinden düştü

⍵⊂⍨ argüman bölümlere ayrıldı

⍵= argümanın karakterleri eşittir

⊃⍵ argümanın ilk karakteri

';,true,adevarat,... ,falsch',bu dize

18⍴',falso' bu dizeden çevrimsel olarak alınan on sekiz karakter

* Sürüm 12.1'den bu yana, sürüm numarası derleme numarası içerir, bu nedenle bu dizeden alınan karakter sayısını artırarak 131 Latin alfabesinin tüm dillerini kapsamak kolaydır .


Çok güzel bir cevap! Ve genişletilebilirlik konusunda büyük kanıt.
steenbergh

243 bayt sayıyorum.
Conor O'Brien

@ ConorO'Brien Düzeltildi. Teşekkürler.
Adam

Geç olduğunu biliyorum ama değiştirerek birkaç byte kaydedebilirsiniz prawdziwyiçin prawdave falszywyiçin falsz. Daha kısa formlar burada daha iyi uyuyor ve size daha iyi bir puan veriyor.
RedClover

13

6 dil, 169 bayt

Bekler 0\nya 1\ngibi giriş, ve baskılar kelimeler:

  • Python 2 (Felemenkçe vals/waar),
  • Python 3 (Fransızca faux/vrai),
  • Ruby (İngilizce false/true),
  • CJam (Norveççe usant/sant),
  • Golfscript (Danca usand/sand),
  • Befunge-93 (İtalyanca falso/vero).

"#{puts gets>?1;exit}"" "#"& 1v
""
print('vwfvaaarlauasrxi'[int(1/2*4+int(input()))::4])
""#";;;;ri"u">"sant"+o
""""
__END__
]0=~"u">"sand"""#@,,,,"vero"  _"oslaf",,,,,@

1
Danca yanlış falsk .
8'de Adám

Bu printifade için sana iki oy vereceğim !
steenbergh

10

Tüm Funges, 6 dil, 146 bayt

💥 Şimdi 3D! 💥

A vv"faux"0"vrai"mv#<v&#;9*j"kslaf"6j"etke">:#,_@;
; >"otreic"0"oslaf"v^<
&^>"murev"0"muslaf">
&^&<"false"0"true"<
>_>:#,_@
^_^

Açıklık için iki kod düzlemini ayırdım, böylece nasıl katmanlandıklarını görebilirsiniz. Diskte bu iki blok, yukarıdaki satırın sonunda bir form besleme karakteriyle ayrılacaktır.

   h"vals"0"waar"<

Kurallar, bir dilin farklı sürümlerinin ayrı diller olarak sayıldığını söyledi, bu yüzden bu Funge / Befunge'nin altı sürümüdür. :)

Sayesinde Dennis , Befunge sürümleri tüm şimdi online test edilebilir TIO . Yine de Unefunge ve Trefunge varyantlarının çalışma uygulamaları yoktur, bu yüzden Rc / Funge'yi tavsiye ederim .

ABefunge 93 ve 96'da yok sayılır, ancak 97'de Yüz Hakkında komutudır ve 98'de desteklenmez ve bu nedenle yansıtır. Bu, 93 ve 96'nın vaşağıyı takip ettiği ve 97 ve 98'in oyun alanının karşı tarafına sarıldığı anlamına gelir.

Befunge 96'da ;satırın başlangıcında bir boşluk, onu yorum olarak işaretler, böylece satır atlanır ve yorumlayıcı >üçüncü satırda devam eder . Yine de 93'te tercüman >ikinci satırda yer alır.

97/98 yolu, ilk satırda sağdan sola doğru devam eder, ;yorum işaretlerinin içindeki bölümü atlar , &komutu köprüler ve sonunda U-bükme sırasına ulaşır v<^<. Unefunge'de bu yön değişiklikleri desteklenmez, böylece yorumlayıcı yönü tersine çevirir ve yorumlarda daha önce atlanan bölümü yürütür. Befunge / Trefunge'de sola devam ediyor.

Befunge 97'de mkomut desteklenmez ve böylece atlanır, böylece yorumlayıcı ilk satır boyunca devam eder. 98'de sadece 3D'dir, böylece Befunge'ye (2D) yansır ve yorumlayıcı vsağındaki dördüncü çizgiye kadar takip eder. Trefunge'de (3D) z ekseni boyunca bir seviyeyi ikinci düzleme aktaran bir Yüksek-Düşük daldır.

Bu nedenle, Unefunge durumu dışında &, kullanıcı girdisini almak için komutlardan birine yönlendirilmeden önce dize çiftlerini ayrı bir satırdan topladık . Bu kod yolları daha sonra ^, ikinci sütundaki komutlar aracılığıyla bir araya gelerek , program akışını oyun alanının üstünden yukarı doğru yönlendirir ve tekrar alta doğru sarar.

Son olarak ^_^, kullanıcı girdisine göre hangi yolu izleyeceğine karar veren diziye sahibiz . Eğer 0 , biz çıkış dizisine (doğruca >:#,_dışarı yazma) yanlış dize. Eğer 1 , öncelikle yürütme >_yığın kapalı ilk dize ve dolayısıyla çıkış temizler hangi gerçek dize.


Bir açıklama yardımcı olacaktır
user41805

1
Çok güzel bir cevap; aynı dilin tüm farklı sürümlerini kullanmak bunu gerçekten incelikli kılar.
steenbergh

5

5 dil, 249 bayt

Not: \rve \e, gerçek satır besleme ve kaçış karakterleri olmakla birlikte \x5b, olması gerektiği gibi olmalıdır, aksi takdirde Ruby normal ifadedeki karakter sınıfından şikayet eder.

Partiye biraz geç ve hiçbir şekilde kazanan değil, ama şükran mücadelesi için bir çok dilli üzerinde çalışmaya başladım ve biraz geç olabileceğini hissettim, bu yüzden bunu buna dönüştürdüm!

q=0//1;'''<?die("\r\e\x5bK".(fgetc(STDIN)?Ekte:Falsk));?>/.to_s.ord;def input()gets.to_i;end;q=+q+0;True="Vrai";False="Faux";'+;sub a{<><1?Vals:Waar}q-
input=prompt;print=alert;True="Vero";False="Falso"//'#'''
a=[False,True];b=input();1-+1;print(a[b])

açıklama

Python: True/False

q=0//1;'''<?die("\r\e\x5bK".(fgetc(STDIN)?Ekte:Falsk));?>/.to_s.ord;def input()gets.to_i;end;q=+q+0;True="Vrai";False="Faux";'+;sub a{<><1?Vals:Waar}q-
input=prompt;print=alert;True="Vero";False="Falso"//'#'''
a=[False,True];b=input();1-+1;print(a[b])

Burada ayarlamak qiçin 0//1olan 0, o zaman var '''diğer kod çoğunu içeren dizi ihtiva eden bir dizi depolamak Falseve Trueve endekslerine 0ve 1girdi atamak sırasıyla b(olması gereken 0ya da 1belirtmek için Falsyve Truthy) daha sonra bir inci endeksi gösteren, veya .printbaFalseTrue


Yakut: Vrai/Faux

q=0//1;'''<?die("\r\e\x5bK".(fgetc(STDIN)?Ekte:Falsk));?>/.to_s.ord;def input()gets.to_i;end;q=+q+0;True="Vrai";False="Faux";'+;sub a{<><1?Vals:Waar}q-
input=prompt;print=alert;True="Vero";False="Falso"//'#'''
a=[False,True];b=input();1-+1;print(a[b])

Python betiğinde olduğu gibi değişkeni ayarladık q, ama Ruby'de bu ayarlandı 0 / /1;'''<?die("\r\e\x5bK".(fgetc(STDIN)?Ekte:Falsk));?>/.to_s.ord, çünkü Ruby bunu 0/"sıfıra bölündü" ve ardından /"normal ifade değişmezinin başlangıcı" olarak ayırdı . Bu değişmezi kullanarak PHP kodunu gizleyebilir ve Python'ları başlatabilirim '''. Biz eklemek zorunda .to_s.ordhakkı işlenen çünkü /bir olmak zorunda Fixnum. Bundan sonra biz bir işlev tanımlamak input()ve değişken Trueve Falseonların Fransız meslektaşları içeren ve nihayet bir dize başlatmak için 'bir sonraki satıra devam eder. Son olarak bir dizi oluşturmak aiçeren "Vrai"ve "Faux"kullanarak seçmek input()ed numarasını 0ya da 1.


Perl: Waar/Vals

'0//1;\'\'\'<?die("\r\e\x5bK".(fgetc(STDIN)?Ekte:Falsk));?>/.to_s.ord;def input()gets.to_i;end;q}+q{0;True="Vrai";False="Faux";\'';sub a{<><1?Vals:Waar}'
input=prompt;print=alert;True="Vero";False="Falso"//\'#\'\'\'
a=[False,True];b=input();1'+1;print(a[b])

Perl'de, ve bloklar sıradışı sınırlayıcılar kullanılarak alıntı yapılan q=..=, yukarıdaki kodda bunları yerine koydum . Kodun çoğu hazır bilgi dizesi bulunan, ancak biz tanımlıyorsunuz (a içeren !) Olduğunu kontrol eder, eğer daha az olduğunu ya dönen, ya da . Aslında çağırarak sonucu s ile ve argüman ait olan çıplak kelimeyi içeren bir ArrayRef olduğunu .q+...+q-...-'...'sub a<><STDIN1WaarValsprint(a[b])printsub a[b]b


JavaScript: Vero/Falso

q=0//1;'''<?die("\r\e\x5bK".(fgetc(STDIN)?Ekte:Falsk));?>/.to_s.ord;def input()gets.to_i;end;q=+q+0;True="Vrai";False="Faux";'+;sub a{<><1?Vals:Waar}q-
input=prompt;print=alert;True="Vero";False="Falso"//'#'''
a=[False,True];b=input();1-+1;print(a[b])

İlk satır çoğunlukla bölünerek iptal edilmiştir 0//1( //biz sadece set böylece JavaScript hat yorumdur) qiçin 0. Onların Python adlarına JS fonksiyonlarını haritalama ve değişkenleri ayarlayarak sonraki hat fırsatlar Trueve Falseİtalyan dizeleri olmak, nihayet İtalyan kelimelerin bir dizi için bir ayar ve bir kullanarak seçerek, Yakut koduyla aynı yürütmek inputait 0veya 1.


PHP: Ekte/Falsk

die("\r\e\x5bK".(fgetc(STDIN)?Ekte:Falsk));

PHP sadece <?...?>diğer her şey olduğu gibi kod yürüttüğünden , buradaki kodumuz sadece bir satır besleme (bizi mevcut satırın başına geri getirmek için) ve ANSI kaçış dizisini akımın sonuna kadar yazdırır satırından sonra ya Ekteda Falskgirilen karakter karakterinin ( 0veya 1) doğru mu yoksa yanlış mı olduğuna bağlı olarak .



3

C #, Java, 104 Bayt

golfed:

String M(Boolean b){String s=b+"";if(s=="True")return "Wahr";if(s=="False")return "Falsch";return b+"";}

Ungolfed:

  class MultiLingualChallenge
  {
    public String M(Boolean b)
    {
      String s = b + "";
      if (s == "True")
        return "Wahr";
      if (s == "False")
        return "Falsch";
      return b + "";
    }
  }

Ölçek:

C #

Console.WriteLine(new MultiLingualChallenge().M(true));
//Wahr
Console.WriteLine(new MultiLingualChallenge().M(false));
//Falsch

Java

System.out.println(new MultiLingualChallenge().M(true));
//true
System.out.println(new MultiLingualChallenge().M(false));
//false

Açıklama:

Çağrılırken ToString()veya toString()sırasıyla C # ve Java bir Boole, C # sermaye ilk harfi ile dize basar Trueve Falseancak Java küçük harflerle tüm yazdırır trueve false.

Console.WriteLine(true+"");
//True

System.out.println(true+"");
//true

2

2 dil, 60 bayt

print('onwaar'[2*int(input()):]);1#¶ị“¡ẈẆ“⁸1»

Diller:

  • Jöle true false
  • Python3 waar onwaar

Not: Jelly baytları değil, UTF-8 bayt vardır.


1

Lua / JavaScript, 68 bayt

x=1//1print(...and"true"or"false")
--x;alert(prompt()?"vrai":"faux")

Neden golf oynadığımı bilmiyorum; Sadece öyle hissettim.


1

JavaScript / BF

Bu iki dilde de hiçbir girdi yanlış, herhangi bir girdi doğru sayılmaz.

Programın yapısının 90 derece sola döndüğünü gördüğünüzde, BF sembolleri bir şehirdeki kulelere benziyor :)

Çevrimiçi deneyin (BF gerçek testcase)!

Çevrimiçi deneyin (BF yanlış testcase)!

console.log(prompt()?"true":"false")
/*
           >,[>
+          <<]>>[->-<]
+          >[<->[-]]<>[-]<[>>
+++        [->
++++       <]>[->
++++++++++ <]>---.>]>
++++++++++ [->
++++++++++ <]
+++        [->
+++++      <]>.<
++++       [->----<]>--.<
+++        [->
++++       <]>
+          .<
+++        [->---<]>-.
*/

açıklama

JavaScript

Eğer promptdoğruysa (yani çünkü boş değil prompt, çıkışları döner bir dize) true, ya da başka çıkışlar false.

BF

sandBir giriş varsa çıkışlar (doğru için Danca) veya usandgiriş boşsa çıkışlar (false).

TL; DR Giriş boş değilse (örn. Doğru), hiçbir şey çıkarmayın. Giriş boşsa (yani yanlış), çıktı alın u. Sonra, girdinin doğru veya yanlış olup olmadığına bakılmaksızın, çıktı alın sand.

Programımın mantığını oluşturduğum https://esolangs.org/wiki/Brainfuck_algorithms ' den ilham aldım.

Girdi alın. Giriş boş değilse, belleği artırın, bu hücreye "Hücre A" diyelim. İf-ifadesini sonlandır

>
,[
>+
<<
]>

"Hücre A" değerini ile karşılaştırır 0. Eşitlerse, "B hücresi" 1olsun ya da bırakın 0.

>
[->-<]+>[<->[-]]<

"Hücre B" 1 ise çıktı alın u. İf-ifadesini kapat

>[-]<
x[>>
+++[->++++<]>[->++++++++++<]>---.
>]

Çıktı sand

>
++++++++++[->++++++++++<]+++[->+++++<]>.
<++++[->----<]>--.
<+++[->++++<]>+.
<+++[->---<]>-.

BF sürümü için, ukoşullu çıktı almamalı , değil smi?
HyperNeutrino

@AlexL. Bu çıktıyı yapar uşartlı
user41805

Ah. Kafam karıştı, çünkü açıklama skoşullu olarak çıktı ; Bunu netlik için düzeltebilir misin? Yine de güzel cevap.
HyperNeutrino

If input is empty (ie false), output `s`.Sanırım Alex L.'nin kafasını karıştıran kısım bu.
Outgolfer Erik

@AlexL. Hatayı fark ettim, şimdi düzenledim!
user41805

1

Haskell, JavaScript, Python, 115 Bayt

q=1//1#1;f True="waar";f False="false";a//b=0;a#b=0{-
1//1;f=lambda x:"wahr"if x else"falsch";"""
f=x=>x+[]//"""#-}
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.