7
เลื่อนไปที่หน้า ASCII ที่พิมพ์ได้
พื้นหลัง การแปลงแบบย้ายไปด้านหน้า (MTF) เป็นอัลกอริทึมการเข้ารหัสข้อมูลที่ออกแบบมาเพื่อปรับปรุงประสิทธิภาพของเทคนิคการเข้ารหัสแบบเอนโทรปี ในอัลกอริทึมการบีบอัด bzip2จะถูกนำไปใช้หลังจากการแปลง Burrows – Wheeler (ดังที่เห็นในBurrows, Wheeler และ Back ) โดยมีวัตถุประสงค์เพื่อเปลี่ยนกลุ่มของอักขระซ้ำเป็นจำนวนเต็มจำนวนน้อยที่ไม่บีบอัดได้ง่าย คำนิยาม สำหรับจุดประสงค์ของการท้าทายนี้เราจะกำหนดเวอร์ชัน ASCII ที่พิมพ์ได้ของ MTF ดังนี้: รับสายป้อนsใช้อาร์เรย์ที่ว่างเปล่าRสตริงงทุกตัวอักขระ ASCII (0x20 เพื่อ 0x7E) และทำซ้ำต่อไปนี้สำหรับตัวละครแต่ละตัวคของs : ผนวกดัชนีของคในdเพื่อR ย้ายcไปที่ด้านหน้าของdเช่นลบcจากdและเติมลงในส่วนที่เหลือ สุดท้ายเราใช้องค์ประกอบของrเป็นดัชนีในd ต้นฉบับ และดึงอักขระที่เกี่ยวข้อง ตัวอย่างทีละขั้นตอน INPUT: "CODEGOLF" 0. s = "CODEGOLF" d = " !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~" r = [] 1. s = …