Хорошо, моя вторая попытка в коде гольф, давайте посмотрим, как это происходит.
Представьте, что у вас есть массив из 9 значений. Теперь представьте этот массив в сетке 3х3.
Вам нужно вернуть соседей, которые имеют номера в качестве индексов массива.
0 | 1 | 2
3 | 4 | 5
6 | 7 | 8
Правила:
- Это код гольф, поэтому самый короткий ответ выигрывает.
- Индекс массива pretend может начинаться с 0 или 1. (хотя во всех примерах используется 0)
- Просто возвращение значений значений осуждается (как
if 3: return 046
) - Представление может быть просто процедурой / функцией / методом, но пример был бы хорош
- Возвращаемое значение может быть в любом порядке (например, если input равен 0, это может быть 13 или 31)
- если вы хотите, вывод может быть список чисел, например,
[0,4,6]
вместо046
- диагонали не учитываются, как видно из примеров.
Примеры:
вход:
0
выход:
13
вход:
3
выход:
046
вход:
4
выход:
1357
[0,4,6]
вместо046
?Ответы:
Желе ,
1613 байтПопробуйте онлайн!
Как это работает
источник
МАТЛ ,
1716 байтМассив основан на 1, то есть содержит числа из
1
до9
.Попробуйте онлайн!Или проверьте все тестовые случаи .
объяснение
Рассмотрим ввод
2
в качестве примера.источник
Mathematica, 32 байта
Использует график вместо массива.
GridGraph@{3,3}
строит график 3x3 в форме сетки, показанный ниже, который по умолчанию Mathematica помечает номерами 1–9 для вершин. Затем~AdjacencyList~#&
говорит вам соседи вершины.источник
Mathematica, 40 байт
1-индексироваться. Просто ищет ответ. Кто-то может сделать лучше в Mathematica?
источник
31[420,51,...,75][[#]]&
.GridGraph@{3,3}~AdjacencyList~#&
для 32 байтов, с 1-индексацией.Октава,
424039 байт1 на основе индекса.
Проверьте все контрольные примеры.
Объяснение:
Пример:
n = 2
(В Octave данные хранятся по столбцам.)
логический индекс, где расстояние равно 1:
источник
Python 2, 71 байт
1-indexed
Попробуйте онлайн!
Получение результата из предварительно определенного списка результатов короче (46 байт):
0-indexed
Попробуйте онлайн!
источник
Haskell ,
74 7168 байтПопробуйте онлайн! Использует 1-индексированную сетку. Пример использования:
f 3
возврат[2,6]
.Редактировать: Сохранено
36 байт, благодаря Орджану Йохансену!Для
7775 байтов следующая функция#
работает для произвольного размера сеткиm
:Попробуйте онлайн! Для каждого
n
списка[n-m,n-1,n+1,n+m]
есть все четыре соседа. Для каждой записиx
в этом списке мы проверяем-1<x
и ,x<m*m
чтобы убедиться ,x
не выше или ниже сетки,mod n 3>0||n-1/=x
чтобы обеспечить соблюдение границы левой сетки иmod(n+1)m>0||n+1/=x
для левой границы.источник
[n-3,n-1..n+3]
иgcd 3n>1
.gcd
часть. Так и должно было быть<3
, а потом перерывы наn==0
. Вы могли бы использовать этот трюк, если измените все на1
-индексированный.n/=2&&n/=5
может быть заменен наmod x 3>0
. (Илиgcd
версия с переиндексацией, которая теперь может использоваться дважды.)Рубин ,
51 4845 байтПопробуйте онлайн!
Создайте 2 массива с вертикальными и горизонтальными соседями, затем выберите один или несколько из них.
Рубиновый кодированный, 44 байта
... не стоит
источник
C
1009291837874 байта1-индексироваться. Спасибо @Neil за сохранение 4 байта.
Попробуйте онлайн!
Версия в жестком коде, 56 байт
0 индексированные
источник
n>3&&p(n-3)
и т. Д., Чтобы сохранить 4 байта? Во второй версии нельзя писать,l[]=
чтобы сохранить байт?Python 2, 51 байт
Основываясь на предыдущей версии моего ответа на Ruby , я нашел это интересным, потому что это был в основном тот же код, с использованием другого трюка и приводящий к тому же результату. Правильный ответ на этот вопрос помог мне немного больше ответить на вопрос о рубине.
По сути, у ruby она короче, потому что индекс среза массива является включающим,
+1
для компенсации требуется python .объяснение
Получите 2 массива (вертикальные и горизонтальные соседи), затем выберите один или оба на основе некоторых вычислений.
источник
Java 7, 63 байта (жестко закодировано)
0-indexed
(обратный порядок вывода, потому что
024
и046
не являются действительными целыми числами.)Все еще работает над не жестко закодированной версией, ноя могу заверить вас, что она не будет короче ..Попробуй это здесь.
82 байта
1-индексируется
на основе ответа @Steadybox 'C
Попробуй это здесь.
источник
JavaScript + lodash, 71 байт
источник
Пакет, 116 байт
0 индексированные.
источник