Соревнование
Учитывая сетку чисел (10 <= N <= 99) Возвращаемое число с наибольшей суммой из четырех чисел, смежных с ним; это числа сверху, снизу, справа и слева от числа, но не от самого себя.
- Сам номер не в счет, только его четыре соседа.
- Число на краю должно рассматриваться, как если бы отсутствующее число было 0.
- Я разработаю тест, чтобы избежать связей.
- Числа не повторятся.
- Это код-гольф .
пример
Данный
56 98 32 96
12 64 45 31
94 18 83 71
Возвращение
18
Настоящий тест
Данный
98 95 67 66 57 16 40 94 84 37
87 14 19 34 83 99 97 78 50 36
18 44 29 47 21 86 24 15 91 61
60 41 51 26 10 58 11 62 55 71
42 85 56 12 46 81 93 65 49 77
89 13 74 39 54 76 92 33 82 90
96 88 70 79 80 28 25 20 75 68
38 63 17 72 53 48 73 30 45 69
64 35 32 31 23 43 22 52 27 59
Возвращение
13
Данный
82 43 79 81 94 36 17 64 58
24 52 13 87 70 18 28 61 69
16 99 75 21 50 44 89 90 51
49 80 63 31 54 65 41 55 38
67 91 76 78 23 86 83 14 73
46 68 62 77 34 48 20 74 10
33 35 26 97 59 66 25 37 32
12 92 84 27 85 56 22 40 45
96 15 98 53 39 30 88 71 29
60 42 11 57 95 19 93 72 47
Возвращение
15
Ответы:
MATL ,
20151312 байтСэкономили 5 байтов благодаря Emigna, 2 благодаря Джузеппе и еще один благодаря Луису Мендо.
Попробуйте онлайн!
объяснение
источник
APL (Dyalog Unicode) ,
3127262423 байта SBCS-2 спасибо коровам шарлатанам. -1 благодаря нгн.
Функция анонимного молчаливого префикса. Принимает матрицу в качестве аргумента. Предполагается
⎕IO
( я ndex O rigin)0
, что по умолчанию на многих системах.Попробуйте онлайн!
,
выровнять вход{
...}⊃
выбрать элемент из этого согласно результату следующей функции:⊢⍵
привести аргумент (отделяется3 3
от⍵
)…
⌺3 3
Примените следующую функцию к каждому соседству 3 на 3:⊢∘,
игнорировать информацию о краях в пользу округленной (сплющенной) окрестности(
…)
Применить следующую молчаливую функцию к тем-/
знакопеременная сумма (лит. право-ассоциативный минус редукция)+/-
вычесть это из суммы (это дает сумму каждого другого элемента),
Равель (сплющить) что (соседские суммы)⍒
производить индексы, которые бы сортировать⊃
выбрать первое (то есть индекс наибольшей суммы)источник
{⊃⍒,{+/1↓⍉4 2⍴⍵}⌺3 3⊢⍵}⊃,
? Редактировать: или даже{⊃⍒,{⊢/+⌿4 2⍴⍵}⌺3 3⊢⍵}⊃,
{⊃⍒,(+/--/)⊢∘,⌺3 3⊢⍵}⊃,
Желе , 22 байта
Попробуйте онлайн!
Отсутствие встроенных функций свертки, таких как MATL и Dyalog. Забудьте, что увашего языка есть встроенные функции свертки (спасибо @dylnan), но мы можем без них обойтись, частично благодаряŒM
иœị
. Во-первых, вспомогательная функция для вычисления соседей только в одном направлении, которая случайно транспонирует входные данные:Визуально вычисление выглядит так:
Интерпретация: ячейка (x, y) этого результата является суммой горизонтальных соседей ячейки (y, x). (Например, здесь мы видим, что f (A) [2,3] = 16 = 7 + 9 = A [3,1] + A [3,3] .)
Тогда основная функция:
источник
æc
?Желе , 18 байт
Попробуйте онлайн!
Вспомогательная функция находит соседей каждого элемента в каждой строке. Основная функция делает это со строками, а затем столбцы находят элемент с максимальной суммой окрестности.
источник
Wolfram Language (Mathematica) , 58 байт
Попробуйте онлайн!
источник
Python 2 , 127 байт
Попробуйте онлайн!
источник
Трафарет , 1 + 10 = 11 байт (не конкурирует)
Опция командной строки:
1
вычислить 1 поколениеПопробуйте онлайн!
y
из сглаженного исходного ввода⊃⍨
выберите⊃
первое⍒
в порядке убывания,
сглаженного+/
суммыN
окрестностей фон НейманаN без яисточник
y
язык, когда увидел, что ему нужен более легкий доступ к исходным данным. До этого надо было писать(,⍎'input')
вместоy
.JavaScript (ES6), 94 байта
Попробуйте онлайн!
Как?
Вместо того, чтобы искать максимум суммы четырех соседей, мы ищем минимум m суммы s их одного дополнения. Это позволяет нам обрабатывать неопределенные значения как нули, потому что:
Внутренняя карта () написана таким образом, что она не изменяет содержимое строки r . Следовательно, мы можем сохранить его результат в p , чтобы проверить соседей в следующей итерации.
Мы используем:
~r[x-1]
для левой клетки~r[x+1]
для правой клетки~p[x]
для верхней ячейки~(a[y+1]||0)[x]
для нижней клеткиисточник
K (нгн / к) ,
4340 байтПопробуйте онлайн!
источник
Java 8, 187 байт
Попробуйте онлайн.
Объяснение:
источник
Javascript ES6, 170 байт
источник