Dato un input di una "strada" di arte ASCII, l'output della strada con tutti i vicoli ciechi etichettati.
Questa è una strada:
########.....######..#..###
#......#######....#..#..#.#
#.##......#...#####..#..###
#..#####..#....#..#######.#
#......#...#####.....##...#
#..###.#...#...###...#..###
##########.#..#..##..#.##.#
..#......#.######.#..#.#.#.
..#......#.#..#.#.#..#.#.#.
..######.###..##..#########
Questa è la strada con vicoli ciechi etichettati con la lettera X:
########.....######..X..###
#......#######....#..X..#.#
#.XX......X...X####..X..###
#..XXXXX..X....#..#######.#
#......X...#####.....##...#
#..###.X...#...###...#..###
##########.#..X..##..#.##.X
..X......#.#XXXXX.#..#.#.X.
..X......#.#..X.X.#..#.#.X.
..XXXXXX.###..XX..######XXX
Un vicolo cieco è definito come qualsiasi tessera stradale che confina con n altre tessere stradali, almeno n-1 sono considerate vicoli ciechi già da questa regola. "Bordatura" è nelle quattro direzioni cardinali, quindi le tessere che bordano in diagonale non contano.
Questa regola viene applicata ripetutamente, poiché i vicoli ciechi di nuova creazione possono, essi stessi, creare più vicoli ciechi . Si noti inoltre che ogni tessera stradale che delimita solo un'altra tessera stradale viene considerata un vicolo cieco la prima volta che viene applicata la regola.
L'input e l'output possono essere una singola stringa (con linee separate da qualsiasi carattere che non sia #o .) o un array / elenco / ecc. Se la tua lingua lo supporta, puoi anche prendere input con ogni riga come argomento di funzione.
Si può presumere quanto segue sull'input:
Ci sarà sempre almeno un "loop", ovvero un gruppo di
#personaggi che possono essere seguiti all'infinito. (Altrimenti ogni singola tessera diventerebbe un vicolo cieco.)Ciò implica che l'ingresso sarà sempre 2 × 2 o più grande, poiché il loop più piccolo è:
## ##(Che, per inciso, dovrebbe essere prodotto senza modifiche.)
Tutti i
#personaggi saranno collegati. Cioè, se si eseguisse un riempimento di piena#, ne risentirebbero tutti.
Dato che si tratta di code-golf , vincerà il codice più breve in byte.
L'esempio sopra e la piccola griglia 2 × 2 possono essere usati come casi di test (non ci sono molti casi limite da affrontare in questa sfida).