พื้นหลัง
หลังจากใช้ BWT (เท่าที่เห็นในBurrows, Wheeler และ Back ) และ MTF (ดังที่เห็นในย้ายไปยังหน้า ASCII ที่พิมพ์ได้ ) คอมเพรสเซอร์bzip2ใช้รูปแบบการเข้ารหัสที่ค่อนข้างยาว
คำนิยาม
สำหรับวัตถุประสงค์ของการท้าทายนี้เราได้กำหนดการเปลี่ยนแปลง BRLE ดังนี้:
รับสตริงอินพุตsที่ประกอบด้วยอักขระ ASCII ที่มีจุดรหัสระหว่าง 0x20 ถึง 0x7A เท่านั้นให้ทำดังนี้:
แทนที่การเรียกใช้อักขระที่เท่ากันแต่ละครั้งด้วยการเกิดขึ้นครั้งเดียวของตัวละครและจำนวนการจัดเก็บการทำซ้ำหลังจากครั้งแรก
เข้ารหัสจำนวนการทำซ้ำ หลังจากที่เกิดขึ้นครั้งแรกของตัวละครโดยใช้bijective ฐานที่ 2 การคิดเลขและสัญลักษณ์และ
{
}
จำนวนเต็มไม่เป็นลบnถูกเข้ารหัสเป็นสตริงb k … b 0เช่นนั้นn = 2 k i (b k ) + … + 2 0 i (b 0 )โดยที่i (
{
) = 1และi (}
) = 2 .โปรดทราบว่าการเป็นตัวแทนนี้ไม่ซ้ำกันเสมอ ตัวอย่างเช่นหมายเลข0ถูกเข้ารหัสเป็นสตริงว่าง
แทรกสตริงของวงเล็บปีกกาที่เข้ารหัสจำนวนการทำซ้ำหลังจากการเกิดขึ้นครั้งเดียวของตัวละครที่เกี่ยวข้อง
ตัวอย่างทีละขั้นตอน
Input: "abbcccddddeeeeeffffffggggggghhhhhhhh"
Step 1: "abcdefgh" with repetitions 0, 1, 2, 3, 4, 5, 6, 7
Step 2: "" "{" "}" "{{" "{}" "}{" "}}" "{{{"
Step 3: "ab{c}d{{e{}f}{g}}h{{{"
งาน
ใช้โปรแกรมหรือฟังก์ชั่นที่ไม่เกี่ยวข้องซึ่งอ่านสตริงเดี่ยวจาก STDIN หรือเป็นบรรทัดคำสั่งหรือฟังก์ชั่นอาร์กิวเมนต์และพิมพ์หรือส่งคืน BRLE หรืออินสแตนซ์ของสตริงอินพุต
หากอินพุตไม่มีวงเล็บปีกกาให้ใช้ BRLE หากอินพุตมีวงเล็บปีกกาให้ใช้ค่าผกผัน
ตัวอย่าง
INPUT: CODEGOLF
OUTPUT: CODEGOLF
INPUT: PROGRAMMING
OUTPUT: PROGRAM{ING
INPUT: PUZ{LES
OUTPUT: PUZZLES
INPUT: 444488888888GGGGGGGGGGGGGGGGWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW
OUTPUT: 4{{8{{{G{{{{W{{{{{
INPUT: y}}}{{
OUTPUT: yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy
กฎเพิ่มเติม
คุณไม่สามารถใช้บิวด์อินใด ๆ ที่คำนวณ BRLE หรืออินสแตนซ์ของสตริงได้
คุณสามารถใช้บิวด์อิน:
คำนวณ RLE หรือ RLD ของสตริงตราบใดที่จำนวนการทำซ้ำไม่ได้เก็บไว้ใน bijective base-2
ทำการแปลงพื้นฐานทุกชนิด
รหัสของคุณอาจพิมพ์ขึ้นบรรทัดใหม่หากคุณเลือก STDOUT สำหรับเอาท์พุท
รหัสของคุณจะใช้งานได้กับอินพุตที่มีอักขระ ASCII น้อยกว่า 1,000 ตัวในช่วงตั้งแต่ 0x20 ถึง 0x7A รวมถึงเครื่องหมายปีกกา (0x7B และ 0x7D)
หากอินพุตมีวงเล็บปีกกาคุณอาจสมมติว่าเป็นผลลัพธ์ที่ถูกต้องของการใช้ BRLE กับสตริง
บังคับใช้กฎกอล์ฟมาตรฐาน การส่งที่สั้นที่สุดในหน่วยไบต์ชนะ