มีการคู่ของความท้าทายที่เกี่ยวข้องกับรหัสที่มาเสแสร้ง A: ที่นี่และที่นี่ งานที่เรามีที่นี่ยากขึ้นนิดหน่อย แต่น่าจะทำได้ในเกือบทุกภาษา
ในการท้าทายนี้คุณจะต้องใช้จำนวนเต็มบวกโดยพลการ โปรแกรมของคุณจะต้องแสดงผลเป็นจำนวนเต็มสองเท่าสองเท่าเมื่อรหัสต้นฉบับของคุณเป็นสองเท่าก็จะใช้เวลาในการเป็นจำนวนเต็มบวกและการส่งออกมันยกกำลังสอง
ซอร์สโค้ดของคุณเป็นสองเท่าได้อย่างไร ดีคุณสามารถมีได้ในแบบของคุณ นั่นคือจะบอกว่าคุณสามารถแยกรหัสที่มาของคุณขึ้นเป็นสตริงของไบต์หรืออักขระ (หรือราชสกุลใน Langs tokenized) ของใด ๆที่เท่าเทียมกันระยะเวลาที่คุณต้องการและทำซ้ำแต่ละก้อนสองครั้ง
สำหรับโปรแกรมเริ่มต้นของABCDEFGHIJKL
(ความยาว 12) ที่นี่เป็นโปรแกรมสองเท่าที่เป็นไปได้ทั้งหมด :
Chunk length | Doubled source code
-------------+-------------------------
1 | AABBCCDDEEFFGGHHIIJJKKLL
2 | ABABCDCDEFEFGHGHIJIJKLKL
3 | ABCABCDEFDEFGHIGHIJKLJKL
4 | ABCDABCDEFGHEFGHIJKLIJKL
6 | ABCDEFABCDEFGHIJKLGHIJKL
12 | ABCDEFGHIJKLABCDEFGHIJKL
โปรดทราบว่านี่หมายถึงโปรแกรมที่มีความยาวสูงสุดสองเท่าสามารถทำได้สองวิธีเท่านั้น: ทุกตัวละครเพิ่มเป็นสองเท่าหรือโปรแกรมเต็มจะทำซ้ำสองครั้ง
กฎ:
- รหัสจะต้องเป็นโปรแกรมหรือฟังก์ชั่นเต็มรูปแบบ
- ช่องโหว่มาตรฐานเป็นสิ่งต้องห้าม
- อนุญาตให้ใช้วิธีมาตรฐาน I / O
- อักขระ / ไบต์ทั้งหมดรวมถึงช่องว่างและบรรทัดใหม่ถูกนับในความยาวของรหัสและนำไปสู่ชิ้นส่วน
- คุณอาจสมมติว่าอินพุตและสี่เหลี่ยมจัตุรัสสามารถแสดงโดยชนิด int / จำนวนเต็มของภาษาของคุณ
- คุณไม่สามารถใช้อักขระขึ้นบรรทัดใหม่หรืออักขระอื่น ๆ
- ระบุขนาดก้อนของคุณในส่วนหัวหลังจากนับไบต์
- นี่คือรหัสกอล์ฟโปรแกรมที่สั้นกว่าดีกว่า! หากสองโปรแกรมมีความยาวเท่ากันโปรแกรมที่ใช้ความยาวอันน้อยจะเป็นผู้ชนะ (ถ้าคุณมีโปรแกรมที่ยาวขึ้นซึ่งใช้ความยาวอันน้อยลงนั่นก็คุ้มที่จะโพสต์ด้วย!)
- หากโปรแกรมของคุณต้องการอินพุต / บรรทัดที่สองคุณอาจไม่มีข้อสมมติฐานเกี่ยวกับค่าของมัน โดยเฉพาะอย่างยิ่งโปรแกรมของคุณควรทำงานหากอินพุตที่สองว่างเปล่าเช่นเดียวกับค่าแรกหรือจำนวนเต็มอื่น หากโปรแกรมของคุณไม่ต้องการอินพุต / บรรทัดที่สองคุณอาจเพิกเฉยต่อข้อ จำกัด นี้ได้
5 -> 10
; รหัสคู่: 5 -> 25 25
.
.0
ที่ส่วนท้าย) ได้หรือไม่