Вызов:
Исходя из матрицы входных данных, определите количество диагоналей и антидиагоналей с дублированными числами.
Так что, если у нас есть такая матрица:
[[aa,ab,ac,ad,ae,af],
[ba,bb,bc,bd,be,bf],
[ca,cb,cc,cd,ce,cf],
[da,db,dc,dd,de,df]]
Все диагонали и антидиагоналы будут:
[[aa],[ab,ba],[ac,bb,ca],[ad,bc,cb,da],[ae,bd,cc,db],[af,be,cd,dc],[bf,ce,dd],[cf,de],[df],
[af],[ae,bf],[ad,be,cf],[ac,bd,ce,df],[ab,bc,cd,de],[aa,bb,cc,dd],[ba,cb,dc],[ca,db],[da]]
Пример:
[[1,2,1,2,1,2],
[1,2,3,4,5,6],
[6,5,4,3,2,1],
[2,1,2,1,2,1]]
Все диагонали и антидиагоналы будут:
[[1],[2,1],[1,2,6],[2,3,5,2],[1,4,4,1],[2,5,3,2],[6,2,1],[1,2],[1],
[2],[1,6],[2,5,1],[1,4,2,1],[2,3,3,2],[1,2,4,1],[1,5,2],[6,1],[2]]
Удаление всех диагоналей и антидиагоналей, содержащих только уникальные номера:
[[2,3,5,2],[1,4,4,1],[2,5,3,2],[1,4,2,1],[2,3,3,2],[1,2,4,1]]
Таким образом, на выходе получается количество диагоналей и антидиагоналей, содержащих повторяющиеся числа:
6
Правила соревнований:
- Если входная матрица пуста, содержит только 1 число или содержит только уникальные числа по всей матрице, вывод всегда будет
0
. - Входные данные гарантированно содержат только положительные цифры
[1,9]
(если только они не полностью пусты). - Матрица всегда будет прямоугольной (т.е. все строки имеют одинаковую длину).
- Ввод / вывод является гибким. Входные данные могут быть приняты в виде списка целых чисел, или двумерного массива целых чисел, или объекта Matrix, в виде строки и т. Д. И т. Д. Вам также разрешено использовать одно или оба измерения матрицы в качестве дополнительного ввода если бы это сэкономило байты на выбранном вами языке.
Основные правила:
- Это код-гольф , поэтому выигрывает самый короткий ответ в байтах.
Не позволяйте языкам кода-гольфа отговаривать вас от публикации ответов на языках, не относящихся к кодексу. Попробуйте придумать как можно более короткий ответ для «любого» языка программирования. - Стандартные правила применяются к вашему ответу с правилами ввода / вывода по умолчанию , поэтому вам разрешено использовать STDIN / STDOUT, функции / метод с правильными параметрами и типом возврата, полные программы. Ваш звонок.
- По умолчанию лазейки запрещены.
- Если возможно, добавьте ссылку с тестом для вашего кода (например, TIO ).
- Кроме того, добавление объяснения для вашего ответа настоятельно рекомендуется.
Тестовые случаи:
Input: Output:
[[1,2,1,2,1,2], 6
[1,2,3,4,5,6],
[6,5,4,3,2,1],
[2,1,2,1,2,1]]
[[]] 0
[[1,2], 0
[3,4]]
[[1,1], 2
[1,1]]
[[9,9,9], 6
[9,9,9],
[9,9,9]]
[[7,7,7,7], 8
[7,7,7,7],
[7,7,7,7]]
[[1,1,1], 1
[2,3,4],
[2,5,1]]
[[1,8,4,2,9,4,4,4], 12
[5,1,2,7,7,4,2,3],
[1,4,5,2,4,2,3,8],
[8,5,4,2,3,4,1,5]]
[[1,2,3,4], 4
[5,6,6,7],
[8,6,6,9],
[8,7,6,5]]
row
иcol
в мой список «чрезвычайно ситуативных функций». Действительно умное решение.