В воскресенье, время для раунда игры в гольф!
Проблема
Напишите кратчайший исходный код по количеству символов, чтобы определить, является ли входной номер "счастливым простым", "грубым простым", "счастливым неправым" или "грубым не-простым".
Ввод
Ввод должен быть целым числом, которое исходит из аргумента командной строки или stdin. Не беспокойтесь о работе с большими номерами, но делайте это, если можете/хотите. Поведение будет undefined для входных значений меньше 1, но 1 имеет определенный результат.
Выход
Вывод должен печатать тип числа: "счастливое правое", "грустное простое", "счастливое не-простое" или "печальное не-простое". Конечная новая строка необязательна.
Примеры
$ happyprime 139
happy prime
$ happyprime 2
sad prime
$ happyprime 440
happy non-prime
$ happyprime 78
sad non-prime
Определения
На всякий случай ваш мозг нуждается в обновлении.
Счастливое число
Из Википедии,
A счастливое число определяется следующий процесс. Начиная с любого положительное целое число, замените число на сумму квадратов его цифр и повторить процесс до тех пор, пока число равно 1 (где оно будет пребывание), или он бесконечно петляет в цикл, который не включает в себя: 1. числа, для которых этот процесс заканчивается 1 - счастливые цифры, а те, которые не заканчиваются на 1 - это несчастливые цифры (или печальные числа).
Например,
- 139
- 1 ^ 2 + 3 ^ 2 + 9 ^ 2 = 91
- 9 ^ 2 + 1 ^ 2 = 82
- 8 ^ 2 + 2 ^ 2 = 68
- 6 ^ 2 + 8 ^ 2 = 100
- 1 ^ 2 + 0 ^ 2 + 0 ^ 2 = 1
Основной номер
A prime number является целым числом больше 1 и имеет ровно два делителя: 1 и сам.
Happy Prime
Счастливое правое число, следовательно, является числом, которое является счастливым и простым.
Выбор ответа
Очевидно, что ответ будет самым коротким исходным кодом по количеству символов, который выводит указанные результаты во всех случаях, которые я тестирую. Я буду отмечать ответ, как только следующий (сообщество решит) вызов в гольф-код появится, поэтому мы можем сосредоточить все свои силы на этом.:)
Решение
Хорошо, похоже, что в городе появился новый гольф кода, и прошло около недели с момента публикации этого вопроса, поэтому в качестве ответа был отмечен самый короткий исходный код (gnibbler 64 character Golfscript). Тем не менее, мне понравилось как 99-символьное решение Mathematica от belisarius, так и критическое 107-символьное решение dc от Nabb.
Другим, отличная работа! На моем компьютере никогда не было так много языков программирования. Я надеюсь, что все узнали новые, грязные трюки для своего любимого языка.
Многократное
Я повторно опубликовал часть кода, созданного этим соревнованием, в качестве примера для script, который я написал для тестирования различных программ по сравнению с эталонной реализацией для автоматической классификации. README в этом каталоге объясняет, откуда исходит исходный код, и заявляет, что весь код повторно используется в соответствии с лицензией CC BY-SA 2.5 (как указано в SO юридическом разделе). Каждый каталог помечен вашим отображаемым именем во время отправки.
Если у вас возникла проблема с повторным использованием вашего кода или атрибуцией, дайте мне знать, и я исправлю ошибку.