introduzione
Crenatura significa regolare la spaziatura tra le lettere di un testo. Ad esempio, considera la parola Top
scritta con i seguenti tre glifi:
##### ..... .....
..#.. ..... .....
..#.. ..##. .###.
..#.. .#..# .#..#
..#.. .#..# .#..#
..#.. ..##. .###.
..... ..... .#...
..... ..... .#...
Potremmo semplicemente riempire gli spazi tra i glifi con punti ed essere fatto con esso, ma gli spazi in qualche modo sembrano troppo ampi. Invece, facciamo scorrere i glifi verso sinistra in modo che quasi si tocchino:
#####........
..#..........
..#..##..###.
..#.#..#.#..#
..#.#..#.#..#
..#..##..###.
.........#...
.........#...
Sembra molto meglio! Nota come la barra di si T
trova sopra il bordo sinistro di o
. In questa sfida, il tuo compito è implementare un semplice programma di crenatura per tali glifi rettangolari.
Il processo di crenatura
Considera due matrici di caratteri 2D rettangolari di .
e #
della stessa forma. Nel nostro semplice processo di crenatura, posizioniamo prima le matrici fianco a fianco, con una colonna di .
s in mezzo. Quindi, spostiamo ciascuno #
nell'array destro di un passo verso sinistra, fino a quando alcuni #
s dell'array destro e sinistro sono adiacenti ortogonalmente o diagonalmente. Il risultato della crenatura è il passo prima di introdurre #
s adiacenti . Il tuo compito è implementare questo processo.
Facciamo un esempio:
Inputs:
..###
#....
#....
..##.
...#.
...##
..###
....#
Process:
..###....#.
#........##
#.......###
..##......#
..###...#.
#.......##
#......###
..##.....#
..###..#.
#......##
#.....###
..##....#
..###.#.
#.....##
#....###
..##...#
..####.
#....##
#...###
..##..#
Nell'ultimo array, abbiamo nuove coppie adiacenti di #
s, quindi il penultimo array è il risultato del processo di crenatura.
Ingresso e uscita
Per semplicità, devi solo gestire la crenatura di due glifi. I tuoi input sono due array 2D rettangolari, in uno dei seguenti formati:
- Matrici 2D di numeri interi, con 0 che sta per
.
e 1 per#
. - Stringhe multilinea
.#
. - Matrici di stringhe sopra
.#
. - Matrici 2D dei personaggi
.#
.
Se gli input sono considerati come una singola stringa, è possibile utilizzare qualsiasi delimitatore ragionevole. Tuttavia, il delimitatore dovrebbe passare tra i due array, il che significa che non è consentito prendere i due input già accoppiati riga per riga.
L'output è il risultato del processo di crenatura applicato a questi due array, che è un array 2D rettangolare nello stesso formato degli input. È consentito aggiungere o rimuovere un numero qualsiasi di colonne iniziali o finali di .
s, ma l'output deve essere rettangolare e avere la stessa altezza degli input. È garantito che il processo di crenatura termina prima che il bordo sinistro del secondo input scivoli sul bordo sinistro del primo input.
Regole e punteggio
Vince il conteggio dei byte più basso in ciascun linguaggio di programmazione. Si applicano le regole standard del code-golf .
Casi test
Per facilitare il copia-incolla, questi casi di test vengono forniti come elenchi di stringhe.
["#"] ["#"] -> ["#.#"]
["#.","..",".#"] ["##","..","##"] -> ["#..##",".....",".#.##"]
["..#","#..","#.."] ["...","..#","###"] -> ["..#..","#...#","#.###"]
["###.","##..","#...","...."] ["....","...#","..#.",".#.."] -> ["###..","##..#","#..#.","..#.."]
["..##...","#......","#......"] [".....##",".....##",".#...#."] -> ["..##..##","#.....##","#.#...#."]
["...#.",".....",".....",".....","....#"] [".....","....#","#....",".....","....."] -> ["...#..",".....#",".#....","......","....#."]
["..#..",".....",".....",".....","....#"] [".....","....#","#....",".....","....."] -> ["..#..","....#","#....",".....","....#"]
["######","#.....","#.....","#.....","######"] ["......",".....#",".#...#",".....#","......"] -> ["######..","#......#","#..#...#","#......#","######.."]
["######","#.....","#.....","#.....","######"] ["......","......",".#....","......","......"] -> ["######","#.....","#.#...","#.....","######"]
["#...#","#..#.","#.#..","##...","#.#..","#..#.","#...#"] ["...#.","..#..",".#...",".#...",".#...","..#..","...#."] -> ["#...#..#","#..#..#.","#.#..#..","##...#..","#.#..#..","#..#..#.","#...#..#"]