Levenquine เป็นวงกลม


45

พื้นหลัง

ในฐานะที่เป็นประจำ PPCG ส่วนใหญ่จะรู้ว่าเป็นโปรแกรมที่ส่งออกซอร์สโค้ดของตัวเองเมื่อทำงาน; และระยะทางของ Levenshteinระหว่างสองสายคือจำนวนขั้นต่ำของการแทรกการลบและการแก้ไขที่จำเป็นในการเปลี่ยนหนึ่งสายเป็นอีกสายหนึ่ง ในความท้าทายนี้เราได้รวมแนวคิดทั้งสองไว้ใน "levenquine": โปรแกรมที่ส่งออกซอร์สโค้ดของตัวเอง แต่มีอินสแตนซ์หนึ่งของอักขระหนึ่งตัวที่แทรกลบหรือแทนที่ด้วยอักขระอื่น (กล่าวอีกนัยหนึ่งระยะทางของ Levenshtein ระหว่างโปรแกรมและผลลัพธ์คือ 1)

งาน

เขียน levenquine เพื่อให้ผลลัพธ์เป็น levenquine, ผลลัพธ์ของโปรแกรมนั้นเป็น levenquine, และอื่น ๆ นอกจากนี้ในบางจุดลำดับของการรันโปรแกรมซ้ำ ๆ , การรันเอาต์พุต, การรันเอาต์พุตของเอาต์พุต, ฯลฯ ในที่สุดจะต้องกลับมาที่โปรแกรมต้นฉบับ

มีข้อ จำกัด เพิ่มเติมหนึ่งข้อที่ทำให้สิ่งต่าง ๆ ยากขึ้น: จะต้องมีสองโปรแกรมที่แตกต่างกันบางแห่งในวงรอบนี้ซึ่งไม่มีตัวอักษรที่เหมือนกัน (ในคำอื่น ๆ ไม่มีตัวละครที่มีอยู่ในโปรแกรมหนึ่ง โปรแกรมของคุณจะต้องค่อยๆแปลงตัวเองเป็นชุดอักขระที่แตกต่างกันและกลับมาอีกครั้ง

หากคุณกำลังใช้ภาษาการเขียนโปรแกรมซึ่งไม่จำเป็นต้องมีสำเร็จรูปสำเร็จรูปที่ต้องการในโปรแกรมใด ๆ ที่สร้างผลลัพธ์ (เช่นมีเพียงวิธีเดียวในการเขียนprintคำสั่งและไม่มีรูปแบบการส่งออกที่มีประโยชน์อื่น ๆ ) คุณอาจถือว่าสำเร็จรูปนั้นไม่มีอยู่จริง ของการพิจารณาว่าตัวละครสองตัวใดมีเหมือนกัน อย่างไรก็ตามคุณจะต้องนับจำนวนแผ่นเหล็กสำเร็จรูปเพื่อวัตถุประสงค์ในการกำหนดคุณสมบัติ Levenquine ของรหัส

ชี้แจง

  • แต่ละ "โปรแกรม" ในรอบสามารถเป็นได้ทั้งโปรแกรมหรือฟังก์ชั่นเต็มรูปแบบ พวกเขาไม่จำเป็นต้องเหมือนกันทุกคนเช่นบางโปรแกรมอาจเต็มและบางฟังก์ชั่นอาจเป็นได้
  • ไม่ใช่โปรแกรมทั้งหมดในวัฏจักรจำเป็นต้องใช้เอาต์พุตในรูปแบบเดียวกัน ตัวอย่างเช่นบางคนสามารถส่งออกผ่านทางเอาท์พุทมาตรฐานและบางคนสามารถส่งออกผ่านข้อผิดพลาดมาตรฐาน
  • โปรแกรมของคุณจะทำงานโดยไม่มีการป้อนข้อมูล (หรือในภาษาที่ต้องใช้อินพุทเพื่อทำอะไรเลยอินพุตที่ง่ายที่สุดที่เป็นไปได้)
  • กฎควินที่เหมาะสมใช้; ถึงแม้ว่า Levenquine จะไม่ใช่ Quine จริง แต่คุณไม่สามารถทำอะไรที่ผิดกฎหมายเมื่อเขียน Quine ที่เหมาะสม โดยเฉพาะอย่างยิ่งโปรแกรม null จะไม่ส่งออกที่ถูกต้องจาก Levenquine ที่เหมาะสม (และไม่สามารถเป็นส่วนหนึ่งของวัฏจักรของคุณ)
  • ข้อ จำกัด Levenquine ถูกวัดในแง่ของตัวละครมากกว่าไบต์ (เช่นêเป็นตัวละครตัวหนึ่งแม้ว่าแหล่งที่มาจะถูกเข้ารหัสใน UTF-8) ข้อ จำกัด ที่ไม่มีตัวอักษรที่พบบ่อยนอกจากนี้ยังวัดในแง่ของตัวละคร อย่างไรก็ตามเงื่อนไขชัยชนะจะนับเป็นไบต์

เงื่อนไขชัยชนะ

โปรดส่งอย่างน้อยสามโปรแกรมต่อไปนี้จากรอบการทำงาน: โปรแกรมที่สั้นที่สุด (วัดเป็นไบต์); และสองโปรแกรมจากวงรอบที่ไม่มีตัวอักษรเหมือนกัน อาจเป็นไปได้ว่าทั้งสองอย่างนี้เหมือนกันและเป็นไปได้ว่าทั้งสามคนนั้นแตกต่างกัน คะแนนจะขึ้นอยู่กับความยาวเป็นไบต์ของโปรแกรมสั้นกับสั้นเป็นดีกว่าจึงทำให้นี้ชนิดของการแข่งขัน


สำหรับคนที่สามารถเห็นโพสต์ที่ถูกลบ: โพสต์ Sandbox เป็นที่นี่

ฉันคิดว่ามันก็ดีสำหรับคำตอบที่จะรวมความยาวของรอบ
mbomb007

จะว่าอย่างไรถ้าหากภาษานั้นมีหลายฟังก์ชั่นสำหรับการแสดงผล แต่พวกมันทั้งหมดใช้อักขระร่วมกันเป็นคู่
Ørjan Johansen

2
@ ØrjanJohansen: ฉันเดาว่าฉันจะไม่คัดค้านการเลือกหนึ่งในนั้นและติดกับมันในกรณีนั้น อย่างไรก็ตามมันไม่ใช่การแข่งขัน ฉันต้องการให้กฎนั้นมีวัตถุประสงค์เพราะมิฉะนั้นผู้คนก็มีแนวโน้มที่จะพยายามที่จะเจาะช่องโหว่ในนั้นและถ้าคุณพยายามที่จะทำให้กฎนั้นซับซ้อนเกินไป

มันสามารถเป็นบิต levenquine ฉลาด? เช่นเดียวกับในระยะห่างจากรหัสต้นฉบับเดิมคือ 1 ไบต์?
Magic Octopus Urn

คำตอบ:


34

Gol> <> , 252 167 ไบต์

1>'r&ff9++r}}r&f*bc++1z.r}r6=z?Hzznr6rHr}r:ee+6+=z9*5c*+1z . }&z+5c*&H}rebe*b+ke++rHS6PWSb`S6P$$1W5/11b6W6EE/W6EE`S6P$$W61`S6P5W6$5_61P1WW_b_

ลองออนไลน์!

และโปรแกรม ( Verification ) ที่แตกต่างกัน:

0<CŽB‚‚UGGŽ™™ŽB‚F~GGM–JŽ™ŽRY–[d––ŠŽRŽdŽ™ŽVGRGY–UFQFGM–<J<™B–GQFBd™Ž~F~G‡GGŽd;oRl-7-7so~|;oRl@@-Ms7QKMM3-3-3~R-4sRaaK-3sRaa|;oRl@@sR43M|;oRlQ-sR43@Q{RMlMss3{~{"

ลองออนไลน์!

นี้เป็นแรงบันดาลใจโดยส่วนใหญ่เป็นคำตอบของฉันไปร่วมกันเฉพาะ Quinesท้าทายกับความรุ่งโรจน์ยังจะGol> <> คำตอบ

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

คำอธิบาย

ทั้งสองส่วนของรหัสประกอบด้วยสองส่วนส่วนดำเนินการจริงและข้อมูลที่มีส่วนอื่น ๆ ของรหัส พวกเขาทั้งสองทำงานเหมือนกันจริง:

พวกเขาขึ้นอยู่กับธง (ตัวอักษรตัวแรกของรหัสอย่างใดอย่างหนึ่ง1หรือ0) หากมีการตั้งค่าสถานะพวกเขาจะเริ่มสร้างส่วนอื่น ๆ ของรหัสโดยการใส่อักขระ 252 ลงเพิ่ม / ลบออก28จากมันและผนวกเข้ากับรหัส

ตัวอย่างเช่นต่อไปนี้เป็นการวนซ้ำสองครั้งแรกของรหัสหลังจากโปรแกรมแรกข้างต้น:

1>'r&ff9++r}}r&f*bc++1z.r}r6=z?Hzznr6rHr}r:ee+6+=z9*5c*+1z . }&z+5c*&H}rebe*b+ke++rHS6PWSb`S6P$$1W5/11b6W6EE/W6EE`S6P$$W61`S6P5W6$5_61P1WW_b_C

1>'r&ff9++r}}r&f*bc++1z.r}r6=z?Hzznr6rHr}r:ee+6+=z9*5c*+1z . }&z+5c*&H}rebe*b+ke++rHS6PWSb`S6P$$1W5/11b6W6EE/W6EE`S6P$$W61`S6P5W6$5_61P1WW_b_CŽ

ในที่สุดเมื่อถึงจุดสิ้นสุดของส่วนปัจจุบันมันจะพลิกตัวอักษรที่สองของรหัส ( <ไป>และกลับมาอีกครั้ง) เพื่อชี้ไปที่ส่วนอื่น ๆ

นี่คือทั้งสองส่วนเข้าด้วยกันกำลังจะเปลี่ยนจากการดำเนินการในส่วนแรกเป็นการดำเนินการที่สอง

1>'r&ff9++r}}r&f*bc++1z.r}r6=z?Hzznr6rHr}r:ee+6+=z9*5c*+1z . }&z+5c*&H}rebe*b+ke++rHS6PWSb`S6P$$1W5/11b6W6EE/W6EE`S6P$$W61`S6P5W6$5_61P1WW_b_CŽB‚‚UGGŽ™™ŽB‚F~GGM–JŽ™ŽRY–[d––ŠŽRŽdŽ™ŽVGRGY–UFQFGM–<J<™B–GQFBd™Ž~F~G‡GGŽd;oRl-7-7so~|;oRl@@-Ms7QKMM3-3-3~R-4sRaaK-3sRaa|;oRl@@sR43M|;oRlQ-sR43@Q{RMlMss3{~{"

ลองออนไลน์!

แฟล็กอยู่ตรงข้ามกับแต่ละส่วนดังนั้นส่วนที่ดำเนินการใหม่จะเริ่มลบส่วนอื่น ๆ ของรหัสจนกว่าจะถึงรหัสของตัวเอง เมื่อมาถึงจุดนี้มันพลิกธงและวงจรซ้ำอีกครั้ง

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