23 Befunges, 713 ไบต์
ภาษาเดียวที่ฉันรู้คือ Befunge ดังนั้นแทนที่จะเป็นหลายภาษาฉันเพิ่งไปใช้หลาย ๆ ภาษาของ Befunge ผมเชื่อว่านี่ยังคงถูกต้องภายใต้กฎระเบียบ PPCG ซึ่งพิจารณาภาษาที่จะถูกกำหนดโดยการดำเนินงานของ
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 คือแม้ว่าจะมีการใช้งานโอเพ่นซอร์สอ้างอิงและภาษานั้นเรียบง่าย แต่ไม่มีล่ามบุคคลที่สาม (ที่ฉันรู้) ที่ตรงกับพฤติกรรมการอ้างอิง การใช้งานทุกครั้งล้มเหลวในวิธีที่แตกต่างกัน
ในทางบวกนี่ทำให้เรามีโอกาสพัฒนาโค้ดชิ้นเดียวที่จะให้ผลลัพธ์ที่แตกต่างกันในเกือบทุกล่าม และนั่นคือสิ่งที่ฉันพยายามทำในโปรแกรมด้านบน
หากใครสนใจตรวจสอบผลลัพธ์ฉันพยายามจัดกลุ่มการนำไปใช้งานต่าง ๆ เป็นหมวดหมู่โดยพิจารณาจากความง่ายในการเริ่มใช้งาน (เช่นบางคนอาจไม่สามารถเรียกใช้ไบนารีของ Windows หรืออาจไม่เต็มใจที่จะ สร้างจากแหล่งที่มา แต่ทุกคนควรทดสอบล่ามออนไลน์ได้)
ล่ามออนไลน์
ไม่จำเป็นต้องติดตั้ง โดยปกติจะเป็นเพียงเรื่องของการวางโค้ดและคลิกปุ่มหนึ่งหรือสองปุ่ม แต่โปรดทราบว่าสิ่งเหล่านี้บางอย่างค่อนข้างช้าดังนั้นอาจต้องใช้เวลาสักครู่ในการดำเนินการให้เสร็จ
สนามเด็กเล่น Befunge ของ Alexios -
Salamu Dunia!
คลิกที่Clear...ปุ่มและวางรหัสลงในช่องใส่ สลับEditสวิตช์เพื่อเปิดใช้งานล่ามแล้วคลิกRunปุ่มเพื่อเริ่มการทำงาน
โปรดทราบว่าไซต์นี้อาจไม่ทำงานในเบราว์เซอร์อื่นที่ไม่ใช่ Chrome
Befungius -
Molo Lizwe!
วางรหัสลงในช่องใส่ให้แน่ใจว่าได้เขียนทับรหัสที่มีอยู่ จากนั้นคลิกRunปุ่มเพื่อดำเนินการ
Befunge 93 ล่ามของ David Klick -
Sannu Duniya!
วางรหัสลงในช่องป้อนข้อมูลของPlayfieldแล้วคลิกRunปุ่มเพื่อเริ่มการทำงาน
ล่าม Befunge-93 ของ Ian Osgood -
Salut Lume!
วางรหัสลงในฟิลด์อินพุตใต้Showปุ่มตรวจสอบให้แน่ใจว่าได้เขียนทับสิ่ง@
ที่มีอยู่แล้ว คลิกที่Showปุ่มเพื่อนำเข้ารหัสจากนั้นคลิกที่Runปุ่มเพื่อเริ่มดำเนินการ
jsFunge IDE -
Hej Verden!
แรกปิดการช่วยเหลือโต้ตอบจากนั้นคลิกเปิด / นำเข้าปุ่มแถบเครื่องมือ (ที่สองจากซ้าย) OKวางในรหัสและคลิก หากต้องการดำเนินการให้คลิกปุ่มRun Mode (ที่สี่จากซ้าย) จากนั้นคลิกที่Start (ที่ห้าจากซ้าย)
นอกจากนี้โปรดทราบว่า TIO ที่ใช้คอนโซลมีอยู่จริงใน TIO ดังนั้นในขณะที่พวกเขาไม่ได้เป็นล่ามทางเทคนิคออนไลน์พวกเขาสามารถทดสอบออนไลน์ได้ สำหรับผู้ที่ได้รับการสนับสนุน (ปัจจุบันคือ BEF, FBBI, MTFI และ PyFunge) ฉันได้รวมTry It Online แล้ว! ลิงค์ถัดจากรายการ
Java IDEs
คุณจะต้องมีการติดตั้งรันไทม์ของ Java สำหรับสิ่งเหล่านี้ แต่ในทางทฤษฎีควรทำงานบนแพลตฟอร์มใด ๆ ทดสอบเฉพาะบน Windows เท่านั้น
แอปเพล็ต Visual Befunge ของ Ashley Mills -
Moien Welt!
นี่เป็นครั้งแรกที่แอปเพล็ตออนไลน์ซึ่งน่าเสียดายที่ไม่สามารถใช้งานได้อีกต่อไป แต่คุณยังคงสามารถดาวน์โหลด jar และเรียกใช้มันเป็นแอปพลิเคชันเดสก์ทอป คุณจะต้องวางรหัสลงในหน้าต่างตัวแก้ไขโปรแกรมจากนั้นคลิกConvertปุ่มตามด้วยRunปุ่ม
วาซาบิ: วาซาบิเป็นล่าม Asinine Befunge ล่าสุดยอด -
Hallo Welt!
ในการวางรหัสให้คลิกขวาที่มุมซ้ายบนของหน้าต่างตัวแก้ไข ( ต้องอยู่ด้านบนซ้ายสุด) และเลือกรายการเมนูวาง จากนั้นเปิดใช้งานช่องทำเครื่องหมายFull Speed (ไม่เช่นนั้นจะใช้เวลานาน) และคลิกRun!ปุ่มเพื่อเริ่มการทำงาน
YABI93: ล่าม Befunge93 อีกคนหนึ่ง -
Halo Dunia!
กดCtrl+ A, Ctrl+ Vเพื่อวางรหัสลงในหน้าต่างตัวแก้ไขตรวจสอบให้แน่ใจว่าได้เขียนทับแหล่งที่มาเริ่มต้นแล้ว จากนั้นคลิกStartปุ่มเพื่อเริ่มการทำงาน
IDE ของ Windows
โดยทั่วไปคุณจะต้องใช้ Windows สำหรับสิ่งเหล่านี้แม้ว่าในบางกรณีอาจมีไบนารีสำหรับระบบปฏิบัติการอื่น ฉันไม่สามารถรับประกันได้ว่ารหัสจะทำงานบนแพลตฟอร์มอื่นได้
BefunExec -
สวัสดีชาวโลก!
คุณไม่สามารถวางรหัสลงในเครื่องมือแก้ไขได้ดังนั้นคุณต้องบันทึกลงดิสก์ก่อน จากนั้นจาก IDE ให้ใช้เมนูไฟล์> เปิดเพื่อโหลดรหัสจากดิสก์และเลือกเมนูการจำลอง> เรียกใช้ / หยุดชั่วคราวเพื่อเรียกใช้
BeQunge -
Labas pasauli!
กดCtrl+ Vเพื่อวางรหัสแล้วคลิกปุ่มแถบเครื่องมือดีบั๊ก (ฟันเฟืองสีน้ำเงิน) เพื่อเริ่มการทำงาน เมื่อแผงดีบักเกอร์ปรากฏขึ้นคุณจะต้องตั้งค่าความเร็วสูงสุด - ปุ่มทางด้านขวาของแถบเลื่อน - มิฉะนั้นจะใช้เวลานานจนเสร็จ
เชื้อรา - เป็น
ลูกโซ่!
กดCtrl+ Vเพื่อวางรหัสแล้วกดF5เพื่อเรียกใช้
Visbef: Visual Befunge '93 สำหรับ Windows -
Hallo Wereld!
คุณไม่สามารถวางรหัสลงในเครื่องมือแก้ไขได้ดังนั้นคุณต้องบันทึกลงดิสก์ก่อน จาก IDE กดCtrl+ Oเพื่อเปิดเบราว์เซอร์ไฟล์และโหลดรหัสจากดิสก์แล้วกดF5เพื่อเรียกใช้
แอพ Windows Console
โดยทั่วไปแล้วสิ่งเหล่านี้ต้องการ Windows แม้ว่าแพลตฟอร์มอื่นอาจพร้อมใช้งาน แต่ไม่รับประกันว่าจะทำงานได้
ในทุกกรณีรหัสจะต้องถูกบันทึกลงในไฟล์บนดิสก์และชื่อไฟล์ที่ส่งไปยังล่ามเป็นพารามิเตอร์บรรทัดคำสั่ง ( source.bfในตัวอย่างบรรทัดคำสั่งที่ระบุด้านล่าง) นอกจากนี้โปรดทราบว่าบางรายการเป็นล่าม Befunge-98 ในทางเทคนิคและต้องรันด้วยตัวเลือกบรรทัดคำสั่งเฉพาะเพื่อบังคับใช้โหมดความเข้ากันได้ของ Befunge-93 หากคุณไม่ทำเช่นนั้นคุณจะไม่ได้รับผลลัพธ์ที่ถูกต้อง
BEFI: ล่าม Befunge-93 ของ Rugxulo -
Hei Verden!
บรรทัดคำสั่ง: bef93w32 -q source.bf
CCBI: การทำตัวสอดคล้องกับ Befunge-98 Interpreter -
Sveika pasaule!
สาย Comand: ccbi --befunge93 source.bf
MTFI: ล่าม Magus Technica Funge -
Hai dunia!
บรรทัดคำสั่ง: mtfi -3 source.bf
( ลองออนไลน์! )
แอพ Python และ PHP Console
สิ่งเหล่านี้ต้องการภาษาสคริปต์ที่เหมาะสมติดตั้ง - Python หรือ PHP
Befungee -
Helo Byd!
บรรทัดคำสั่ง: befungee.py source.bf
PyFunge -
Halo Dunya!
บรรทัดคำสั่ง: pyfunge -v 93 source.bf
( ลองออนไลน์! )
Bephunge -
Bonjour monde!
บรรทัดคำสั่ง: php bephunge.phps source.bf
แอปคอนโซลที่มาเท่านั้น
สิ่งเหล่านี้จะต้องถูกสร้างขึ้นจากแหล่งที่มาและมักจะง่ายที่สุดด้วยสภาพแวดล้อมที่เหมือน * nix บน Windows ผมใช้ของ Windows ระบบย่อยสำหรับลินุกซ์
BEF: การกระจายการอ้างอิง Befunge-93 -
Ciao mondo!
บรรทัดคำสั่ง: bef -q source.bf
( ลองออนไลน์! )
cfunge -
Sawubona Mhlaba!
บรรทัดคำสั่ง: cfunge -s 93 source.bf
FBBI: เผาวัว Bevine Befunge-98 Intepreter -
เฮ่ย maailma!
บรรทัดคำสั่ง: fbbi -93 source.bf
( ลองออนไลน์! )
เชื้อรา -
Kaixo Mundua!
บรรทัดคำสั่ง: fungi source.bf
Rc / Funge-98 -
Salom Dunyo!
บรรทัดคำสั่ง: rcfunge -93 source.bf
มันทำงานอย่างไร
ความท้าทายคือพบการทดสอบจำนวนน้อยที่สุดที่ให้ความแตกต่างระหว่างล่ามมากที่สุด ในที่สุดมันลงมาถึงสี่ลำดับการทดสอบหลัก:
สิ่งแรกคือหน่วยความจำนอกขอบเขตที่อ่านจากออฟเซ็ต -1,1 ในทางทฤษฎีแล้วสิ่งนี้ควรคืนค่า 32 (พื้นที่ ASCII) เสมอ แต่มีการเปลี่ยนแปลงจริง 10 แบบ การทดสอบนี้มีความซับซ้อนเนื่องจากข้อเท็จจริงที่ว่าล่ามสองคนชนกับการอ่านนอกขอบเขตดังนั้นจึงต้องมีการทดสอบสองกรณีพิเศษ (การปัดเศษการแบ่งและการแก้ช่องว่าง) เพื่อบังคับให้ทั้งสองกลับเข้าสู่ขอบเขต
ลำดับที่สองคือการทดสอบการทำงาน Befunge-98 - โดยเฉพาะคำแนะนำและ;
'
ล่ามเกือบทั้งหมดเป็น Befunge-93 หรือทำงานในโหมดความเข้ากันได้ของ Befunge-93 ดังนั้นพวกเขาควรเพิกเฉยต่อคำแนะนำเหล่านั้น ในทางปฏิบัติมี 6 วิธีที่แตกต่างกันในการตีความลำดับนี้
การทดสอบที่สามตรวจสอบช่วงของเซลล์หน่วยความจำ ในล่ามอ้างอิงเซลล์หน่วยความจำได้รับการลงนาม 8-bit แต่การใช้งานอื่น ๆ นั้นแตกต่างกันไปในช่วงตั้งแต่ 8 บิตไปจนถึงไม่ได้ จำกัด บางลงนามและบางส่วนที่ไม่ได้ลงนาม อย่างไรก็ตามสำหรับวัตถุประสงค์ของการทดสอบนี้เราต้องแยกความแตกต่างระหว่าง 5 ของตัวแปรเหล่านั้น
ลำดับที่สี่และสุดท้ายคือการรวมกันของการทดสอบอันเดอร์โฟล์และการหารเชิงลบ มีหลายวิธีในการที่นักแปลจะเข้าใจผิดอันเดอร์โฟลว์และมีวิธีการอย่างน้อย 3 วิธีในการใช้งานคำสั่งการหารและโมดูโล แต่มีชุดค่าผสมเพียง 3 ชุดเท่านั้นที่เราใส่ใจ
แต่ละลำดับเหล่านี้ส่งคืนหมายเลขเดียวและตัวเลขสี่ตัวเหล่านั้นรวมกัน (ผ่านทางคณิตศาสตร์และตารางการแปลพื้นฐานบางอย่าง) เพื่อสร้างค่าสุดท้ายในช่วง 0 ถึง 22 จากนั้นค่าดังกล่าวสามารถใช้เป็นดัชนีเพื่อค้นหาข้อความจริง เพื่อแสดง