Несмотря на ваш протест, ваш начальник заставил вас работать над программой, которая принимает в качестве входных данных одно целое число без знака и печатает строку «простое число», если это целое число простое, и «не простое», если это не так. Вы можете выбрать, на каком языке вы это делаете, если полученная программа короткая; Ваш босс очень ценит низкое количество персонажей. (На самом деле он будет подсчитывать символы вручную после распечатки исходного кода.)
Так что вам лучше добраться до этого, победит наименьшее количество персонажей.
Забавная часть
Это только между вами и мной, но ваша программа должна быть действительной на другом языке. На этом языке, однако, он должен напечатать строку «Если босс найдет это, я уйду». Убедитесь, что ваш начальник не обнаруживает скрытого оскорбления при чтении кода снова и снова, так как он постоянно забывает, считал ли он до 17 или 18 до сих пор. По этой причине вы не можете использовать ни одно из слов «босс находит это увольнение» в части кода, а также не можете использовать и анаграммы этих 5 слов.
Бонусный вызов, за который я создал награду
Напишите программу, которая на самом деле выглядит так, будто она просто решает первый вопрос для неопытного глаза и не содержит лишних символов. Это включает в себя комментарии и фрагменты кода, которые, очевидно, ничего не вносят. В идеале, непрофессионал должен полагать, что ваша программа на самом деле настолько коротка, насколько это возможно, не будучи неуправляемой. Полезный комментарий здесь и там хорошо, хотя.
Правила для бонусного вызова немного более мягкие, вместо того, чтобы судить о легко измеримых критериях, ваша программа будет оцениваться больше о том, как она приходит ко мне (и, конечно, к избирателям)
Я буду последним судьей, чья запись ближе всего заслуживает этой награды.
Редактировать:
После нескольких минут подсчета вашего босса он попросил одного из ваших коллег написать ему программу подсчета персонажей. Так что даже символы, которые не видны, засчитываются в счет вашего персонажа.
Ответы:
CJam ( GolfScript ),
6059 байтСпасибо @mnbvmar за удаление 1 байта!
Как это работает (CJam)
Попробуйте онлайн!
Как это работает (GolfScript)
Попробуйте онлайн!
источник
Python 2 / Python 3 - 128
Идентифицирует простые числа с Python 2 , у вас возникнут проблемы с Python 3 .
бонус
Попробуйте это с Python 2 или Python 3 ! (В отличие от версии для гольфа выше, роли изменились: Python 3 - это идентификатор простого числа. Python 2 содержит пасхальное яйцо.)
Пожалуйста, извините мой плохой английский в тексте справки! ;)
И я использую слово «выйти». Но как-то мне нужно описать, когда моя программа заканчивается. ;)
источник
/
проблема»? (целочисленное деление по сравнению с точкой деления с плавающей)Бонусная подача (C / C ++ 11)
Тестирование на первичность с использованием обычного наивного метода является настолько распространенным явлением. Вот почему я изобрел совершенно новый рандомизированный наивный метод! Этот тест выглядит следующим образом:
sqrt(n)
.not prime
.20sqrt(n)
раз, выводprime
, иначе повторить.Если число составное, существует лишь очень малая вероятность (около 10 -9 ), что оно не работает. Конечно, я не верю, что генератор псевдослучайных чисел в C / C ++ достаточно мощный. Вот почему я использую свой собственный 256-битный генератор LFSR !
C ++ 11 работает правильно. Однако компилятор C, похоже, выводит неисправную программу для n> 2 ...
Примечание : помните, что
-lm
для успешной компиляции C нужна опция (link math library).Если вы обнаружите следующий ошибочный вывод:
неверно, просто удалите соответствующую
fprintf
строку.источник
Mathematica / Brainfuck, 260
источник
Golfscript / Javascript (126
125129130132134 134205207)Попробуйте Golfscript здесь и Javascript здесь .
Я бы сказал, что это поразительно близко к тем решениям Mathematica, которые, в конце концов, имеют встроенную проверку простых чисел.
Редактировать: Спасибо Петру за сохранение еще
двухшести байтов!Вот некоторые детали:
1.
необходим, потому что следующий//
комментарий в Javascript, но дважды выполняет деление в Golfscript. Это приведет к ошибке, если в стеке ничего нет, поэтому нам нужно дать ему два числа. Кстати,1.
это совершенно правильный синтаксис в Javascript и будет просто проигнорирован."…"{(}%
принимает строку, уменьшает их значения кода символа на единицу и выдвигает ее как строку. Это приводит к строке, которую мы должны напечатать.'
начинает строку в Golfscript, которая по умолчанию занимает несколько строк, в результате чего приведенный ниже Javascript будет помещен только в строку.';#'
закрывает многострочную строку в Golfscript, отбрасывает ее и затем игнорирует остальную часть строки. В Javascript это просто строковый литерал, который будет игнорироваться.источник
1+
есть)
. И1 1
это1.
, что я подозреваю, что JS будет так же счастлив, как1
{)}/]""+
может быть и так{)}%
.C ++ / C99 / C90 - 248
Код будет хорошо работать в C90, но может показывать что-то другое в C99 / C ++.
Без гольфа для ясности:
Как это работает: поскольку C90 не распознает однострочные комментарии, строка задачи больше не умножается на ноль.
источник
for
. Он печатает «не не простое», если вы вводите 6. Также печатаетprime
ноль и единицуn
в начале задает простое число, которое будет найдено.prime
ноль и единицу, как заметил ранее pqnet.CJam / Ruby,
132959187Мое предыдущее решение было значительно переработано; это было в значительной степени вдохновлено решением Мартина Бюттнера, включая его понимание того, что
#bytes
метод, очевидно, может занять блок.Как это работает?
#
Символ комментария в Ruby ( ) является оператором возведения в степень в CJam, поэтому нам потребуется по крайней мере два числа в стеке, прежде чем мы начнем, но два пустых числа (0 0
) - это синтаксическая ошибка в Ruby. Впрочем, все хорошо, и, что полезно, числа Ruby могут содержать подчеркивания в качестве разделителей (1_234
)._
является оператором дублирования CJam, поэтому нам нужно дважды щелкнуть (;;
), как только мы окажемся внутри комментария.limp
читает строку из стандартного ввода, преобразует ее в целое число, выдает ее и показывает, является ли она простой.Чтобы перейти в режим Ruby, мы открываем строку и переходим к следующей строке, чтобы мы больше не были в комментарии Ruby (таким образом, символ новой строки является значимым и должен учитываться). Каждый символ сообщения декодируется и печатается, а затем мы запускаем еще один комментарий Ruby, чтобы можно было безопасно закрыть строку CJam перед ее извлечением. То, что осталось в стеке, это то, был ли ввод простым, что печатается после завершения программы CJam.
CJam / Пробелы, 353 (25 значащих при печати) символов
Учитывая закулисный характер задачи и тот факт, что начальник будет печатать наши программы, чтобы подсчитать количество символов, я решил предложить решение с использованием пробелов .
Вопреки моему предыдущему утверждению, что самая короткая из возможных программ Whitespace выводит: «Если босс обнаружит это, я ухожу». было бы 372 символа, этот делает это в 330. Хитрость заключается в том, чтобы использовать
copy
инструкцию для извлечения повторяющихся символов где-то в стеке, а не выдвигать все значения ASCII, которые всегда будут намного больше и, следовательно, требуют больше пробелов и вкладки для кодирования. Вот псевдо-ассемблерное представление программы для любопытных:источник
#chars
и#lines
как хорошо, что я должен буду иметь в виду для будущих проблем.chars
и по какой-то причине это не сработало.limp4*"not prime">
чтобы сделать его еще корочеПредоставление бонусного приза (Perl / B? F? N? E-? 3)
Редактировать: я изначально забыл распечатать предложение, а затем заметил, что оно будет напечатано в обратном порядке. Я заметил это после того, как сделано. Я был готов убить котенка, но я исправил это сейчас.
Это уже ни в коем случае не коротко, но я считаю, что сделать его незаметным и коротким - это чертовски трудная задача. Я в основном повторно использовал одно из моих настоящих представлений о гольфе, но в этом я бы сказал, что второй язык действительно трудно определить.
Если босс обнаружит это, я действительно уйду, потому что я никогда не смогу тайно оскорбить его, и если я не могу этого сделать, какой смысл?
Изгиб
и нарушениеправил:Я использую там слово «the», но это не «the», которое печатается. Это может быть технически недействительным, я позволю ОП решить, должны ли правила быть такими строгими для бонуса. Если так, то пусть будет так.источник
^
= двигаться вверх). Определенные письма с комментариями помещаются в стопку, которая распечатывается в конце, печатается.If the boss finds this, I quit.
См. Пример по URL в реакции Инго:"!dlrow olleH">:#,_@
Mathematica / Ruby,
115106 байтЧасть Mathematica была слегка вдохновлена представлением Питера Олсона, но полиглотинг с Руби здесь немного более сложен.
Ruby работает, потому что они
#
комментируют все, что есть Mathematica. Причина, по которой Mathematica работает, немного интереснее. Код, который я хочу выполнить:Но это не валидный Ruby, поэтому мне нужно добавить
#
куда-нибудь.#
является параметром Mathematica для анонимных функций. Поэтому я поставил#
перед, что умножает аргумент с результатомIf
. Да, это умножит это на строку , что бы это ни значило. Затем я превращаю это в анонимную функцию&
и вызываю ее немедленно с аргументом1
. Ну, Mathematica достаточно умен, чтобы знать, что умножение на 1 всегда является тождеством и выводит только строку. После этого код Ruby просто помещается в блочный комментарий.источник
C (Бонусная подача)
Версия C является основной проверкой, входной массив вверху. Попробуйте угадать, какой язык дает
If the boss finds this, I quit.
(это не пробел).Другой язык:
источник
Perl / Befunge-93 (108
106110)Мое второе представление, просто потому что. Также использует регулярные выражения. Бьюсь об заклад, есть лучший выбор, чем Perl, например, Octave, но я не мог понять, как печатать условно в кратчайшие сроки.
Я злоупотребляю правилом для строки, которая будет напечатана, поскольку я избегаю анаграмм, разбивая их на несколько строк.
Номер для проверки берется из стандартного ввода.
if
вместоunless
сохраненных 4 байта.источник
Lua / PBrain (процедурный Brainf * ck) - 813
Хех ... Извините, попал в ловушку обмана. PBrain похож на BF, но позволяет запускать и определять повторно используемые блоки кода BF. Это использование было совершенно ненужным.
источник
Python 2 / Rot13 - 270 байт (69 без учета комментариев)
Это использует очень простой (то есть неэффективный) алгоритм. При запуске с rot13 (возможно, не языком программирования), он выдает требуемое предложение (наряду с другими глупостями).
Хуже всего то, что комментарии утверждают очевидное и в любом случае совершенно бесполезны.
Это полиглот по-другому, содержащий как английский, так и эсперанто. Надеюсь, босс сам не полиглот.
источник
05AB1E / Желе , 28 байт
Не один, а ДВА языка для игры в гольф!
Пояснение в 05AB1E:
Объяснение в желе:
Попробуйте онлайн! (Желе) Попробуйте онлайн! (05AB1E)
источник
Python, 403 байта
Это предназначено для бонусного вызова. Комментарии не учитываются.
Тесты внизу кода печатают:
Это максимальное целое число, которое я определил (mi), скрывает секрет. При преобразовании в шестнадцатеричное представление буквы ASCII каждых двух цифр шестнадцатеричного слова дает «Если босс обнаружит это, я ухожу». Подлая часть использует функцию chr. Если босс знает, что он делает, и смотрит достаточно внимательно, он будет знать, что код скрывает секретное сообщение. Тем не менее, я немного запутал это и дал достаточно объяснения всему макс целочисленному, чтобы, надеюсь, заверить босса, что это законная часть программы.
Обратите внимание, что для большинства параметров это работает так, как хочет босс, но если ввод не является целым числом или число каким-то образом больше, чем mi, p возвращает ошибку, содержащую скрытую строку. Я мог бы сделать вызов функции печати внутри функции, но я думал, что это будет выглядеть более реальным, если он будет возвращен.
источник
C # - 288
Конечно, не самый короткий, но он может пройти мимо многих боссов:
Читаемая версия:
источник