Напишите программу или функцию, которая принимает многострочную строку 0
«s» и 1
«s». Никаких других символов в строке не будет, и строка всегда будет прямоугольной (все строки будут иметь одинаковое количество символов) с размерами, равными 1 × 1, но в противном случае символы 0
«s» и 1
«s» могут быть расположены произвольно.
Вы можете предположить, что в строке есть дополнительный завершающий символ новой строки, и при желании вы можете использовать любые два различных печатаемых символа ASCII вместо 0
и 1
.
Выведите или верните истинное значение, если все области, связанные путями, и 0
s, и 1
s в строке являются сплошными прямоугольниками , в противном случае выведите ложное значение .
Связно область из 0
«средств s , что из любого 0
региона, все остальные 0
» s может быть достигнуто только перемещения вверх, вниз, влево и вправо к другому 0
«s (и не двигаться по диагонали, не двигаясь к любому 1
, и не выходя за пределы строки). Та же самая идея относится к 1
областям, связанным путями.
Твердый прямоугольник из 0
«означает сек всей площади прямоугольника не заполняется 0
» ы и нет 1
«ы. Та же идея относится и к 1
сплошным прямоугольникам.
Самый короткий код в байтах побеждает. Tiebreaker - более ранний ответ.
(Обратите внимание, что строка не имеет тороидальных граничных условий .)
Примеры
1) Эта входная строка имеет 3 области пути (2 для 0
и 1 для 1
). Только нижняя правая 00
область представляет собой сплошной прямоугольник, поэтому результат будет ложным.
0011
0111
0100
2) Эта входная строка имеет 4 подключенных пути пути (2 для обоих 0
и 1
). Все они представляют собой сплошные прямоугольники, поэтому вывод будет правдивым.
0011
0011
1100
3) Этот вход имеет 2 области, связанные путями, но только одна из них представляет собой сплошной прямоугольник, поэтому на выходе будет ложным.
00000000
01111110
00000000
4) Этот вход имеет только 1 соединенную область пути и тривиально представляет собой сплошной прямоугольник, поэтому вывод верен.
11111111
11111111
11111111
Тестовые случаи
Чуть T
ниже входной строки означает правдивость, F
означает ложь.
0
T
1
T
00
T
01
T
10
T
11
T
0000000
T
1111111
T
011100100100101100110100100100101010100011100101
T
00
11
T
01
10
T
01
11
F
00
01
F
11
11
T
110
100
F
111
000
T
111
101
111
F
101
010
101
T
1101
0010
1101
0010
T
1101
0010
1111
0010
F
0011
0111
0100
F
0011
0011
1100
T
00000000
01111110
00000000
F
11111111
11111111
11111111
T
0000001111
0000001111
T
0000001111
0000011111
F
0000001111
1000001111
F
1000001111
1000001111
T
1110100110101010110100010111011101000101111
1010100100101010100100010101010101100101000
1110100110010010110101010111010101010101011
1010100100101010010101010110010101001101001
1010110110101010110111110101011101000101111
F