Головоломка 3x3 Hexa Prime Square
Вступление
Мы рассматриваем 3x3 квадратов шестнадцатеричных цифр (от 0
до F
), таких как:
2 E 3 1 F 3
8 1 5 7 2 7
D D 5 B B 9
Мы определяем площадь 3x3 Hexa Prime ( HPS3 ) как такой квадрат, для которого все шестнадцатеричные числа, читаемые слева направо и сверху вниз, являются нечетными простыми числами (то есть простыми числами больше 2).
Это верно для левого квадрата и неверно для правого квадрата:
2 E 3 --> 0x2E3 = 739 1 F 3 --> 0x1F3 = 499
8 1 5 --> 0x815 = 2069 7 2 7 --> 0x727 = 1831
D D 5 --> 0xDD5 = 3541 B B 9 --> 0xBB9 = 3001
| | | | | |
| | +---> 0x355 = 853 | | +---> 0x379 = 889 = 7 x 127
| +-----> 0xE1D = 3613 | +-----> 0xF2B = 3883 = 11 x 353
+-------> 0x28D = 653 +-------> 0x17B = 379
Цель
Учитывая список из 9 шестнадцатеричных цифр, ваша цель состоит в том, чтобы найти устройство, которое формирует HPS3.
Пример:
Input: 123558DDE
Possible output: 2E3815DD5 (a flattened representation of the above left example)
Ввод, вывод
Форматы ввода и вывода являются гибкими. Единственное требование состоит в том, чтобы выходные цифры располагались слева направо и сверху вниз. Ниже приведены некоторые возможные варианты:
"2E3815DD5"
[ 0x2, 0xE, 0x3, 0x8, 0x1, 0x5, 0xD, 0xD, 0x5 ]
[ "2", "E", "3", "8", "1", "5", "D", "D", "5" ]
[
[ 0x2, 0xE, 0x3 ],
[ 0x8, 0x1, 0x5 ],
[ 0xD, 0xD, 0x5 ]
]
[ "2E3", "815", "DD5" ]
etc.
Использование одного и того же формата для ввода и вывода не требуется.
правила
- Это код-гольф, поэтому выигрывает самый короткий ответ в байтах. Стандартные лазейки запрещены.
- Ваш алгоритм должен быть детерминированным
- Вы не можете просто сортировать массив до тех пор, пока он не станет действительным, даже детерминированным способом (используя постоянное случайное начальное число).
- Вы можете перечислить все возможные решения для данного входа, но это не требуется и не подлежит бонусу.
- Вы не обязаны поддерживать материалы, которые не допускают никакого решения. (Это прекрасно, если ваш код зацикливается вечно или в этом случае происходит сбой.)
Контрольные примеры
Input Possible output
---------------------------
123558dde 2e3815dd5
1155578ab a7b851551
03bddffff ffd0dfb3f
35899beff 8f99e3bf5
15899bbdf 581bb9fd9
14667799f 6f1469779
13378bcdd 78d1cd33b
24577bbdd 7274bd5db
1118bbddd 11b18dbdd
223556cdd 623c25dd5
12557899a 8a5295971
113579bbd 5b3db7191
code-golf
primes
hexadecimal
Arnauld
источник
источник
Ответы:
05AB1E ,
2321 байтИспользует кодировку CP-1252 .
Слишком медленно для TIO.
объяснение
источник
Python 2,
212206197194 байтаТребуется ввод в кавычки, как
"123558dde"
Экономия 9 и 3 байтов благодаря Джонатану Аллану
Найден новый простой фильтр от xnor (изменен квадрат, так как здесь мы не хотим, чтобы 2 был простым), старый простой фильтр от Боба
источник
P+=[k][:p%k]
- когдаp%k
не0
срез будет давать[k]
, когда0
она даст[]
.from itertools import*
это аккуратная игра в гольф, которая сэкономит пару байтов. Также отказаться от эффективности и сделатьk<5e3
.P
- это здорово.print[s for s in map(''.join,permutations(input()))if all(int(s[3*i:][:3],16)in P and int(s[i::3],16)in P for i in(0,1,2))]
Pyth,
2321 байтТайм-аут в Интернете, но заканчивается на моем ноутбуке через 1,5 минуты. Вводит в кавычки.
объяснение
источник
Желе ,
3430 байт(Я должен быть в состоянии использовать nfind, чтобы просто получить первый матч,
1#
вместоÐfḢ
меньшего количества байтов и большей скорости, но я вижу ошибки, когда пытаюсь. РЕДАКТИРОВАТЬ: написал некоторые изменения, чтобы реализовать это в Jelly.)Перебор всех перестановок методом грубой силы, отфильтрованный по критериям и возвращающий первое совпадение.
Слишком медленно для TtyItOnline. Примеры локального вывода:
Как?
источник
J, 49 байт
Поиск методом грубой силы, который проверяет все перестановки и выводит все перестановки, которые удовлетворяют условиям головоломки.
Производительность достаточно хорошая, чтобы вычислить каждый тестовый пример за 3 секунды.
использование
объяснение
источник
Mathematica, 115 байт
На входе должен быть список символов (например
{"1", "2", "3", "5", "5", "8", "D", "D", "E"}
)источник
Рубин, 146 байт
Анонимная функция принимает массив из девяти целых чисел, возвращает одно решение в виде массива из девяти целых чисел. Полагается на вспомогательной функции
g
и аrequire
.Эта 140-байтовая версия печатает все возможные решения с целыми числами в виде десятичных дробей (не уверен, разрешено ли это.)
Неуправляемый в тестовой программе
источник
Groovy, 134 байта
Находит все возможные решения и возвращает их в виде массива, возвращает,
[]
если решения не существует.Пример ввода:
123558dde
Вывод:
Пример ввода:
222222222
Вывод:[]
Если кто-то хочет, чтобы я это прокомментировал, кричите на брата.
источник