pengantar
Kerning berarti menyesuaikan jarak antara huruf-huruf teks. Sebagai contoh, perhatikan kata yang Top
ditulis dengan tiga mesin terbang berikut:
##### ..... .....
..#.. ..... .....
..#.. ..##. .###.
..#.. .#..# .#..#
..#.. .#..# .#..#
..#.. ..##. .###.
..... ..... .#...
..... ..... .#...
Kita bisa mengisi celah di antara mesin terbang dengan titik-titik dan diselesaikan dengan itu, tetapi celah itu entah bagaimana terlihat terlalu lebar. Sebaliknya, kami menggeser mesin terbang ke kiri sehingga hampir menyentuh:
#####........
..#..........
..#..##..###.
..#.#..#.#..#
..#.#..#.#..#
..#..##..###.
.........#...
.........#...
Ini terlihat jauh lebih baik! Perhatikan bagaimana bilah T
di atas batas kiri o
. Dalam tantangan ini, tugas Anda adalah mengimplementasikan program kerning sederhana untuk mesin terbang persegi panjang tersebut.
Proses kerning
Pertimbangkan dua array karakter 2D persegi panjang .
dan #
dari bentuk yang sama. Dalam proses kerning sederhana kami, pertama-tama kami menempatkan array berdampingan, dengan satu kolom .
s di antaranya. Kemudian, kita memindahkan masing-masing #
dalam larik kanan satu langkah ke kiri, sampai beberapa #
s larik kiri dan kanan berdekatan secara ortogonal atau diagonal. Hasil dari kerning adalah langkah sebelumnya kami memperkenalkan #
s yang berdekatan . Tugas Anda adalah mengimplementasikan proses ini.
Mari kita ambil contoh:
Inputs:
..###
#....
#....
..##.
...#.
...##
..###
....#
Process:
..###....#.
#........##
#.......###
..##......#
..###...#.
#.......##
#......###
..##.....#
..###..#.
#......##
#.....###
..##....#
..###.#.
#.....##
#....###
..##...#
..####.
#....##
#...###
..##..#
Dalam array terakhir, kami memiliki pasangan #
s yang berdekatan , sehingga array kedua-ke-terakhir adalah hasil dari proses kerning.
Masukan dan keluaran
Untuk mempermudah, Anda hanya perlu menangani kerning dua mesin terbang. Input Anda adalah dua array 2D persegi panjang, dalam salah satu format berikut:
- 2D array integer, dengan 0 berdiri untuk
.
dan 1 untuk#
. - String multiline berakhir
.#
. - Array string berakhir
.#
. - 2D array karakter
.#
.
Jika input diambil sebagai string tunggal, Anda dapat menggunakan pembatas yang masuk akal. Namun, pembatas harus berada di antara dua array, artinya Anda tidak diperbolehkan untuk mengambil dua input yang sudah dipasangkan baris-demi-baris.
Output Anda adalah hasil dari proses kerning yang diterapkan pada dua array ini, yang merupakan array 2D persegi panjang dalam format yang sama dengan input. Anda diizinkan untuk menambah atau menghapus sejumlah kolom .
s terkemuka atau tertinggal , tetapi hasilnya harus persegi panjang dan memiliki ketinggian yang sama dengan input. Dijamin bahwa proses kerning berakhir sebelum tepi kiri input kedua meluncur di atas tepi kiri input pertama.
Aturan dan penilaian
Hitungan byte terendah dalam setiap bahasa pemrograman menang. Aturan standar kode-golf berlaku.
Uji kasus
Untuk membantu dengan copy-paste, test case ini diberikan sebagai daftar string.
["#"] ["#"] -> ["#.#"]
["#.","..",".#"] ["##","..","##"] -> ["#..##",".....",".#.##"]
["..#","#..","#.."] ["...","..#","###"] -> ["..#..","#...#","#.###"]
["###.","##..","#...","...."] ["....","...#","..#.",".#.."] -> ["###..","##..#","#..#.","..#.."]
["..##...","#......","#......"] [".....##",".....##",".#...#."] -> ["..##..##","#.....##","#.#...#."]
["...#.",".....",".....",".....","....#"] [".....","....#","#....",".....","....."] -> ["...#..",".....#",".#....","......","....#."]
["..#..",".....",".....",".....","....#"] [".....","....#","#....",".....","....."] -> ["..#..","....#","#....",".....","....#"]
["######","#.....","#.....","#.....","######"] ["......",".....#",".#...#",".....#","......"] -> ["######..","#......#","#..#...#","#......#","######.."]
["######","#.....","#.....","#.....","######"] ["......","......",".#....","......","......"] -> ["######","#.....","#.#...","#.....","######"]
["#...#","#..#.","#.#..","##...","#.#..","#..#.","#...#"] ["...#.","..#..",".#...",".#...",".#...","..#..","...#."] -> ["#...#..#","#..#..#.","#.#..#..","##...#..","#.#..#..","#..#..#.","#...#..#"]