หนึ่งในกระบวนทัศน์การเขียนโปรแกรมที่ไม่ค่อยมีคนรู้จักซึ่งดูเหมือนว่าเหมาะสมสำหรับการเล่นกอล์ฟรหัสคือOverlapping Oriented Programming (OOP) * เมื่อเขียนโค้ดที่เหมือนกันบางส่วนไบต์จำนวนมากสามารถบันทึกได้โดยการซ้อนทับส่วนที่เหมือนกันและจดจำในวิธีที่บรรทัดรหัสต้นฉบับสองบรรทัดเริ่มต้น งานของคุณคือการเขียนโปรแกรมหรือฟังก์ชั่นที่ทับซ้อนกันสองโปรแกรมcompress
และdecompress
มีข้อกำหนดต่อไปนี้:
* อย่าใช้ในรหัสการผลิตอาจเป็นไปได้
compress
compress
ใช้สองสายในรูปแบบที่สะดวกและทับซ้อนให้มากที่สุด นั่นคือสตริงที่มีความยาวน้อยที่สุดจะถูกส่งกลับดังกล่าวว่าทั้งสองสายการป้อนข้อมูลเป็นสตริงของs
s
นอกจากนี้เอาต์พุตบางตัวที่ระบุดัชนีเริ่มต้นและจุดสิ้นสุดของสตริงทั้งสองจะถูกส่งคืน
ตัวอย่าง: (รูปแบบ IO ที่แน่นอนนั้นขึ้นอยู่กับคุณ)
compress("abcd", "deab") -> "deabcd" ((2,5),(0,3))
compress("abcd", "bc") -> "abcd" ((0,3),(1,2))
compress("abc", "def") -> "abcdef" ((0,2),(3,5)) or "defabc" ((3,5),(0,2))
decompress
decompress
คำนวณฟังก์ชันผกผันของcompress
ที่ได้รับสตริงและสองดัชนีเริ่มต้นและจุดสิ้นสุด (ในรูปแบบที่พวกเขาจะถูกส่งกลับโดยคุณcompress
) กลับสองสตริงเดิม คุณต้องจัดการอินพุตที่ถูกต้องเท่านั้น ความเสมอภาคต่อไปนี้ควรถือสำหรับสตริงทั้งหมดs1
, s2
:
(s1, s2) == decompress (compress (s1, s2))
ตัวอย่าง: (ผู้ผกผันของcompress
ตัวอย่าง)
decompress "deabcd" ((2,5),(0,3)) -> "abcd" "deab"
decompress "abcd" ((0,3),(1,2)) -> "abcd" "bc"
decompress "abcdef" ((0,2),(3,5)) -> "abc" "def"
or (whichever version your "compress" generates)
decompress "defabc" ((3,5),(0,2)) -> "abc" "def"
เกณฑ์การให้คะแนน
compress("<code of compress>", "<code of decompress>")
คะแนนของคุณคือขนาดของสตริงที่ส่งกลับโดยการโทร เช่นนี้เป็นรหัสกอล์ฟคะแนนต่ำจะดีกว่า
ตัวอย่าง:
สมมติรหัสสำหรับการทำงานของคุณcompress
เป็นc=abcd
และรหัสสำหรับการมีdecompress
d=efghi
จากนั้นcompress("c=abcd", "d=efghi")
อัตราผลตอบแทน"c=abcd=efghi"
(และดัชนี แต่เหล่านั้นไม่ได้ส่งผลกระทบต่อการให้คะแนน) length "c=abcd=efghi" = 12
เพื่อให้คะแนนคือ
กฎเพิ่มเติม
- ในจิตวิญญาณของการท้าทายนี้คุณ
compress
และdecompress
ต้องทับซ้อนกันอย่างน้อยหนึ่งตัวละคร คุณอาจประสบความสำเร็จได้เล็กน้อยโดยการเพิ่มความคิดเห็น แต่โปรดทราบว่าการทำเช่นนั้นจะเพิ่มคะแนนของคุณและอาจมีวิธีแก้ปัญหาที่สั้นกว่าโดยใช้รหัสที่ทับซ้อนกันโดยเนื้อแท้ compress
และdecompress
ควรจะสามารถที่จะจัดการกับสตริงที่มีอักขระ ASCII ใด ๆ ที่พิมพ์เช่นเดียวกับตัวละครทั้งหมดที่คุณใช้ในการกำหนดและcompress
decompress
- ดัชนีสามารถเป็นศูนย์หรือหนึ่งดัชนี
- โปรแกรมหรือฟังก์ชั่นของคุณจะได้ไม่ต้องจริงจะตั้งชื่อและ
compress
decompress