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:
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.
İ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ı.
Üçü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.
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.