Что такое Prime Square?
Простая площадь - это квадрат, где все четыре ребра - это разные простые числа.
Но какие?
И как мы их построим?
Вот пример 4x4 Prime Square
1009
0 0
3 0
1021
Сначала мы начнем с верхнего левого угла. Мы работаем по часовой стрелке .
Мы выбираем наименьшее простое число с 4
цифрами 1009 .
Тогда нам нужно наименьшее простое число с 4
цифрами, которое начинается с 9
. Это 9001
Третье (4-значное) простое число должно иметь 1
свою последнюю цифру (поскольку 9001 заканчивается 1
),
а также должно быть наименьшим 4-значным простым числом с этим свойством, которое ранее не использовалось в качестве ребра .
Это простое число 1021
Четвертое простое число должно иметь 4
цифры, начинающиеся с 1
(потому что 1009 начинается с a 1
) и заканчивающиеся на 1
(потому что 1021 начинается с a 1
)
Наименьшее 4-значное простое число с этим свойством, которое ранее не использовалось в качестве ребра, равно 1031
Твое задание
Вам будет дано целое число n
из 3 to 100
этого числа, которое будет размером n x n
квадрата.
Затем вы должны вывести этот квадрат точно в форме следующих тестовых случаев.
Тестовые случаи
n=3
Output
101
3 0
113
n=5
Output
10007
0 0
0 0
9 0
10061
n=7
Output
1000003
0 0
0 0
0 0
0 0
8 1
1000037
n=10
Output
1000000007
0 0
0 0
0 0
0 0
0 0
0 0
1 0
8 0
1000000021
n=20
Output
10000000000000000051
0 0
0 0
0 0
0 0
0 0
0 0
0 0
0 0
0 0
0 0
0 0
0 0
0 0
0 0
0 0
0 0
0 0
9 8
10000000000000000097
- Вход и выход могут быть заданы любым удобным способом .
- Вы можете распечатать его в STDOUT или вернуть как результат функции.
- Допустимы либо полная программа, либо функция.
- Любое количество посторонних пробелов является приемлемым, при условии, что числа выстраиваются соответствующим образом
- Стандартные лазейки запрещены.
- Это код-гольф, поэтому применяются все обычные правила игры в гольф, и выигрывает самый короткий код (в байтах).
РЕДАКТИРОВАТЬ
Это возможно для всех n
Вот простые числа дляn=100
1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000289
9000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000091
1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000711
1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002191
И для тех из вас, что вы не думаете, что это возможно, вот ВСЕ тестовые случаи
n
: P? Не проблема с задачей, просто любопытно.n
: дляn
= 1, мы не можем удовлетворить ограничение, что четыре ребра являются различными простыми числами, в то время как дляn
= 2, мы вынуждены выбрать 11,13,23, и в этом месте конечное ребро будет 12, который является составным. У меня нет доказательств того, что это возможно для всехn
> 2, но я был бы шокирован, узнав иначе: неофициально, чем больше цифр, тем больше «места для маневра», чтобы удовлетворить ограничения.n
есть по крайней мере два простых числа длины,n
начинающихся с 1 и заканчивающихся каждой из этих цифр (следовательно, мы можем выбрать нижний край), и есть по крайней мере три простых числа, начинающихся с 1 и заканчивающихся 1 (следовательно, мы можем выбрать левый край).Ответы:
05AB1E ,
646356534846 байт-1 байт благодаря @ Mr.Xcoder
-5 байт благодаря @Grimy .
Объяснение:
Посмотрите эту подсказку 05AB1E (раздел Как сжать большие целые числа? ), Чтобы понять, почему
Ž9¦
это так2460
. И посмотрите эту подсказку 05AB1E, чтобы понять, как выводится квадрат с помощьюΛ
встроенного Canvas.NĀiR}¦
I¯JŽ9¦SΛ
n=4
[1009,9001,1021,1031]
[1009,"001","201","301"]
Λ
I
¯J
"1009001201301"
n=4
Ž9¦S
[2,4,6,0]
[→,↓,←,↑]
источник
4F°ÅP¯KIù.Δ1sЮθÅ¿Š®θÅ?Šθ)¯gè}©ˆ}ð¯2ô`€R«€¦J«Ž9¦SΛ
49:°ÅPIùć4FÐN1›iR}¦ˆθUKD.ΔÐθsXÅ?‚sXÅ¿ª¯gè]Ið¯J«Ž9¦SΛ
48:°ÅPIùćÐ4FˆθUKD.ΔÐθsXÅ?‚sXÅ¿ª¯gè}ÐNĀiR}¦}I¯JŽ9¦SΛ
ÐθsXÅ?‚sXÅ¿ª
наθyXÅ?yXÅ¿)
. Не совсем уверен, почему)
работает в рамках цикла, так как я ожидал, что он включит простой список также в свой список в первой итерации. Но даже без этого использованиеyy
вместоÐss
все еще экономит 1 байт. :)05AB1E ,
35333231 байт-1 байт благодаря Кевину Круйссену
Попробуйте онлайн!
Объяснение:
источник
Θ
atNΘ
. Только1
правдива в 05AB1E, такif N
иif N == 1
совпадают.Θi
это 05AB1E эквивалентif (cond == true)
...Θ
прежнему может быть полезно , если вы хотите , чтобы преобразовать все , кроме1
к0
. Но для оператора ifi
это не обязательно так же, как ваш псевдокод с== true
.JavaScript (ES8),
205 ... 185 177173 байтаПопробуйте онлайн!
Как?
Шаг № 1: вычисление 4 простых чисел
Шаг № 2: форматирование вывода
источник
Желе ,
8982 байтаПопробуйте онлайн!
Может определенно быть игроком в гольф, но эффективно работает для больших чисел.
источник
Желе , 59 байт
Попробуйте онлайн!
Короче, но гораздо менее эффективный ответ желе.
источник
JavaScript, 484 байта
Последняя безымянная функция возвращает искусство ASCII.
Оригинальный код
Наилучшая и средняя сложность по времени: Ω (100 n n) в большой омега-записи Кнута (n шагов для вычитания n чисел, 10 n вычетов на проверку делимости, 10 n проверки делимости для простой проверки и Ω (1) простых проверок сделано ).
Наихудшая временная сложность: Ω (1000 n n) в большой омега-нотации Кнута (n шагов для вычитания n чисел, 10 n вычетов на проверку делимости, 10 n проверки делимости для простой проверки и 10 n простых проверок сделано).
Я подозреваю,
n=100
занимает около 10 203 расчетов.Sidenote: Я проверил синтаксис с использованием UglifyJS 3, и он стал лучше, чем я, сэкономив на 47,13% больше и заработав 282 байта. Тем не менее, я решил не делать этого, потому что чувствую, что это обман.
Он просто удалил последнюю функцию, так как они никогда не используются. На самом деле стало хуже, если он был назначен, а не удален, за исключением добавленного мной дополнительного кода.
источник