สมมติว่าคุณมี 2 ภาษาและA
B
สตริงs
เป็นเซมินอินA
และB
ถ้าเป็นไปตามเงื่อนไขต่อไปนี้:
s
A
เป็นควินในภาษาs
เป็นหลายภาษาในและA
B
- ผลลัพธ์ของการทำงาน
s
เป็นB
โปรแกรมเป็นสตริงที่แตกต่างกันซึ่งเป็นควินในs'
B
เป้าหมายของการท้าทายนี้คือการเขียนเซมิไฟนอลในสองภาษาที่แตกต่างกัน นี่คือcode-golfดังนั้นรหัสที่สั้นที่สุดชนะด้วยคำตอบแรกสุดที่ใช้เป็น tiebreaker
กฏสำหรับ Quines
ยอมรับ Quines จริงเท่านั้น นั่นคือคุณต้องพิมพ์คำต่อคำทั้งหมดเพื่อ STDOUT โดยไม่ต้อง :
- อ่านซอร์สโค้ดของคุณโดยตรงหรือโดยอ้อม
- อาศัยสภาพแวดล้อม REPL ซึ่งเพียงแค่ประเมินและพิมพ์นิพจน์ทุกครั้งที่คุณป้อน
- อาศัยคุณสมบัติภาษาที่เพิ่งพิมพ์ออกมาในบางกรณี
- ใช้ข้อความแสดงข้อผิดพลาดหรือ STDERR เพื่อเขียนทั้งหมดหรือบางส่วนของควิน (คุณสามารถเขียนสิ่งต่าง ๆ ไปยัง STDERR หรือสร้างข้อผิดพลาด / เตือนไม่ร้ายแรงตราบใดที่ STDOUT เป็นควินินที่ถูกต้องและข้อความแสดงข้อผิดพลาดไม่ได้เป็นส่วนหนึ่งของมัน)
นอกจากนี้ซอร์สโค้ดของคุณจะต้องไม่ประกอบด้วยตัวอักษรล้วนๆ (ไม่ว่าจะเป็นตัวอักษรสตริง, ตัวอักษรตัวเลข ฯลฯ ) และ / หรือ NOP ตัวอย่างเช่น`12
เป็นรูปหลายเหลี่ยมใน Jelly และ Pyth แต่ใน Jelly มันเป็น NOP และตัวอักษรตัวเลขดังนั้นจึงไม่ถูกต้อง
เอาต์พุตที่ไม่สามารถยับยั้งได้ (เช่นประกาศลิขสิทธิ์ข้อความเริ่มต้น / ปิดเครื่องหรือฟีดบรรทัดต่อท้าย) อาจถูกละเว้นในเอาต์พุตเพื่อประโยชน์ของ quine
กฎระเบียบสำหรับ Polyglots
สองภาษาที่ใช้จะต้องแตกต่างกันอย่างชัดเจน โดยเฉพาะอย่างยิ่ง:
- พวกเขาจะต้องไม่ใช้ภาษาเดียวกันรุ่นต่าง ๆ (เช่น Python 2 กับ Python 3)
- พวกเขาจะต้องไม่เป็นภาษาถิ่นที่แตกต่างกันของภาษาเดียวกัน (เช่น Pascal vs. Delphi)
- ภาษาหนึ่งอาจไม่ใช่ชุดย่อยของอีกภาษาหนึ่ง (เช่น C กับ C ++ 1 )
- ภาษาหนึ่งอาจไม่ใช่อนุพันธ์ที่น่ารำคาญของอีกภาษาหนึ่ง (เช่น Matlab vs. Octave 2 , brainfuck และ boolfuck vs TinyBF กับ ShadyAsFuck เทียบกับอนุพันธ์ของ brainfuck อื่น ๆ ที่น่าสนใจเล็กน้อย)
กฎเบ็ดเตล็ด
- คุณไม่สามารถรับอินพุตจาก STDIN (หรือแหล่งอื่น ๆ ) หากภาษาที่คุณเลือกต้องป้อนข้อมูลดังนั้นอินพุตจะต้องว่างเปล่า (สตริงว่าง, ไพพ์จาก
/dev/null
ฯลฯ ) หรือเอาต์พุตของโปรแกรมต้องไม่ขึ้นอยู่กับอินพุต - สำหรับความท้าทายนี้คุณต้องเขียนโปรแกรมทั้งหมด ไม่อนุญาตให้ใช้รหัสเพิ่มเติมเพื่อเรียกใช้โซลูชัน (เช่นการกำหนดและเรียกฟังก์ชัน lambda ที่กำหนดไว้ในโซลูชัน)
1: ใช่ฉันรู้ว่า C ไม่ใช่ส่วนย่อยของ C ++ มันใกล้พอที่จะได้รับการพิจารณาให้เป็นหนึ่งเดียวเพื่อจุดประสงค์ในการพูดได้หลายภาษาดังนั้นฉันจึงนับมันสำหรับความท้าทายนี้
2: เช่นเดียวกับจุดที่ 1 ข้างต้นถึงแม้ว่า Octave จะไม่สามารถใช้งานร่วมกับ Matlab ได้ 100% แต่ทว่ามันถูกออกแบบมาให้เข้ากันได้และอยู่ใกล้พอที่จะอนุญาตให้พูดได้หลายภาษาของ Matlab / Octave