Задача проста: ваша программа читает целое число в качестве входных данных и печатает, является ли оно простым или нет. Вы можете напечатать «да / нет», «правда / ложь» или что угодно, что однозначно идентифицирует результат.
Проблема в том, что код должен работать со своими транспонированными строками и столбцами.
Чтобы исключить очевидное решение (самое короткое «простое» решение, повторяющееся вертикально за символом с использованием комментариев), метрика немного отличается от обычного кода-гольфа:
Поскольку форматирование очень важно в этой задаче , размер кода измеряется в области наименьшего прямоугольника, в который помещается код. Другими словами, пробел считается, и строки должны быть заполнены равной длины (вы не должен сделать это, когда вы публикуете решение, для простоты). Например
int main()
{
return 0;
}
будет иметь размер 4 * 13 = 52 (и, очевидно, он не соответствует ни одному из двух критериев: простое обнаружение и транспонирование.)
Наименьший размер побеждает.
Вы можете использовать любой язык и любую библиотечную функцию, кроме случаев, когда единственная цель этой функции - найти, сгенерировать или обнаружить простые числа.
Редактировать:
Хотя победителем, скорее всего, станет решение от Golfscript, я получу награду в 50 баллов за лучшее решение на C или C ++!
Ответы:
GolfScript, 13 × 1
GolfScript поражает снова!
Повторяет ввод, если он является простым, иначе печатает ввод, соединенный с его наименьшим правильным делителем. Да, я знаю, что это растягивает определение «всего, что однозначно идентифицирует результат», но выполнение чего-то более сложного стоило бы несколько дополнительных символов. Если вы хотите более приятный вывод, добавление трех символов
;]!
в код приводит1
к простым и0
сложным числам.Алгоритм действительно неэффективен, просто пробное деление методом грубой силы от 2 до n − 1. Большинство операторов GolfScript являются только одиночными символами, поэтому этот код работает так же хорошо, как и транспонированный. Досадно, однако, что оператор присваивания
:
не допускает пробелов между собой и его целью, поэтому мне пришлось делать это полностью без переменных.источник
!
? Или ты задумал что-то более замысловатое?)
до того,,
что всегда найдет делитель и=
в конце.:
сопровождаемый символом новой строки, присваивает символ новой строки - так что это не значит, что пробел не разрешен, это просто то, что ему присваивается:
не допускает пробелов или чего-либо еще между собой и его целью: то, что сразу следует за ним, будь то пробел или любой другой токен (да, даже числа, строки или кодовые блоки), это то, что присваивается. Тем не менее, пробел - это то, о чем официально предупреждает официальная документация, и на то есть веская причина - поскольку в большинстве других мест добавление пробела между токенами в GolfScript ничего не делает (обычно, если оно не назначено ...).С,
2 * 70,2 * 60Принты
y
для простых чисел, ничего другого.РЕДАКТИРОВАТЬ : Изменен код, чтобы сохранить 10 символов. Должен быть запущен без параметров (так
m=1
).Метод обработки транспонирования довольно универсален и может применяться к любой программе.
Это основано на преобразовании этого:
К этому:
И оба значат просто
abcd
.источник
C - 13x13
Читает входные данные из стандартного ввода и печатает
1
для простого и0
для не простого.edit: теперь компилируется с gcc и clang, другие компиляторы не тестировались
источник
С, 12x12 символов
Двумерное решение, в отличие от моего другого ответа , основано на том же коде (и, как он, печатает
y
для простого, ничего для составного).Структура похожа на ответ Quasimodo , но мой код короче, и я думаю, что мое использование comemnts немного более эффективно, поэтому я могу уместить 12x12.
источник
Perl, 14 х 14
Я думаю, что я понимаю это. Укажите число в качестве аргумента командной строки, output
0
или1
. Вероятно, больше возможностей для улучшения.источник
Q
Неправильные комментарии для симметричного, неэффективного по характеру решения.
Принимает входные данные из STDIN, возвращает логическое значение.
источник
sqrt
там. При поиске простых чисел в коде-гольфе обычно выгодно (расточительно) делить весь путь до n, а не останавливаться на sqrt n.Желе , квадрат 2х2
Попробуйте онлайн!
Я думаю, что у меня есть часть транспонирования, и если это так, то транспонированная версия этого
Попробуйте онлайн!
(это тот же код)
источник
05AB1E ,
1x51x3 (53 байта )Это не одна большая программа; каждая строка представляет собой отдельную альтернативную программу для выполнения первичной проверки (без использования встроенной первичной проверки).
-2 байта благодаря Грими .
Пробелы между строками не используются в 05AB1E, и, поскольку я использую только однобайтовые команды, это прекрасно работает после транспонирования.
Выходы
1
/0
для правды / фальси соответственно.Попробуйте первый онлайн или проверьте еще несколько тестовых примеров для всех из них (с встроенным eval
.V
) .Транспонирование: попробуйте первый онлайн .
Объяснение:
Примечание: Если только / значение falsey truthy является действительным, и это не нужно есть , чтобы быть различны, либо ,
Òg
илиÕα
может быть использовано в качестве действительного 2-byters, так как только1
это truthy в 05AB1E, а все остальное falsey: Попробуйте оба их для некоторых тестовых случаев .Если бы встроенные функции были разрешены, одного
p
было бы достаточно: попробуйте онлайн или проверьте еще несколько тестов .источник
ÑPQ
илиÒgΘ
илиÒQP
за 3 байта. (Ñ
иÒ
оба имеют другие цели, кроме «найти, сгенерировать или обнаружить простые числа», поэтому, по моим сведениям, они не включены в бан).ÕαΘ
,fQO
,fs¢
,f`Q
Õα
Хотя не знал о ! Это довольно мило.Рунические чары , 7 × 1
Попробуйте онлайн!
Руника не заботится о ваших слабых попытках перестановки источников! В соответствии с требованием все еще функционировать после транспонирования источника стоимость +3 байта (+2 ширины прямоугольника) для модификатора отражения и точки входа.
Транспонированный или транспонированный, но оставляющий объединяющий символ прикреплен к его родителю .
источник
Дзайма / APL, 8 × 9 = 72
Попробуйте оригинал или транспонирован !
источник
Питон 3 , размер 28 х 28
Попробуйте онлайн!
источник
JavaScript (Node.js) ,
2625x5Попробуйте онлайн!
Транспозиция:
Попробуйте онлайн!
источник
APL (Dyalog Unicode) , 10x11
Попробуйте онлайн!
Исправлена функция для соответствия спецификациям. Спасибо @ Adám за хедз-ап.
Возвращает 0 для правдивых, 1 для ложных .
Как
Транспонированная версия точно такая же.
источник