Quine / Error Quine Polyglot


14

งานของคุณง่าย: เขียนโปรแกรมที่สามารถทำงานได้สองภาษา ควรเป็นควินปกติ (พิมพ์รหัสต้นฉบับของตนเอง) ในภาษา 1 และควรเป็นข้อผิดพลาดควิน (สร้างข้อความแสดงข้อผิดพลาดเหมือนกับรหัสต้นฉบับของตนเอง) ในภาษา 2

นี่คือดังนั้นการส่งที่ถูกต้องที่สั้นที่สุด (เป็นไบต์) ชนะ

กฎ:

  • ภาษาอาจคล้ายกันโดยพลการ Supersets / รุ่นที่คล้ายกัน / ภาษาที่คล้ายกันจะไม่ได้รับอนุญาต
  • กฎข้อผิดพลาด quine เหมือนกับกฎข้อผิดพลาดในการทำข้อผิดพลาด! .

ที่เกี่ยวข้องและที่เกี่ยวข้อง
ผลไม้แยกแยะ

อนุญาตให้ใช้ภาษาพื้นฐานสองภาษาที่แตกต่างกันหรือไม่
MD XF

@MDXF หากพวกเขามีพฤติกรรมเดียวกันที่แน่นอนยกเว้นว่าหนึ่งส่งออกไปยัง STDERR แทนแล้วไม่มี มิฉะนั้นใช่
แยกผลไม้

ดังนั้นคำตอบของฉันถูกต้องแล้ว
MD XF

@MDXF มันถูกต้อง
ผลไม้แยกแยะ

คำตอบ:


2

Befunge-93 (FBBI) / C (tcc) , 93 + 62 = 155 ไบต์

^"
>#001p#"<>:#,_@#1-8*3:-1*57+55-1*79*57:-1:*77**278\-1:*57$p:1: error: declaration expected

ลองออนไลน์!: Befunge-93 , C

ขอบคุณ randomdude999 สำหรับการสังเกตว่าชื่อไฟล์นั้นต้องใช้เครื่องหมายคำพูดที่ตรงกัน

จะต้องถูกบันทึกไว้ภายใต้ชื่อไฟล์^"\n>#001p#"<>:#,_@#1-8*3:-1*57+55-1*79*57:-1:*77**278\-1:*57$pที่ไหน\nเป็นบรรทัดใหม่ ด้วยเหตุนี้ TIO สำหรับ C จึงไม่ทำงานตามที่ตั้งใจ ผ่านการทดสอบการทำงานบน Lubuntu

คำอธิบาย (C):

โปรแกรมไม่สามารถคอมไพล์และ tcc ส่งเอาต์พุตชื่อของไฟล์อย่างมีความสุขซึ่งเป็นส่วนหนึ่งของข้อความแสดงข้อผิดพลาด มีข้อผิดพลาดในการรวบรวมหลายครั้งที่คุณจะได้รับซึ่งขึ้นอยู่กับจุดเริ่มต้นของรหัส ^ในช่วงเริ่มต้นจะช่วยให้เราdeclaration expectedซึ่งเป็นระยะสั้นและไม่ได้มีตัวละครที่มีปัญหาใด ๆ "เช่น ในทางกลับกันนักพัฒนา gcc และ clang นั้นมองโลกในแง่ร้ายมากและพวกเขาเลือกที่จะส่งออกข้อผิดพลาดหลายครั้งพร้อมกันซึ่งไม่ดีมากดังนั้นเราจึงไม่ได้ใช้คอมไพเลอร์

คำอธิบาย (Befunge-93):

Befunge สะดวกสำหรับการทดสอบว่ารหัสของมันยังสามารถใช้เป็นข้อมูลตัวอักษรได้ด้วย"คำสั่งซึ่งสลับโหมดสตริง ในตอนแรกเราทำการดำเนินการสแต็กที่ไร้ประโยชน์แล้วออกp(คำสั่ง put) ซึ่งวางอักขระ NUL ที่ (0, 1) จากนั้นเราสะท้อนตัวชี้คำแนะนำไปทางซ้ายและเริ่มอ่านทุกอย่างเป็นสตริง สิ่งนี้จะต้องทำทางด้านซ้ายเนื่องจากลักษณะของ LIFO ของสแต็ก หลังจากล้อมรอบและเข้าถึง"ตัวละครอีกครั้งสตริงก็จะจบลง โปรดทราบว่าตัวละคร NUL แทนที่$ตัวอักษรการสร้างตัวคั่นกึ่งกลางผ่านสตริง จากนั้นเรากดตัวเลข 3 หมายเลขลงบนสแต็กและกระโดดข้าม NUL (เพราะน่าเสียดายที่ล่ามเมื่อทำงานตามคำแนะนำ) ส่วนที่คงที่ของข้อผิดพลาดจะต้องมีการดำเนินการที่นี่ อักขระส่วนใหญ่ไม่มีตัวเลือก แต่คำสั่ง (ป๊อปและละทิ้ง) จากนั้นจะทำการคำนวณทางคณิตศาสตร์บางอย่างเพื่อส่งรหัส ASCII ให้pคำสั่งใช้อาร์กิวเมนต์สามตัว (เหตุใดเราจึงใส่ 3 ตัวเลขมิฉะนั้นส่วนหนึ่งของสตริงจะถูกกินที่นี่) และ:& 1อักขระจะส่งค่าทั้งหมด 4 ค่าไปยังสแต็กซึ่งเราตอบโต้ ด้วยคำสั่ง a pและ aและในที่สุดก็วนพิมพ์ออกมาเป็นค่าทั้งหมดในกองเป็นตัวอักษรจนกว่าจะพบตัวละคร NUL และยุติ$^"\n>#001p#"


คุณต้องค้นหาระบบปฏิบัติการที่รองรับชื่อไฟล์ดังกล่าวและแสดงรายการ ฉันรู้ว่า Windows ไม่รองรับสิ่งนั้น
mbomb007

@ mbomb007 เฉกเช่นลินุกซ์มักจะยอมรับตัวอักษรใด ๆ /ที่พิมพ์ในชื่อไฟล์ยกเว้น ฉันไม่สามารถทดสอบตัวเองได้ในตอนนี้
ลบเจ็ด

1
คุณใช้ tcc เวอร์ชันใด ฉันใช้ 0.9.27-3 ตรงจาก Repos Arch <define>:1: error: missing terminating " characterและข้อผิดพลาดที่ฉันได้รับคือ
randomdude999

1
เอาล่ะฉันได้พบเวอร์ชัน tcc ที่แน่นอนที่ใช้กับ TIO และฉันได้รับข้อความแสดงข้อผิดพลาดเดียวกัน แต่เฉพาะถ้าเครื่องหมายคำพูดของชื่อไฟล์ตรงกัน การมีคำพูดที่ไม่มีใครเทียบดูเหมือนจะค่อนข้างจำเป็นสำหรับคำตอบของฟังก์ชั่นนี้ นี่คือสิ่งที่อาจช่วยคุณได้: Linux ยังอนุญาตให้ขึ้นบรรทัดใหม่ในชื่อไฟล์ นี่คือผลลัพธ์ tcc เมื่อมีการเพิ่มขึ้นบรรทัดใหม่และอ้างถึงจุดสิ้นสุดของชื่อไฟล์นี้: (ลิงค์เค้ายาว) นี่หมายความว่าคุณจะต้องหาวิธีพิมพ์บรรทัดใหม่และเนื้อหาในบรรทัดที่ 2
randomdude999

@ randomdude999 ขอบคุณ ฉันได้อัปเดตวิธีแก้ปัญหาสำหรับบัญชีนี้แล้ว ค่อนข้างน่าสนใจแน่นอนว่าการเสนอราคาที่ไม่ตรงกันทำให้เกิดปัญหาเช่นนี้ ...
ลบเจ็ด

0

Applesoft BASIC / Commodore LCD BASICขนาด 13 ไบต์

?SYNTAX ERROR

ใน Apple] [อีมูเลเตอร์กดRESETปุ่มเพื่อเข้าสู่โหมดเบสิก
ใน Commodore LCD emulator RightArrowEnterให้เข้าสู่แอปพลิเคชันพื้นฐาน
ในทั้งคู่อย่าพิมพ์?SYNTAX ERRORตัวพิมพ์ใหญ่ทั้งหมดเพราะจะพิมพ์ใหญ่โดยอัตโนมัติ


2
สถานะที่ไม่ใช่การแข่งขันจะถูกสงวนไว้สำหรับการส่งในภาษาที่ทำหลังจากการท้าทาย หากไม่ถูกต้องตามกฎให้ลบออก รอการยืนยันจาก OP ก่อนเพราะฉันคิดว่านี่น่าจะใช้ได้ (สมมติว่ามันใช้งานได้)
HyperNeutrino

@HyperNeutrino ขอบคุณแก้ไขแล้ว
MD XF

1
จะต้องสงสัยคนนี้เหมือนกันแล้ว คำถามนี้เป็นคำถามที่ค่อนข้างโหดร้ายมากกว่ามันดู ...
Orjan ฮันเซน

1
@ ØrjanJohansenดีฉันไม่แน่ใจเกี่ยวกับสิ่งนี้ ในทางเทคนิคแล้ว, Commore LCD ไม่มีข้อผิดพลาดมาตรฐานไบต์, ดังนั้นมันเป็นข้อผิดพลาดจริง ๆ ?
MD XF

1
@ ØrjanJohansen สิ่งนี้ ? ฉันเดาว่าอาจหมายความว่าเป็นไปไม่ได้ที่จะบอกได้ว่าสิ่งนี้ถูกต้องหรือไม่ เราสามารถรอการยืนยันจาก OP หรือไม่
MD XF
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.