- 21, Oct 2024
- #1
Но разве это искусство? это эсоланг, созданный аис523, где одним шагом является разбиение программы на ортогонально соединенные «плитки»:
1000
1010
0001
Каждая отдельная буква показывает другую плитку. Интересно, программы в разделе «Но разве это искусство?» полагайтесь только на ориентацию самих плиток, а не на их размещение. Это означает, что приведенная выше программа функционально эквивалентна
1000
0010
0110
Но это не эквивалентно
1111111110
0111111101
1000010000
0010001110
0110011011
0100100010
0100011001
Или
1111111110
0111111101
1000010000
0010001110
0110011011
0100100010
0100011001
Вам нужно взять две двоичные прямоугольные матрицы: \$A\$ и \$B\$. Каждая матрица будет иметь ноль или более «плиток», состоящих из
1s that are orthogonally connected to zero or more other
0
1
10с. Затем вы должны вывести два различных непротиворечивых значения, которые указывают, эквивалентны ли плитки в \$A\$ и \$B\$ согласно определению эквивалентных сеток But Is It Art?.
01
Например,
000000
000000
000000
000000
000000
000000
000000
000000
Эквивалентны. Если вы его не видите, попробуйте заменить
010010s with letters, similar to above, to form groups of differently lettered tiles:
011111
110001
010001
010111
101101
110001
111111
11111011011
01100000100
10101010010
10101001001
Вы можете предположить, что матрицы всегда будут прямоугольными и будут содержать только
11111and
01100
00100
10101
10010
01101
10010
10001
00110
110000101. Они никогда не будут пустыми, но не обязательно содержат
000000000
011011101
101101011
010110111
111101010
010100011
0110111, or to be the same dimensions.
0011010
0101101
1111010
0101001
0000011
0100111
0000010
1101011
Вы можете использовать эти матрицы как строки, разделенные новой строкой, с нецифровым разделителем, не являющимся символом новой строки; 2D вложенные массивы; строковое представление матрицы; или любое разумное представление двоичной матрицы. Вы можете принять входные данные в виде двух списков целых чисел, преобразованных из двоичных чисел, представляющих строки (поэтому пример
1111100101above would be
0111000111
0011111101
1010000010
1101010111
0111001010
1000111100
1100001010
1101001000
1101110)
1010010
0101110
1100000
1010100
0010101
1000101
1001110
0000110
1101011
Это так, поэтому побеждает самый короткий код в байтах
Тестовые случаи
А | Б | результат |
---|---|---|
|
A |
ЛОЖЬ |
1 |
0 |
истинный |
1 |
A = B =
0000AAA000 BB0000DD
0BB00A00A0 B00AAA00
0B000AAAA0 00C0A00A
C0DD00000E E0C0AAAA
C000000000
|
истинный |
1 |
A = B =
0000111000 11000011
0110010010 10011100
0100011110 00101001
1011000001 10101111
1000000000
|
ЛОЖЬ |
1 |
1 |
истинный |
DDD A
DDD AA
CC ABBBB
CC AB B
|
BBB A
B B AA
CC A
CC A
|
истинный |
CC A
CC A
BBBB AA
B B A
|
A BBBB
A B B
AA CC
A CC
|
ЛОЖЬ |
#код-гольф #код-гольф #задача принятия решения #двоичная матрица #сопоставление с образцом