var QUESTION_ID=113448,OVERRIDE_USER=64499;function answersUrl(e){return"https://api.stackexchange.com/2.2/questions/"+QUESTION_ID+"/answers?page="+e+"&pagesize=100&order=desc&sort=creation&site=codegolf&filter="+ANSWER_FILTER}function commentUrl(e,s){return"https://api.stackexchange.com/2.2/answers/"+s.join(";")+"/comments?page="+e+"&pagesize=100&order=desc&sort=creation&site=codegolf&filter="+COMMENT_FILTER}function getAnswers(){jQuery.ajax({url:answersUrl(answer_page++),method:"get",dataType:"jsonp",crossDomain:!0,success:function(e){answers.push.apply(answers,e.items),answers_hash=[],answer_ids=[],e.items.forEach(function(e){e.comments=[];var s=+e.share_link.match(/\d+/);answer_ids.push(s),answers_hash[s]=e}),e.has_more||(more_answers=!1),comment_page=1,getComments()}})}function getComments(){jQuery.ajax({url:commentUrl(comment_page++,answer_ids),method:"get",dataType:"jsonp",crossDomain:!0,success:function(e){e.items.forEach(function(e){e.owner.user_id===OVERRIDE_USER&&answers_hash[e.post_id].comments.push(e)}),e.has_more?getComments():more_answers?getAnswers():process()}})}function getAuthorName(e){return e.owner.display_name}function process(){var e=[];answers.forEach(function(s){var r=s.body;s.comments.forEach(function(e){OVERRIDE_REG.test(e.body)&&(r="<h1>"+e.body.replace(OVERRIDE_REG,"")+"</h1>")});var a=r.match(SCORE_REG);a&&e.push({user:getAuthorName(s),size:+a[2],language:a[1],link:s.share_link})}),e.sort(function(e,s){var r=e.size,a=s.size;return r-a});var s={},r=1,a=null,n=1;e.forEach(function(e){e.size!=a&&(n=r),a=e.size,++r;var t=jQuery("#answer-template").html();t=t.replace("{{PLACE}}",n+".").replace("{{NAME}}",e.user).replace("{{LANGUAGE}}",e.language).replace("{{SIZE}}",e.size).replace("{{LINK}}",e.link),t=jQuery(t),jQuery("#answers").append(t);var o=e.language;/<a/.test(o)&&(o=jQuery(o).text()),s[o]=s[o]||{lang:e.language,user:e.user,size:e.size,link:e.link}});var t=[];for(var o in s)s.hasOwnProperty(o)&&t.push(s[o]);t.sort(function(e,s){var F=function(a){return a.lang.replace(/<\/?a.*?>/g,"").toLowerCase()},el=F(e),sl=F(s);return el>sl?1:el<sl?-1:0});for(var c=0;c<t.length;++c){var i=jQuery("#language-template").html(),o=t[c];i=i.replace("{{LANGUAGE}}",o.lang).replace("{{NAME}}",o.user).replace("{{SIZE}}",o.size).replace("{{LINK}}",o.link),i=jQuery(i),jQuery("#languages").append(i)}}var ANSWER_FILTER="!t)IWYnsLAZle2tQ3KqrVveCRJfxcRLe",COMMENT_FILTER="!)Q2B_A2kjfAiU78X(md6BoYk",answers=[],answers_hash,answer_ids,answer_page=1,more_answers=!0,comment_page;getAnswers();var SCORE_REG=/<h\d>\s*([^\n,]*[^\s,]),.*?(\d+)(?=[^\n\d<>]*(?:<(?:s>[^\n<>]*<\/s>|[^\n<>]+>)[^\n\d<>]*)*<\/h\d>)/,OVERRIDE_REG=/^Override\s*header:\s*/i;
body{text-align:left!important}#answer-list,#language-list{padding:10px;width:290px;float:left}table thead{font-weight:700}table td{padding:5px}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <link rel="stylesheet" type="text/css" href="//cdn.sstatic.net/codegolf/all.css?v=83c949450c8b"> <div id="answer-list"> <h2>Leaderboard</h2> <table class="answer-list"> <thead> <tr><td></td><td>Author</td><td>Language</td><td>Size</td></tr></thead> <tbody id="answers"> </tbody> </table> </div><div id="language-list"> <h2>Winners by Language</h2> <table class="language-list"> <thead> <tr><td>Language</td><td>User</td><td>Score</td></tr></thead> <tbody id="languages"> </tbody> </table> </div><table style="display: none"> <tbody id="answer-template"> <tr><td>{{PLACE}}</td><td>{{NAME}}</td><td>{{LANGUAGE}}</td><td>{{SIZE}}</td><td><a href="{{LINK}}">Link</a></td></tr></tbody> </table> <table style="display: none"> <tbody id="language-template"> <tr><td>{{LANGUAGE}}</td><td>{{NAME}}</td><td>{{SIZE}}</td><td><a href="{{LINK}}">Link</a></td></tr></tbody> </table>
Ответы:
ArnoldC ,
299283 байтаЭто выводит
1
(что верно) для нечетного ввода и0
(что неверно) для четного ввода.Попробуйте онлайн!
« Теперь это план » (попытка объяснения)
Код читает входные данные в переменную
i
, заменяет их результатом по модулю 2, а затем печатает его.источник
BULLSHIT
YOU HAVE NO RESPECT FOR LOGIC
GET TO THE CHOPPER
GET YOUR ASS TO MARS
...У меня нет слов.брейкфук , 8 байт
Ввод одинарный. Выход - 1 (истинно) для нечетных чисел и NUL (ложно) для четных чисел.
Попробуйте онлайн!
Как это устроено
Мы начинаем с увеличения текущей ячейки,
+
чтобы иметь возможность войти в цикл while[,>,]
.В каждой итерации
,
читает байт из STDIN,>
перемещается в ячейку вправо, а затем,
читает другой байт из STDIN. Когда ввод исчерпан, интерпретатор (во всяком случае, на TIO) установит для ячейки значение NUL . Как только это происходит, условие цикла while больше не выполняется, и мы выходим из него.Пусть n будет входным целым числом. Если есть четное количество входных байтов, т. Е. Если n четно, то первые n / 2 итерации будут читать две 1 , а следующая итерация будет читать два NUL , оставляя ленту следующим образом.
<.
заменяет одну ячейку и печатает ее содержимое, отправляя байт NUL в STDOUT.Однако, если есть нечетное количество входных байтов, первые (n - 1) / 2 итерации будут читать две 1 , а следующая итерация будет читать одну 1 и одну NUL , оставляя ленту следующим образом.
<
теперь будет ретроспективно к ячейке, содержащей байт / символ 1 , который.
печатает.источник
Mathematica, 4 байта
Дает
True
для нечетных входов иFalse
для четных входов, кто знал?Есть также
EvenQ
, но кто хотел бы напечатать все это?источник
2∣#&
работает такжеQ
?Такси ,
1 4821 290 1063 10291 009 байтЯ никогда раньше не писал программы на Такси, и я новичок в программировании в целом, поэтому, возможно, есть лучшие способы сделать это. Я проверил на ошибки и сумел немного поиграть в гольф, пробуя разные маршруты с одинаковым результатом. Я приветствую любую ревизию.
Возвращает
0
для четных и1
нечетных.Попробуйте онлайн!
Вы правы, это ужасно читать без разрывов строк. Вот отформатированная версия:
Вот моя лучшая попытка объяснить логику:
Если вы не вернетесь в «Такси Гараж», вы получите STDERR, но я в порядке .
источник
Сетчатка , 8 байт
Ответ Retina для десятичного ввода. Это также простое решение для регулярных выражений, которое работает практически с любым видом регулярных выражений. Соответствует (и печатает
1
) для четных входов и не совпадает (и печатает0
) для нечетных входов.Попробуйте онлайн!
Альтернатива, также для 8 байтов, использует этап транслитерации, чтобы превратить все четные цифры в
x
первую очередь (потому что этапы транслитерации имеют встроенные для четных / нечетных цифр):Конечно, самый короткий входной формат (даже короче, чем унарный ) будет двоичным в этом случае, где
0$
будет достаточно простого регулярного выражения . Но поскольку задача состоит в том, чтобы найти двоичную цифру с наименьшей значимостью, двоичный ввод, кажется, обходит реальную проблему.источник
Python,
1110 байт-1 байт благодаря Гриффину
Попробуйте онлайн!
Используя побитовый
and
, возвращает0
для четного и1
нечетногоисточник
1 .__and__
на один символ корочеLOLCODE, 67 байт
Функция, которая возвращает
WIN
(true), если число четное, иначе (нечетное) возвращаетFAIL
(false).Позвони с
C"123"
.источник
MATL ,
53 байтаПотому что встроенные скучные
Это выводит матрицу ненулевых значений (что является правдой) для четного ввода и матрицу с нулем в правом нижнем углу (что неверно) для нечетного ввода.
Попробуйте онлайн! Код
if-else
нижнегоколонтитула являетсяветвью, чтобы проиллюстрировать правдивость или ложность результата. Удаление этого нижнего колонтитула неявно отобразит матрицу.объяснение
Рассмотрим ввод
5
в качестве примераисточник
Java 8, 8 байт
Попробуй это здесь.
Java 7, 30 байт
Попробуй это здесь.
Выходы
true
для четных иfalse
нечетных чиселЕсли
1/0
бы было разрешено вместоtrue/false
( это не так, учитывая количество голосов здесь ):n->n%2
int c(int n){return n%2;}
источник
int o(int n){return java.util.stream.IntStream.of(n).map(n->n%2).filter(n==0).findAny().isPresent();}
Пит, 15 кодов / 16 байтов
Онлайн переводчик доступен здесь.
Эта программа возвращает 0, если ввод четный, и 1, если ввод нечетный.
Текст выше представляет изображение. Вы можете создать изображение, вставив его в текстовое поле на странице переводчика. Для удобства я предоставил изображение ниже, где размер кодека составляет 31 пиксель. Сетка предназначена для удобства чтения и не является частью программы.
объяснение
Эта программа использует встроенный модуль по модулю, чтобы определить, является ли ввод четным или нечетным.
Темно-синие кодеки в левом нижнем углу никогда не посещаются и могут быть изменены на любой цвет, отличный от цвета соседнего коделя. Я выбрал темно-синий, так как думаю, что он хорошо смотрится с остальной частью программы. Верхний левый черный кодек также может быть белым, но не любого другого цвета. Я выбрал черный, поскольку я думаю, что это выглядит лучше.
Я предоставил программу как в графической, так и в текстовой форме, поскольку нет единого мнения о том, как оценивать программы Пиета. Не стесняйтесь взвешивать мета-обсуждение.
источник
мозговой трах , 14 байтов
Ввод и вывод принимаются как коды символов в соответствии с этой мета .
Значение байта 1 соответствует нечетным числам, а 0 - четным.
Попробуйте онлайн!
источник
JavaScript, 6 байт
Анонимная функция:
Альтернативно с такой же длиной:
Оба вернутся,
0|1
что должно соответствовать требованию кtruthy|falsey
значениям.Попробуйте обе версии онлайн
источник
0|1
не так ли? @TheLethalCoderJapt , 1 байт
Возвращает
1
для четных чисел,0
для нечетных.Попробуйте онлайн!
объяснение
Одна из характерных особенностей Japt заключается в том, что в отличие от большинства языков игры в гольф функции не имеют фиксированной арности; то есть любая функция может принимать любое количество аргументов. Это означает, что вы можете иногда опускать аргументы, и Japt будет угадывать, что вы хотите.
v
on числа - это функция, которая принимает один аргумент и возвращает,1
если число делится на аргумент, в противном случае0
. Например:Эта программа выведет,
1
если вход делится на 3, и в0
противном случае. Так уж получилось, что аргумент по умолчанию -2
это решение этой задачи одним байтом.Альтернативное 1-байтовое решение:
¢
преобразует входные данные в строку base-2.-h
Флаг возвращает последний символ из строки.Попробуйте онлайн!
источник
брейкфук , 12 байт
Для этого требуется переводчик с круглой лентой и ячейками, которые обертывают вокруг. Тот на TIO имеет 65 536 8-битных ячеек и удовлетворяет требованиям.
Ввод / вывод в байтах. Нечетные входные данные отображаются в 0x00 (ложно), четные входные данные в ненулевой байт (правда).
Попробуйте онлайн!
Как это устроено
Мы начнем с чтения байта ввода с
,
и добавления 2 к его значению с помощью++
. Позже мы увидим, почему увеличение необходимо.Затем мы вводим цикл, который перемещается к ячейке справа, добавляем к ней 2 и повторяем процесс, если только для этого значения ячейки не установлено значение 0. .
Первоначально все ячейки, кроме входной, содержат 0 . Если ввод нечетный, добавление 2 к нему никогда не обнулит его. Однако после циклического повторения ленты 127 раз, следующая итерация цикла установит ячейку справа от входной ячейки равной 128 × 2 = 0 (мод 256) , что приведет к завершению цикла.
>++
повторяет тело цикла еще раз, поэтому следующая ячейка также обнуляется, а затем печатается с помощью.
.С другой стороны, если входное значение равно n, а n четное, код перед циклом устанавливает для входной ячейки значение n + 2 . После зацикливания ленты (256 - (n - 2)) / 2 = (254 - n) / 2 раза, входная ячейка достигнет 0 , а справа от нее будет храниться значение (254 - n) / 2. × 2 = 254 - n . После добавления 2 с
>++
,.
выведите 256 - n = -n (mod 256) , что не равно нулю, так как n не равно нулю.Наконец, обратите внимание, что во втором случае будет выведено 258 - n = 2 - n (mod n), если мы не увеличиваем вход перед циклом, поскольку для обнуления входной ячейки потребуется еще один цикл вокруг ленты. Программа, таким образом, потерпит неудачу для ввода 2 .
источник
Sinclair ZX81 BASIC
124 байта114 байтов109 байтов5750 токенов BASIC байтовВ соответствии с комментариями Адама ниже, вот последний релиз кандидата:
Это будет теперь
PRINT
1
для четных и0
нечетных. Ноль выходов.Вот более старые версии символического списка для справочных целей:
Вот старый (v0.01) список, так что вы можете увидеть улучшения, которые я сделал, так как этот новый список не только меньше, но и быстрее:
А вот v0.02 (с использованием подстрок Sinclair):
источник
PRINT (A-2*INT A/2)/A
?0
не должно давать aTRUE
илиFALSE
, следовательно, поскольку0
не предполагалось, что оно будет давать результат, тогда яSTOP
выполнял команду ping для программы. Я, вероятно, истолковал оригинальный вопрос, так как он был опубликован @SIGSEGV слишком буквально. Да, можно оптимизировать и рефакторинг, вы правы.05AB1E , 1 байт
Достаточно самоисследованный. Возвращает
a % 2 == 0
Попробуйте онлайн!
источник
É
это лучший выбор, по моему личному мнению; ребячество.É
возвращаетсяa % 2 == 1
.Сетчатка, 3 байта
Трейлинг новой строки является значительным. Принимает участие в одинарных. Выходы 1 для нечетных чисел, ничего для четных чисел. Попробуйте онлайн!
источник
C ++, 25 байт
Это определяет переменный шаблон ( функциональную конструкцию ) со значением, равным побитовой операции
input&1
.0
для четных значений,1
для нечетных значений. Значение рассчитывается во время компиляции.Требуется C ++ 14.
Попробуйте онлайн!
источник
int o(int v){return v&1;}
) будет занимать столько же байтов, с той разницей, что значение будет вычисляться во время выполнения.main()
-подобной конструкции программа также будет просто скомпилированаreturn 0
или даже вообще не скомпилирована. Это противоречит мета-посту, на который я ссылаюсь в этом ответе.[](int x){return x%2;}
Попробуйте онлайнPyth,
32 байтаЯ это сделал. Я играл в гольф без игры в гольф. На этот раз это нетривиальное решение, которому удалось получить этот последний байт!
Правда о четных значениях (не включая 0, но это не так положительно ...).
Объяснение:
Например
!!2 = !0 = 1
, и!!!3 = !!0 = !1 = 0
Я буду хранить свою библиотеку 3-байтовых решений здесь ниже.
«Есть еще один ответ с несколькими 3-байтовыми решениями, но он еще далек от завершения. Давайте добавим еще пару:
[0,1]
Индексирует в список модульно, давая достоверные значения при нечетном вводе.Находится ли 2 в основной факторизации входных данных? (Правда на четном)
Это GCD 2 и вход 2? (Правда на четном)
XOR-ing ввода с 1 не уменьшает его? (Правда на четном)
В основном,
Q == Q*-1^Q
где Q является вводом, но выполняется через цикл. (Правда на четном)То же, что и выше.
Переводится как
Q <= -Q^Q
(правда на четном)Обратите внимание, что любое из приведенных выше решений
g
будет работать<
для фальсифицированной правдивости.)источник
C #, 8 байт
Компилирует в
Func<int, bool>
.Или, если анонимная функция запрещена, этот метод для 21 байта:
источник
if (1)
не компилируется.if (1)
в вашем коде?if (x)
значение true, тогдаx
значение true. Если он оценивается как ложный, то это такfalse
. Так, в псевдокоде:if x, disp(true), else disp(false)
. Если это не удается скомпилировать, тоx
не может быть использовано. В MATLAB и некоторых других языках все, что не равно нулю, считается истинным, тогда как0
иfalse
считается ложным. Таким образом, строкаHello
является истинным значением в MATLAB. Однако в некоторых языках это значение должно быть логическим (в данном случае), поэтому его необходимо преобразовать в логическое, используя<1
.Pyth, 3
Я ожидал, что Pyth будет иметь встроенный 1 или 2 байта для этого. Вместо этого вот лучшие решения, которые я мог найти:
или же
или же
источник
TIS-100, 39 байт
Конечно, это, точнее, программа для архитектуры базового узла выполнения T21, эмулируемая эмулятором TIS-100.
Я отошлю вас к этому ответу для фантастически глубокого объяснения оценки программ TIS-100, а также их структуры.
Объяснение:
В псевдокоде это будет выглядеть примерно так:
T21 не имеет логических типов или значений правда / ложь, поэтому программа возвращает -1 для нечетных чисел и 0 для четных чисел, если предыдущий ввод не был нечетным, в этом случае он возвращает -1 для четных чисел и 0 для нечетных цифры - если этот факт беспокоит вас, это полный ответ, так что вы можете просто перезапустить свой T21 между использованиями.
источник
Желе , 1 байт
Попробуйте онлайн!
Просто еще один встроенный.
Для людей, которые не знают Jelly: у него довольно мало возможностей вывести пропущенные фрагменты кода, таким образом, нет большой синтаксической разницы между фрагментом, функцией и полной программой; интерпретатор автоматически добавит код для ввода соответствующих аргументов и выдаст результат. Это очень удобно при работе с правилами PPCG, которые разрешают функции и программы, но запрещают фрагменты кода. В ссылке TIO я рассматриваю это как функцию и запускаю ее для каждого целого числа от 1 до 20 включительно, но она также работает как полная программа.
Желе , 2 байта
Попробуйте онлайн!
Это довольно коротко без встроенного тоже. (Это поразрядно-И с 1.)
источник
7 , 18 символов, 7 байтов
Попробуйте онлайн!
7 не имеет ничего похожего на нормальное выражение if и имеет более одного идиоматического способа представления логического выражения. Таким образом, трудно понять, что считается истиной и ложью, но эта программа использует
1
для нечетного и нулевую строку для четного (значения правдивого и ложного для Perl, в котором написан интерпретатор 7). (Это достаточно легко изменить; нечетный вывод указывается перед первыми 7, четный вывод указывается между первыми двумя 7. Может потребоваться изменение формата вывода для обработки других типов вывода, хотя; я использовал два кратчайшие отчетливые выводы здесь.)7 использует сжатую восьмеричную кодировку, в которой три байта источника представляют восемь байтов программы, поэтому 18 символов источника представлены в 7 байтах на диске.
объяснение
Как и во многих выходных форматах, «выходные целые числа» отменяют любое количество уровней экранирования перед выводом; таким образом
40
, которые в совокупности образуют операцию подкачки и побега, могут быть использованы вместо405
операции подкачки (то есть подкачки и побега, за которой следует эскейп). Если бы вы использовали выходной формат, который нестабилен по отношению к экранированию, вам понадобится полный405
там. (Между прочим, причина, почему нам нужно было экранировать строку формата изначально, заключается в том, что если первый вывод содержит непредставимые символы, он автоматически форсирует выходной формат 7. Удаление его удаляет непредставляемые символы и позволяет выбрать формат 0.)Из шести начальных элементов стека самая верхняя - это основная программа (и она используется
13
первой, которая запускается); второй - это023
тот, который выбирает формат вывода и запрашивает ввод, и используется этой операцией; третий потребляется как побочный эффект3
операции (он используется для отбрасывания элементов стека в дополнение к получению результата); четвертый,40
- тело цикла (и используется тем5
, кто выполняет цикл); а пятый и шестой меняются местами столько раз, сколько их ввод (таким образом, они оказываются в своих исходных положениях, если ввод четный, или в позициях друг друга, если ввод нечетный).Вы можете отключить символ, изменив ведущий
177
на17
(и полагаясь на неявный пустой шестой элемент стека), но это изменит четность выходов на менее идиоматический метод, чем odd-is-true, и это не спасет целый байт (источник по-прежнему длиной семь байт). Поэтому я решил использовать более естественную форму вывода, так как она не хуже.источник
Brain-Flak ,
2220 байтовВот еще один крутой ответ в Brain-Flak, вы также должны проверить
Попробуйте онлайн!
объяснение
Для начала мы сделаем копию нашего ввода с
(({}))
.Нижняя копия будет служить истинным значением, а верхняя будет использоваться для фактической обработки. Это сделано потому, что нам нужно, чтобы ввод был сверху, и довольно громоздко (два дополнительных байта!) Поставить 1 под входом.
Затем мы начинаем цикл
{({}[()]<>)}
. Это простая модификация стандартного цикла обратного отсчета, который переключает стеки при каждом уменьшении.Так как есть два стека, четное число будет заканчиваться на вершине стека, в котором оно началось, в то время как нечетное число будет заканчиваться в противоположном стеке. Скопированное значение останется на месте и, таким образом, будет служить маркером того, с чего мы начали.
Как только мы закончили с циклом, у нас есть
0
(первоначально вход), стоящий поверх либо истинного (копия входного), либо ложного (пустой стек) значения. У нас также есть противоположное значение в другом стеке.Нам нужно избавиться от того,
0
что может быть удалено либо с помощью{}
или<>
. Оба, кажется, работают и дают противоположные результаты, однако{}
приводят к ложному значению для нуля, когда он должен возвращать истину. Это потому, что наше «истинное» значение является копией ввода, а ноль является единственным вводом, который может быть ложным.Эта проблема решается путем завершения программы
<>
вместо.(Конечно, в соответствии со спецификацией технически я не должен поддерживать ноль, но даю два варианта, которые я предпочел бы поддержать)
источник
BitCycle ,
19 1716 байтПопробуйте онлайн!
Ага, я чувствую, что есть 18-байтовое решение с плавающей точкой вне досягаемости :(Ха-ха! -2 байта с помощью+
перенаправления битов, поступающих из разных направлений.По-прежнему кажется, что в нем слишком много пробелов (целых 6 байт!)
Объяснение:
источник
Пакетный, 16 байтов
Выходы 1 для нечетных, 0 для четных. Альтернативная 16-байтовая версия также работает на отрицательных числах:
17 байт для вывода 1 для четного, 0 для нечетного:
источник
(Input):(Output)
"Excel, 10 байт
Или же:
Для вывода:
источник
?[A1]mod 2
; анонимная оконная функция немедленного VBE, которая принимает входные данные[A1]
и выводит в оконное окно немедленного VBE с0
(falsey), представляющим четное, и1
(truey), представляющим нечетноеJSFuck ,
968593846420 байтJSFuck - это эзотерический и образовательный стиль программирования, основанный на атомарных частях JavaScript. Он использует только шесть разных символов для написания и выполнения кода.
Выходы 1 для нечетных и 0 для четных.
Попробуйте онлайн!
источник
alert(prompt()%2)
кажется, 9384 символа.[]["fill"]["constructor"]("return this%2")["call"]
.fill
был выбран, потому что это стоит всего 81 символ, наименьший из всех методов массива. Также можно утверждать, что JSFuck - это не отдельный язык, а подмножество JavaScript.+
чтобы сохранить еще 77 байтов ;-) И я лично думаю, что отвечать в JSF - это нормально; это в основном диалект JS.Баш + вс,
2114119 байтЧитает ввод из командной строки, раскрывает значение в строку с помощью операции mod и передает строку в bc для расчета. Выходы 1 для нечетных, 0 для четных.
Тестовые случаи:
Edit: сохранено 7 байтов благодаря @ ais523
Edit 2: сохранено еще 3 байта благодаря @Dennis
Edit 3: сохранено еще два благодаря @Dennis
источник
$1
), а не тратить байты на чтение из stdin?bc<<<$1%2
.