หนึ่งในกระบวนทัศน์การเขียนโปรแกรมที่ไม่ค่อยมีคนรู้จักซึ่งดูเหมือนว่าเหมาะสมสำหรับการเล่นกอล์ฟรหัสคือ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 ใด ๆ ที่พิมพ์เช่นเดียวกับตัวละครทั้งหมดที่คุณใช้ในการกำหนดและcompressdecompress- ดัชนีสามารถเป็นศูนย์หรือหนึ่งดัชนี
- โปรแกรมหรือฟังก์ชั่นของคุณจะได้ไม่ต้องจริงจะตั้งชื่อและ
compressdecompress