Я говорю об этом вопросе , посмотрите на него, если вы немного запутались.
Основная задача
Ваша задача - выводить сцепленные целые числа в порядке убывания, но увеличивая максимальное целое число при каждом нажатии 1
(для этого вопроса 1 будет рассматриваться как простое число) . Хотя это и не похоже на первый вопрос, здесь возникает сложная часть: все выведенные числа могут быть только простыми числами . Они будут объединены в одну строку без пробелов и переносов. Ваш вклад также будет простым числом .
Пример:
1
21
321
5321
75321
1175321
Valid output:
1213215321753211175321
вход
Ваш код может принимать только один вход: наибольшее простое число для печати. Этот вход может поступать откуда угодно (графический, STDIN). Вы уверены, что ввод является простым числом.
Выход
Вам нужно будет вывести итоговое число. Вы можете получить этот номер, продолжая обратный отсчет, считайте только число, если оно простое, а затем соедините все результаты вместе в одно число. Последний номер «строки» (например 7, 5, 3, 2, 1
) должен быть напечатан полностью. Выходные данные могут быть любыми (числа, строки, графические данные), если они доступны для чтения. Для проверки ваших тестов применяется тот же шаблон Regex:
^(\D*(\d)+\D*|)$
Если ваш вывод не соответствует этому шаблону, ваш код недействителен.
правила
- Входные данные гарантированно просты, не включают обработку ошибок, если вы не хотите / не хотите.
- Выход может быть только полносвязным числом, поэтому не может быть разделен ничем, даже символом новой строки.
- Ваш алгоритм должен проверять не первый экземпляр
N
появления (например,17
in1175321
), а первый экземплярN
фактического числа. - Ваш вклад будет положительным, не добавляйте обработку, если вы не хотите / не хотите.
Контрольные примеры
Input: -2, 0
Output: Any, or none (number isn't positive)
Input: 9
Output: Any, or none (number isn't prime)
Input: 1
Output: 1
Input: 7
Output: 121321532175321
Input: 23
Output: 1213215321753211175321131175321171311753211917131175321231917131175321
победитель
Это код-гольф , поэтому выигрывает автор кода с наименьшей длиной в байтах!
1
это простое определение.1
прямо противоречит спецификации, которая « гарантирует », что входное число будет простым числом. 2. Выходная спецификация, кажется, содержит множество противоречий и неясностей. « Последний номер« ряда »(например, 7, 5, 3, 2, 1) должен быть напечатан полностью », - а остальные нет? « Применяется тот же шаблон Regex для проверки ваших тестовых случаев », но « Выходные данные могут быть только полносвязными числами, поэтому не разделены ничем », что противоречит этому регулярному выражению. Но регулярное выражение в любом случае явно изворотливо, потому что оно допускает пустую строку, и нет никакого ввода, которое могло бы это дать.Ответы:
Желе , 9 байт
Попробуйте онлайн!
Как это устроено
источник
V
в списке.)Обработка, 161 байт
Одна функция выполняет проверку первичности, другая - печать. Позвони
t(7)
Ungolfed
Первая функция выполняет проверку первичности. Он возвращает
int
вместо a,boolean
так как таким образом сохраняется больше байтов. (int
вместоboolean
,0
вместоfalse
,1
вместоtrue
)Вторая функция выводит строку. Он перебирает все числа, если это не простое число, переходите к следующей итерации. Если это простое число, оно продолжается до печати внутри другого
for
цикла. Опять же, если число простое, то мы его печатаем, иначе нет.источник
Желе , 12 байт
Попробуйте онлайн!
Если бы это не было для
1
s, мой код был бы толькоÆRÆRUVV
для 7 байтов.Расширенное объяснение:
Ирландский парень (называемый Деннис?) Как-то превзошел меня, лол.
источник
05AB1E , 19 байтов
Попробуйте онлайн!
объяснение
источник
DpÏ
заявлением. Хорошо сделано!Брахилог , 17 байт
Попробуйте онлайн!
Кажется, не может быть короче ...
объяснение
источник
Язык GameMaker, 169 байт
Основная функция (68 байт)
Функция p (46 байт)
Функция q (55 байт)
источник
MATL , 15 байт
Попробуйте онлайн!
источник
Perl 6 , 41 байт
( Попробуйте онлайн. )
Объяснение:
1, |grep(*.is-prime, 2..$_)
: Последовательность из 1 и простых чисел ...(1 2 3 5)
[,] ...
: Уменьшить ("сложить") через оператор запятой ...(1 2 3 5)
[\,] ...
: С промежуточными результатами ( треугольное уменьшение ) ...((1) (1 2) (1 2 3) (1 2 3 5))
[\R,] ...
: Применить обратный мета-оператор к запятой ...((1) (2 1) (3 2 1) (5 3 2 1))
[~] flat ...
: Удалить вложение списка и сложить оператор строки concat ...1213215321
(Это основано на моем ответе на предыдущий вызов .)
источник
Mathematica, 61 байт
Безымянная функция, принимающая целочисленный аргумент и возвращающая строку. (Если входное значение не является простым, оно просто «округляет» до ближайшего простого; если входное значение не положительное, оно делает вид, что оно равно 1.)
Эта реализация использует неприятный трюк из ответа Мартина Эндера на аналогичный предыдущий вызов (который сказал, что эта старая собака не может выучить новые трюки?): Злоупотребление,
<>
чтобы сгладить вложенный список целых чисел.Вложенный рассматриваемый список начинается с создания такого же вложенного списка, как и в этом ответе, с соответствующей длиной (определяется
PrimePi@#
числом простых чисел до и включая входные данные); затемPrime
применяется к каждому элементу. Например, для ввода,5
являющегося 3-м простым числом, кодRange[Range@PrimePi@#,0,-1]
дает результат{{1,0},{2,1,0},{3,2,1,0}}
, и применениеPrime
к каждому элементу дает,{{2,Prime[0]},{3,2,Prime[0]},{5,3,2,Prime[0]}}
поскольку 1-е, 2-е и 3-е простые числа равны 2, 3 и 5 соответственно. Я горжусь тем, что мне удалось добавить еще больше ошибок в подход Мартина Эндера - Mathematica жалуется каждый раз, когда пишетPrime[0]
.Prime[0]
не вещь, но это нормально:/.Prime@0->1
превращает их всех в1
с. И мы также хотим получить1
спереди, поэтому мы заменим""
ответ Мартина Эндера на простой1
, который фактически экономит байт.источник
PHP, 72 байта
Беги остроумие
-r
сломать
источник
Pyth - 12 байт
Тестовый пакет .
источник