Напишите программу или функцию, которая принимает положительное целое число N и сетку десятичных цифр (от 0 до 9) с шириной W и высотой H (которые также являются положительными целыми числами). Можно предположить, что N будет меньше или равно большему из W и H.
Напечатайте или верните самое большое непрерывное число из N цифр, которое появляется в сетке горизонтально или вертикально, записанное в обычном порядке чтения или в обратном порядке.
- Диагональные линии цифр не учитываются.
- Сетка не оборачивается, то есть не имеет периодических граничных условий.
Например, сетка 3 × 3
928
313
049
будет иметь 9
как выход для N = 1, 94
как выход для N = 2, и 940
как выход для N = 3.
Сетка 4 × 3
7423
1531
6810
будет иметь 8
в качестве выхода для N = 1, 86
для N = 2, 854
для N = 3 и 7423
для N = 4.
Сетка 3 × 3
000
010
000
будет иметь выход 1
для N = 1, а 10
для N = 2 и N = 3 ( 010
также справедливо для N = 3).
Сетка 1 × 1
0
будет иметь выход 0
для N = 1.
Вы можете принять вход в любом удобном разумном формате. например, сетка может представлять собой строку цифр, разделенную символом новой строки, или многомерный массив, или список списков цифр и т. д. На выходе допускаются начальные нули, если они были частью сетки.
Это код-гольф , поэтому выигрывает самый короткий код в байтах, но я также начисляю баллы Брауни (то есть, скорее всего, положительные отзывы) за ответы, которые могут показать, что их алгоритм вычислительно эффективен.
Ответы:
Pyth,
2219 байт3 байта благодаря Якубе.
Попробуйте онлайн.
Если нам разрешено печатать начальные нули, код будет 18 байтов:
источник
s
.CJam,
39363534 байтаПросто быстро, прежде чем @Dennis просыпается: P
Попробуйте онлайн .
объяснение
Основной алгоритм состоит в том, чтобы взять все четыре поворота сетки и разбить каждый ряд на куски длины
N
(или длины рядов, в зависимости от того, что меньше). Затем преобразовать куски в целые и взять самые большие.источник
few
что-то особенное или это три отдельные команды?ew
применяемый с помощьюf
или «карта с дополнительным параметром». Например,["abcd" "efgh"] 2 few
результаты в[["ab" "bc" "cd"] ["ef" "fg" "gh"]]
.бурлеск
Пока не окончательный ответ, но, вероятно, он будет работать так:
Как точно дается N и сетка?
источник