ท้าทาย:
ความท้าทายของคุณ (หากคุณเลือกที่จะยอมรับ) คือการบีบอัดและขยายขนาด 5MB " Complete Works of William Shakespeare " ตามที่พบที่นี่: http://www.gutenberg.org/cache/epub/100/pg100.txt
(MD5: a810f89e9f8e213aebd06b9f8c5157d8
)
กฎ:
- คุณต้องป้อนข้อมูลผ่าน
STDIN
และส่งออกผ่านSTDOUT
... - ... และคุณต้องให้ผลลัพธ์ที่คลายการบีบอัดเหมือนกันกับอินพุต
- (นี่คือการพูดว่าคุณจะต้องสามารถ
cat inpt.txt | ./cmprss | ./dcmpress | md5
และรับMD5 เดียวกันข้างต้น) - (สิ่งใดที่ผ่าน
STDERR
จะถูกยกเลิก)
- (นี่คือการพูดว่าคุณจะต้องสามารถ
คุณต้องใช้อักขระน้อยกว่า 2048 ตัวสำหรับรหัสที่มาทั้งหมดของคุณ- (นี่ไม่ใช่ code-golf คุณไม่ได้รับคะแนนตามความยาวของซอร์สโค้ดนี่
เป็นเพียงกฎเพื่อรักษาสิ่งที่ จำกัด ) (ใช้ความยาวที่ต่อกันของซอร์สโค้ดทั้งหมดหากคุณแยกออก)
- (นี่ไม่ใช่ code-golf คุณไม่ได้รับคะแนนตามความยาวของซอร์สโค้ดนี่
- คุณต้องสามารถประมวลผลอินพุตข้อความธรรมดาที่คล้ายกันได้ (ในทางทฤษฎี)
- (เช่นการเข้ารหัสยากกลไกซึ่งเป็นเพียงความสามารถในการแสดงผลที่มีให้เช็คสเปียร์อินพุทเป็นที่ยอมรับ.)
- (ขนาดที่บีบอัดของเอกสารอื่นไม่เกี่ยวข้อง - หากผลลัพธ์ที่คลายบีบอัดนั้นเหมือนกับอินพุตทางเลือก)
- คุณสามารถใช้ภาษาใดก็ได้
- (เช่นใช้การบีบอัด
awk
และคลายการบีบอัดjava
)
- (เช่นใช้การบีบอัด
- คุณสามารถเขียนโปรแกรมสองโปรแกรมแยกกันหรือรวมเข้ากับ "switch" บางรูปแบบตามที่คุณต้องการ
- (ต้องมีการสาธิตที่ชัดเจนถึงวิธีการเรียกใช้ทั้งโหมดบีบอัดและโหมดคลายบีบอัด)
- คุณไม่สามารถใช้คำสั่งภายนอก (เช่นผ่าน
exec()
)- (ถ้าคุณใช้ภาษาของเชลล์ - ขอโทษคุณต้องทำกับบิวด์อินคุณสามารถโพสต์คำตอบ "ไม่เป็นที่ยอมรับ" เพื่อการแบ่งปันและความเพลิดเพลิน - แต่มันจะไม่ถูกตัดสิน! )
- คุณไม่สามารถใช้ฟังก์ชั่นที่มีอยู่ในตัวหรือไลบรารีที่ระบุไว้ซึ่งมีวัตถุประสงค์เพื่อบีบอัดข้อมูล (เช่น
gz
และอื่น ๆ )- (การเปลี่ยนการเข้ารหัสไม่ถือว่าเป็นการบีบอัดในบริบทนี้อาจใช้ดุลยพินิจบางอย่างที่นี่โปรดอย่าลังเลที่จะยอมรับการยอมรับโซลูชันของคุณในการส่ง)
- โปรดลองมีความสุขถ้าเลือกที่จะเข้าร่วม!
การแข่งขันที่ดีทั้งหมดมีคำจำกัดความวัตถุประสงค์ของการชนะ เพราะฉะนั้น:
- กฎทั้งหมดจะถูกจัดเตรียมไว้ให้ซึ่งการบีบอัดที่เล็กที่สุด(เป็น
STDOUT
ไบต์) จะชนะ- (รายงานการส่งออกของคุณโปรดผ่าน
./cmprss | wc -c
)
- (รายงานการส่งออกของคุณโปรดผ่าน
- ในกรณีที่มีการจับสลาก (ขนาดผลงานที่เหมือนกัน) ชุมชนที่ชนะการโหวตมากที่สุด
- ในกรณีที่มีการจับสลากครั้งที่สอง (ชุมชนที่เหมือนกันได้รับการโหวต) ฉันจะเลือกผู้ชนะตามการตรวจสอบอัตนัยของความสง่างามและอัจฉริยะบริสุทธิ์
;-)
วิธีการส่ง:
โปรดจัดรูปแบบรายการของคุณโดยใช้เทมเพลตนี้:
<language>, <compressed_size>
-----------------------------
<description> (Detail is encouraged!)
<CODE...
...>
<run instructions>
ฉันจะสนับสนุนให้ผู้อ่านและผู้ส่งความคิดเห็นผ่านการสนทนา - ฉันเชื่อว่ามีโอกาสจริงที่ผู้คนจะเรียนรู้และกลายเป็นโปรแกรมเมอร์ที่ดีขึ้นผ่าน codegolf.stack
ชนะ:
ฉันจะไปพักผ่อนในวันหยุดเร็ว ๆ นี้: ฉันอาจจะ (หรืออาจจะไม่) กำลังตรวจสอบการส่งผลงานในอีกไม่กี่สัปดาห์ข้างหน้าและจะดึงความท้าทายไปสู่วันที่ 19 กันยายน ฉันหวังว่านี่จะเป็นโอกาสที่ดีสำหรับคนที่จะคิดและส่ง - และสำหรับการแบ่งปันเทคนิคและความคิดเชิงบวก
หากคุณได้เรียนรู้สิ่งใหม่จากการเข้าร่วม (ในฐานะผู้อ่านหรือผู้ส่ง) โปรดแสดงความคิดเห็นให้กำลังใจ
code-challenge
คุณควรแท็กนี้