บทนำ
การจัดช่องไฟหมายถึงการปรับระยะห่างระหว่างตัวอักษรของข้อความ ยกตัวอย่างพิจารณาคำที่Top
เขียนด้วยร่ายมนตร์ต่อไปนี้สามอัน:
##### ..... .....
..#.. ..... .....
..#.. ..##. .###.
..#.. .#..# .#..#
..#.. .#..# .#..#
..#.. ..##. .###.
..... ..... .#...
..... ..... .#...
เราสามารถเติมช่องว่างระหว่างร่ายมนตร์ด้วยจุดแล้วเติมลงไปได้ แต่ช่องว่างก็ดูกว้างเกินไป แต่เราเลื่อนร่ายมนตร์ไปทางซ้ายเพื่อให้พวกมันสัมผัสเกือบ:
#####........
..#..........
..#..##..###.
..#.#..#.#..#
..#.#..#.#..#
..#..##..###.
.........#...
.........#...
มันดูดีขึ้นมาก! หมายเหตุวิธีบาร์ของด้านบนของเส้นขอบด้านซ้ายของT
o
ในการท้าทายนี้งานของคุณคือการใช้โปรแกรมการจัดช่องไฟอย่างง่ายสำหรับร่ายมนตร์รูปสี่เหลี่ยมผืนผ้าดังกล่าว
กระบวนการจัดช่องไฟ
พิจารณาสองสี่เหลี่ยม 2D อาร์เรย์ของตัวอักษร.
และ#
รูปทรงเดียวกัน ในขั้นตอนการจัดช่องไฟอย่างง่ายของเราอันดับแรกเราวางอาร์เรย์แบบเรียงต่อกันโดยมีคอลัมน์หนึ่งคอลัมน์.
อยู่ระหว่างกัน จากนั้นเราย้ายแต่ละรายการ#
ในอาเรย์ขวาหนึ่งก้าวไปทางซ้ายจนกระทั่ง#
อาเรย์ซ้ายและขวาบางอันอยู่ติดกันแบบมุมฉากหรือแนวทแยงมุม ผลลัพธ์ของการจัดช่องไฟเป็นขั้นตอนก่อนที่เราจะแนะนำ#
s ที่อยู่ติดกัน งานของคุณคือการใช้กระบวนการนี้
ลองมาตัวอย่าง:
Inputs:
..###
#....
#....
..##.
...#.
...##
..###
....#
Process:
..###....#.
#........##
#.......###
..##......#
..###...#.
#.......##
#......###
..##.....#
..###..#.
#......##
#.....###
..##....#
..###.#.
#.....##
#....###
..##...#
..####.
#....##
#...###
..##..#
ในอาร์เรย์สุดท้ายเรามีคู่ของ#
s ที่อยู่ติดกันใหม่ดังนั้นอาร์เรย์ที่สองถึงสุดท้ายคือผลลัพธ์ของกระบวนการ kerning
อินพุตและเอาต์พุต
เพื่อความเรียบง่ายคุณจะต้องจัดการการจัดช่องไฟของร่ายมนตร์สองอัน อินพุตของคุณเป็นอาร์เรย์ 2D แบบสี่เหลี่ยมผืนผ้าสองรูปแบบในรูปแบบใดรูปแบบหนึ่งต่อไปนี้:
- อาร์เรย์ 2 มิติของจำนวนเต็มด้วย 0 ยืน
.
และ 1#
สำหรับ .#
หลายสายมากกว่า.#
อาร์เรย์ของสตริงมากกว่า- อาร์เรย์ 2
.#
มิติของตัวละคร
หากอินพุตถูกใช้เป็นสตริงเดี่ยวคุณสามารถใช้ตัวคั่นที่เหมาะสมใด ๆ อย่างไรก็ตามตัวคั่นควรอยู่ระหว่างสองอาร์เรย์ซึ่งหมายความว่าคุณไม่ได้รับอนุญาตให้รับอินพุตทั้งสองที่จับคู่กันแล้วต่อแถว
ผลลัพธ์ของคุณเป็นผลมาจากกระบวนการการจัดช่องไฟที่ใช้กับสองอาร์เรย์ซึ่งเป็นอาร์เรย์ 2D แบบสี่เหลี่ยมในรูปแบบเดียวกับอินพุต คุณได้รับอนุญาตให้เพิ่มหรือลบจำนวนคอลัมน์นำหน้าหรือต่อท้ายของ.
s ใด ๆ แต่ผลลัพธ์จะต้องเป็นรูปสี่เหลี่ยมผืนผ้าและมีความสูงเท่ากับอินพุต มีการรับประกันว่ากระบวนการการจัดช่องไฟจะจบลงก่อนที่ขอบด้านซ้ายของภาพนิ่งที่สองที่ป้อนเข้าที่ขอบด้านซ้ายของอินพุตแรก
กฎและการให้คะแนน
จำนวนไบต์ต่ำสุดในแต่ละภาษาการเขียนโปรแกรมชนะ ใช้กฎมาตรฐานของกอล์ฟ
กรณีทดสอบ
เพื่อช่วยในการคัดลอกวางกรณีทดสอบเหล่านี้จะได้รับเป็นรายการของสตริง
["#"] ["#"] -> ["#.#"]
["#.","..",".#"] ["##","..","##"] -> ["#..##",".....",".#.##"]
["..#","#..","#.."] ["...","..#","###"] -> ["..#..","#...#","#.###"]
["###.","##..","#...","...."] ["....","...#","..#.",".#.."] -> ["###..","##..#","#..#.","..#.."]
["..##...","#......","#......"] [".....##",".....##",".#...#."] -> ["..##..##","#.....##","#.#...#."]
["...#.",".....",".....",".....","....#"] [".....","....#","#....",".....","....."] -> ["...#..",".....#",".#....","......","....#."]
["..#..",".....",".....",".....","....#"] [".....","....#","#....",".....","....."] -> ["..#..","....#","#....",".....","....#"]
["######","#.....","#.....","#.....","######"] ["......",".....#",".#...#",".....#","......"] -> ["######..","#......#","#..#...#","#......#","######.."]
["######","#.....","#.....","#.....","######"] ["......","......",".#....","......","......"] -> ["######","#.....","#.#...","#.....","######"]
["#...#","#..#.","#.#..","##...","#.#..","#..#.","#...#"] ["...#.","..#..",".#...",".#...",".#...","..#..","...#."] -> ["#...#..#","#..#..#.","#.#..#..","##...#..","#.#..#..","#..#..#.","#...#..#"]