ช่วงเวลา 2 ย้อนกลับ Quine


10

งานของคุณคือการเขียนโปรแกรมที่ส่งออกซอร์สโค้ดของตัวเองในสิ่งที่ตรงกันข้าม อย่างไรก็ตามเมื่อรันโค้ดที่กลับด้านมันควรเอาท์พุทซอร์สโค้ดซึ่งหันหน้าไปทางทิศทางที่ถูกต้อง

ตัวอย่าง

abcบอกว่าโปรแกรมของคุณ cbaเมื่อทำงานก็ควรเอาท์พุท เมื่อทำงานควรเอาท์พุทcbaabc

กฎระเบียบ

โปรแกรมของคุณควรปฏิบัติตามกฎทั้งหมดของควินินที่เหมาะสม (ยกเว้นการส่งออกซอร์สโค้ด) Palindromes ไม่อนุญาต

หมายเหตุแบบสุ่ม: ฉันตระหนักถึงสิ่งนี้แต่ฉันเชื่อว่าความท้าทายนี้แตกต่างกันเนื่องจากรหัสที่แปลงแล้วจะต้องมีคุณสมบัติเหมือนกัน



คำตอบ:


9

RProgNขนาด 3 ไบต์

1
2

ขอบคุณ @MartinEnder สำหรับเตือนฉันเกี่ยวกับคำตอบนี้

ลองออนไลน์!

มันทำงานอย่างไร

วิธีนี้ใช้ประโยชน์จากข้อบกพร่องที่อาจเกิดขึ้นได้ในคำจำกัดความของเราเกี่ยวกับควินน์ที่เหมาะสม :

ต้องเป็นไปได้ที่จะระบุส่วนของโปรแกรมที่เข้ารหัสส่วนต่าง ๆ ของโปรแกรม ("แตกต่าง" หมายถึงว่าทั้งสองส่วนปรากฏในตำแหน่งต่างกัน)

นอกจากนี้ควินินต้องไม่เข้าถึงแหล่งของตนเองไม่ว่าทางตรงหรือทางอ้อม

เห็นได้ชัดว่าเป็นกรณีที่นี่เนื่องจากผลลัพธ์เป็นตรงกันข้ามของรหัสและรหัสไม่ใช่ palindrome

RProgN - เขียนโปรแกรมแบบย้อนกลับ - ใช้สแต็ก LIFO และพิมพ์รายการในลำดับตามที่ปรากฏ โทเค็นทั้งสอง1และ2คั่นด้วยช่องว่างและ / หรือบรรทัดใหม่ขึ้นมาปรากฏในลำดับที่กลับกันและพิมพ์โดยคั่นด้วยบรรทัดใหม่

สิ่งนี้จะพิมพ์โปรแกรมที่กลับด้าน

2
1

ซึ่งในทางกลับกันพิมพ์ต้นฉบับ

! enilno ti yrT


ฉันชอบ URL
Christopher

4
เราควรได้รับการแก้ไขนี้ ... ฉันจะโพสต์คำตอบใหม่ (ตามความคิดเห็นนี้ ) ในคำถามเมตา แต่อาจไม่ได้รับความสนใจเพียงพอที่จะแข่งขันกับคำตอบที่มีอยู่
ETHproductions

2
@ETHproductions: ทำ ฉันรู้สึกว่ามีปัญหาหลายอย่างกับคำจำกัดความควินที่เหมาะสมในปัจจุบันของเรา (ภาษาของฉัน 7 คือการศึกษาในกรณีขอบสำหรับ quineness ที่เหมาะสมนอกเหนือจากกรณีนี้โดยเฉพาะมันสามารถจัดการอื่น ๆ ค่อนข้างน้อย) FWIW ฉันไม่แน่ใจว่านี่เป็น reverse-quine ที่เหมาะสมแม้ในปัจจุบันของเรา นิยาม; 1 และ 2 นั้นมีการเข้ารหัสอย่างชัดเจนด้วยตนเองดังนั้นสิ่งที่น่าสนใจเพียงอย่างเดียวคือสิ่งที่เข้ารหัสบรรทัดใหม่ (สิ่งนี้แตกต่างจาก a 1\n1ซึ่งทั้งสอง1เข้ารหัสเข้าด้วยกันนั่นอาจเป็น quine ที่เหมาะสม แต่ไม่ใช่

9

Befunge-98 , 33 ไบต์

b3*>1#;-:0g,:#;_@_;#:,g0:-;#1>*b3

ลองออนไลน์!


คำตอบแรกที่ดี แต่ใช้#เพื่อทำให้คุณส่วนหัว ลองไปที่ Tryitonline.net และรับล่ามออนไลน์
Christopher

2
ไปที่ปุ่มบันทึกและใช้การส่ง codegolf
Christopher

ฉันแก้ไขมันใน TIO ตั้งแต่แรกฉันลืมที่จะเพิ่มลิงค์ แต่ตอนนี้มันเพิ่มและขอบคุณสำหรับส่วนหัวเคล็ดลับ
IQuick 143

โปรดทราบว่าตัวเลือก "การส่ง codegolf" ใน TIO จะให้แม่แบบเริ่มต้นซึ่งรวมถึงส่วนหัวด้วย
Ørjan Johansen

ฉันคิดgว่าไม่ได้รับอนุญาตใน Befunge quines เนื่องจากมันอ่านซอร์สของโปรแกรมโดยตรงจากหน่วยความจำ

7

ฟิชชัน 2 , 10 ไบต์

"L;L'!+!'_

ลองออนไลน์!

ภาพพิมพ์นี้:

_'!+!'L;L"

ลองออนไลน์!

และในทางกลับกัน.

คำอธิบาย

นี่คือการเปลี่ยนแปลงของควินกลับ ก็ทำงานเพื่อประโยชน์ของเราที่นี่ที่ถูกนำมาใช้สำหรับการพิมพ์และยังเป็นเพียงจุดรหัสหนึ่งออกไปจากคำพูด! "ทำให้การพิมพ์ส่วนใบเสนอราคา palindromic (the '!+!') ง่ายขึ้น เริ่มจากรหัสแรก:

"L;L'!+!'_

โปรแกรมนี้มีจุดเข้าใช้งานสองจุดที่Lแต่ละจุดจะสร้างอะตอมทางซ้าย อย่างไรก็ตามสิ่งที่ถูกต้องจะกระทบกับสิ่ง;ที่ทำลาย ซ้ายหนึ่งเข้าสู่โหมดสตริงและล้อมรอบไปยังจุดสิ้นสุดเพื่อที่จะพิมพ์รหัสทั้งหมด (ยกเว้น") จากหลังไปข้างหน้า นั่นทำให้เรา_'!+!'L;Lแล้ว "สิ่งที่เหลือคือการพิมพ์ _สามารถถูกละเว้น'!ตั้งค่ามวลของอะตอมเป็น 33 (จุดรหัสของ!) +เพิ่มขึ้นเป็น"และ!พิมพ์ นั่นคือผลลัพธ์ทั้งหมดที่ทำ 'LชุดมวลอะตอมไปยังจุดรหัสของLแต่ที่ไม่เกี่ยวข้อง ;ทำลายอะตอมนี้ด้วยและเนื่องจากไม่มีอะตอมเหลืออยู่โปรแกรมจึงยุติการทำงาน

ตอนนี้วิธีอื่น ๆ :

_'!+!'L;L"

อีกครั้งเรามีจุดเข้าสองทาง แต่อะตอมหนึ่งถูกทำลายทันที คราวนี้เราเลื่อนดู!+!'หัวข้อก่อนดังนั้นเราเริ่มด้วยการพิมพ์ใบเสนอราคา '_เป็นอีกครั้งที่ไม่เกี่ยวข้อง แต่เราต้อง_(หรือบางตัวละครที่ไร้ประโยชน์อื่น ๆ ) ที่นี่เพื่อหลีกเลี่ยงการหลบหนี' "อะตอมตัดไปยังจุดสิ้นสุดสำรวจซอร์สโค้ดหนึ่งครั้งในโหมดสตริงเพื่อพิมพ์ส่วนที่เหลือของโปรแกรมโดยย้อนกลับLจากนั้นจะถูกละเว้นและ;ทำลายอะตอมและยกเลิกโปรแกรม

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.