การเข้ารหัสความยาวสองเท่า


9

ทุกคนรู้ว่าการเข้ารหัสความยาวรันคืออะไร มันเป็นเรื่องของการแข่งขันกอล์ฟโค๊ด เราจะดูรูปแบบที่แน่นอน

ตัวอย่าง

Normal: 11222222222222222222233333111111111112333322
Run-length: 112(19)3(5)1(11)2333322

จำนวนในวงเล็บระบุจำนวนครั้งที่สัญลักษณ์ก่อนหน้าเกิดขึ้น ในตัวอย่างมีการเข้ารหัสเฉพาะอักขระ 5 ตัวขึ้นไป นี่เป็นเพราะการเข้ารหัสการรัน 4 หรือน้อยกว่านั้นไม่ช่วยปรับปรุงการนับจำนวนตัวอักษร

ท้าทาย

เขียนฟังก์ชั่น / โปรแกรมที่ใช้รูปแบบของการเข้ารหัสแบบ run-length แต่ยังสามารถเข้ารหัสการทำงานของสองสัญลักษณ์ การวิ่งของสองสัญลักษณ์จะต้องอยู่ในวงเล็บด้วย กลุ่มจะถูกล้อมรอบด้วยวงเล็บ โปรแกรมของคุณต้องยอมรับสตริงเป็นอินพุตและเอาต์พุตสตริงที่ถูกแก้ไขด้วยการแก้ไขที่ทำให้สตริงสั้นลง

ตัวอย่าง

Normal: 111244411144411144411167676767222222277777222222277777123123123123
Double run-length: 1112((444111)(3))67676767((2(7)7(5))(2))123123123123

หมายเหตุ

  • 111ไม่ได้เข้ารหัสเพราะการเข้ารหัสมัน ( 1(3)) ไม่สั้น
  • สตริง444111เกิดขึ้น 3 ครั้งดังนั้นจึงถูกเข้ารหัส
  • 676767ไม่ได้เข้ารหัสเพราะ((67)(4))มีความยาวมากกว่าเดิม
  • 222222277777222222277777((222222277777)(2))ไม่ได้ถูกเข้ารหัสเป็น ทำไม? เพราะ222222277777ตัวเองสามารถลด2(7)7(5)ได้
  • 123123123123 ไม่ได้เข้ารหัสเพราะโปรแกรมของคุณควรจัดการกับการทำงานของสองสัญลักษณ์ไม่ใช่สามอย่าง

นี่คือ รหัสที่สั้นที่สุดจึงชนะ Tie-breaker เป็นการส่งเร็ว


หากฉันพลาดอะไรหรือคุณไม่แน่ใจในสิ่งใดโปรดแจ้งให้ฉันทราบในความคิดเห็น


แต่มี 4 67วิ
รั่วแม่ชี

เราจะต้องจัดการ441444144414-> ((4414)(3))หรือไม่
รั่วแม่ชี

ฉันได้แก้ไขแล้ว
ericw31415

@ KennyLau ไม่คุณจะไม่ทำ 4414ในทางเทคนิคเป็นชุดของ 4 ถ้อยคำของฉันไม่ดี
ericw31415

สามารถ111111111เข้ารหัสเป็น(1)(9)?
CalculatorFeline

คำตอบ:


2

เรติน่า, 162 ไบต์

+{`((\d)\2*(?!\2)(\d)\3*|\d)(?<1>\1)+
<<$1><$#1>>
<<([^<>]{1,7})><2>>
$1$1
<<([^<>]{1,3})><3>>
$1$1$1
<<([^<>]{1,2})><4>>
$1$1$1$1
}`<<(.)><(\d+)>>
$1($2)
T`<>`()

ลองออนไลน์!


หากคุณอินพุต10101010100100100100100เอาต์พุตจะ((10)(5))0((100)(4))ยัง((10)(4))((100)(5))สั้นกว่าหนึ่งอักขระ
Marv

จริงๆคุณต้องใช้ testcases ร่อแร่เช่น ....
รั่วนูน

ใช่นั่นคือความสนุก! : ^)
Marv

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