Давайте попробуем это снова.
Цель этого конкурса - создать две части кода, которые являются анаграммами друг друга (они должны содержать одни и те же байты в разном порядке), и они будут выполнять следующие задачи:
Нужно проверить, является ли введенное число счастливым или простым , и вывести, если число либо (например,
7
должно вывестиhappy prime
и4
вывестиsad non-prime
).Другой должен вывести свой размер кода в байтах в виде слова (60-байтовая программа выведет
sixty
, 39-байтовая программа выведетthirty-nine
).
Если какие-либо разъяснения необходимы по правилам, не стесняйтесь, сообщите мне.
Это кодовое соревнование по гольфу, поэтому выигрывает самая короткая программа!
code-golf
math
primes
source-layout
Джозия Уинслоу
источник
источник
/*program1*/program2
а потомprogram1/*program2*/
? Я думаю, что вы должны запретить комментарии.Ответы:
CJam,
804948 символовОБНОВЛЕНИЕ : Вдохновленный реализацией Дениса для вычисления суммы квадратов цифр, вот более короткая версия
Happy / Sad Prime / Не премьер:
Как это работает:
сорок восемь
Как это работает:
Попробуйте онлайн
Первая программа читает номер из STDIN
Мое оригинальное 80-символьное решение
Happy / Sad Prime / Не премьер:
восемьдесят
источник
CJam,
5049 байтовТест на счастье и первичность
Читает число из STDIN. Оба теста работают только для 64-битных целых чисел.
Попробуйте онлайн.
Собственная длина
Печать СОРОК девять .
источник
Golfscript - 81
Эта программа проверяет, является ли число счастливым и / или простым.
Эта программа, анаграмма последней, выдает «восемьдесят один» (его байтовый размер как слово).
Это должно служить примером.
источник
J - 87 символов
Наивная попытка сделать это в J. Не использовать стандартную библиотеку, хотя я сомневаюсь, что с ее использованием она станет еще короче.
Строка вверху - это глагол, принимающий целое число и определяющий его счастье и первичность в качестве выходной строки. Вторая строка - это выражение, возвращающее строку
eighty-seven
, а третья - постоянная функция, выполняющая то же самое. Я включил оба, потому что они оба были возможны, и потому что я не знаю, какое будет правление для ответов на функции, в отличие от программных, и у J нет такого понятия, как функции без аргументов - вы просто даете функции фиктивный аргумент.Мы теряем большинство символов, проверяя на счастье.
(,[:+/@:*:,.&.":@{:)
является основным телом, которое суммирует квадраты цифр числа, и(1-{:e.}:)
является проверкой того, произошло ли это число еще.sad`happy{~1 e.
превращает это в слово-результат, и мы присоединяем его кnon-prime
началу строки , потенциально обрезая четыре символа, если число было на самом деле простым.В анаграмме мы просто скрываем все биты, которых нет
'eighty-seven'
в строке, которую мы игнорируем. Я мог бы сделать лучше, если бы у J было больше букв для повторного использования, но это не так, ну да ладно.источник