Codegolf – Это Четное Или Нечетное Число?

  • Автор темы Servaster
  • Обновлено
  • 22, Oct 2024
  • #1

Примечание. Еще не было ванильного теста на четность (есть тест C/C++, но он запрещает использование языков, отличных от C/C++, а другие неванильные языки тоже в основном закрыты), поэтому я публикую один.

Учитывая положительное целое число, выведите его четность (т. е. если число нечетное или четное) в истинных/ложных значениях. Вы можете выбрать, соответствуют ли правдивые результаты нечетным или четным входным данным.


Примеры

Предполагая, что True/False является четным и нечетным (это не обязательно, вы можете использовать другие значения Truthy/Falsy для каждого), в ответ:

 
 
 
 <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> 

Таблица лидеров

body{text-align:left!important}#answer-list,#language-list{padding:10px;width:290px;float:left}table thead{font-weight:700}table td{padding:5px} 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; (Input):(Output) 1:False 2:True 16384:True 99999999:False

#код-гольф #арифметика #теория чисел #задача принятия решения

Servaster


Рег
08 Apr, 2016

Тем
73

Постов
178

Баллов
583
  • 26, Oct 2024
  • #2

АрнольдС, 299 283 байт

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 1    Push 1.
\    Reflect northeast. Switch to Ordinal.

Bounce off the boundary, move southeast.
i    Read all input as a string.

Bounce off the corner, move back northwest.
\    Reflect south. Switch to Cardinal.
A    Implicitly convert input string to integer. Compute bitwise AND with 1.

Wrap around to the first line.
\    Reflect northwes. Switch to Ordinal.

Bounce off the boundary, move southwest.
o    Implicitly convert result to string and print it.

Bounce off the corner, move back northeast.
\    Reflect east. Switch to Cardinal.
@    Terminate the program.
 

Это выводит 1 (which is truthy) for odd input and 0 (что неверно) для четного ввода.

Попробуйте онлайн!

Теперь это план(Попытка объяснения)

Код считывает ввод в переменную 1\@ oAi , replaces it with the result of modulo 2, and then prints it.

echo $? Объяснение:

мозготрах, 8 байт

f

Ввод является унарным. Выход — это 1 (истина) для нечетных чисел и НУЛ (ложь) для четных чисел.

Попробуйте онлайн!

Как это работает

Мы начинаем с увеличения текущей ячейки с помощью (($1%2)) to be able to enter the while loop &1 .

В каждой итерации reads a byte from STDIN, 17 переходит в клетку справа, затем 177 reads another byte from STDIN. When input is exhausted, the interpreter (the one on TIO, anyway) will set the cell to НУЛ вместо. Как только это произойдет, условие цикла while перестанет выполняться, и мы выйдем из него.

Позволять н быть входным целым числом. Если имеется четное количество входных байтов, т. е. если н четный – первый н/2 итерации будут читать два 1's, и следующая итерация будет читать два НУЛs, оставив ленту следующим образом.

5

40 retrocedes one cell and prints its content, sending a НУЛ байт в STDOUT.

Однако если входных байтов нечетное количество, первый (n - 1)/2 итерации будут читать два 1's, и следующая итерация будет читать один 1 и один НУЛ, оставив ленту следующим образом.

3

023 will now retrocede to a cell holding the byte/character 1, который 13 prints.

 

Fil13


Рег
08 Dec, 2006

Тем
54

Постов
175

Баллов
475
  • 26, Oct 2024
  • #3

Математика, 4 байта

405

дает 405 for odd inputs and 40 для четных входов, кто знал?

Есть также 177407770236713353 77 77 7 Separate the initial stack into six pieces (between the 7s) 023 Output format string for "output integers; input one integer" 7 6 Escape the format string, so that it's interpreted as is 13 Suppress implicit looping 3 Output the format string (produces input) 5 Run the following code a number of times equal to the input: 40 Swap the top two stack elements, escaping the top one 3 Output the top stack element , but who would want to type all of that?

 

Alyx


Рег
22 Jun, 2013

Тем
69

Постов
193

Баллов
578
  • 26, Oct 2024
  • #4

Такси, 1482 1290 1063 1029 1009 байт

Я никогда раньше не писал программы в Taxi и вообще новичок в программировании, так что, возможно, есть более эффективные способы сделать это. Я проверил наличие ошибок и сумел немного поиграть в гольф, пробуя разные маршруты, которые дали один и тот же результат. Я приветствую любую доработку.

Возврат 1 даже и 177407770236713353 для странного.

(Input):(Output) 1:1 2:0 16384:0 99999999:1

Попробуйте онлайн!

Вы правы, ужасно читать без переносов строк. Вот отформатированная версия:

bc<<<$1%2

Вот моя лучшая попытка объяснить логику:

e.B

Если я не вернусь в гараж такси, это приведет к выводу в STDERR, но я хорошо с этим.

 

AcimBuse


Рег
05 Jan, 2014

Тем
70

Постов
167

Баллов
537
  • 26, Oct 2024
  • #5

Питон, 11 10 байт

-1 байт благодаря Гриффину

.&1

Попробуйте онлайн!
Использование побитового %Q2 , returns bool p(int n)=>n%2<1; даже и Func<int, bool> for odd

 

ArtemJee


Рег
20 Mar, 2013

Тем
61

Постов
178

Баллов
523
  • 26, Oct 2024
  • #6

сетчатка, 8 байт

n=>n%2<1

Ответ Retina для десятичного ввода. Это также простое решение для регулярных выражений, которое работает практически с любым вариантом регулярных выражений. Спички (и отпечатки <> ) for even inputs and doesn't match (and prints {} ) для нечетных входов.

Попробуйте онлайн!

Альтернатива, также для 8 байт, использует этап транслитерации, чтобы превратить все четные цифры в <> first (because transliteration stages have a built-in for even/odd digits):

{}

Разумеется, самый короткий формат ввода (даже короче унарного) в этом случае будет двоичным, а простое регулярное выражение 0 would suffice. But since the challenge is essentially about finding the least-signficant binary digit, binary input seems to circumvent the actual challenge.

 

Ardan


Рег
27 Jan, 2007

Тем
71

Постов
220

Баллов
595
  • 26, Oct 2024
  • #7

ЛОЛКОД, 67 байт

0

Функция, которая возвращает {({}[()]<>)} (true) if number is even, else (odd) it will return (({})) (ЛОЖЬ).

Позвонить с (({})){({}[()]<>)}<> .

 

Yuri_b


Рег
01 May, 2006

Тем
56

Постов
211

Баллов
531
  • 26, Oct 2024
  • #8

МАТЛ, 5 3 байта

Потому что встроенные функции скучны

while (true) { acc = getIntInput() do { acc -= 2 } while (acc > 0) print(acc) }

Это выводит матрицу ненулевых значений (которая является истинной) для четных входных данных и матрицу с нулем в нижней правой записи (которая является ложной) для нечетных входных данных.

Попробуйте онлайн! Код нижнего колонтитула представляет собой @0 # Indicates that this is node 0 ADD UP # Gets input and adds it to ACC, the only addressable register in a T-21 G: # Defines a label called "G" SUB 2 # Subtracts 2 from ACC JGZ G # If ACC is greater than 0, jumps to G MOV ACC ANY # Sends the value of ACC to the first available neighbor; in this case, output. # Implicitly jumps back to the first line branch to illustrate the truthiness or falsihood of the result. Removing that footer will implicitly display the matrix.

Объяснение

Рассмотрите ввод @0 ADD UP G:SUB 2 JGZ G MOV ACC ANY as an example

1 ||answer||

Java 8, 8 байт

0

Попробуйте здесь.

Java 7, 30 байт

input&1

Попробуйте здесь.

Выходы template<int v>int o=v&1; for even numbers and 11 для нечетных чисел


Если When we reach the point where there is either one or no bits of input left // < If one, it will reflect off all three /\s and turn west at the + !+\ And then output, otherwise the program ends since no more bits are moving would be allowed instead of ?ABv Feed unary input into the main loop / Every loop, two bits will be removed from the input +\< By the \ and /s each (это не так, учитывая количество голосов здесь):

  • Java 8 (6 байт): +
  • Java 7 (25 байт): ?ABv // < !+\<
 

Girt


Рег
17 Dec, 2006

Тем
69

Постов
191

Баллов
546
  • 26, Oct 2024
  • #9

Пит, 15 кодов/16 байт

D0

Онлайн-переводчик доступен здесь.

Эта программа возвращает 0, если входные данные четные, и 1, если входные данные нечетные.

Текст выше представляет собой изображение. Вы можете сгенерировать изображение, вставив его в текстовое поле на странице интерпретатора. Для удобства я предоставил изображение ниже, где размер кода составляет 31 пиксель. Сетка предназначена для удобства чтения и не является частью программы.

Объяснение

Эта программа использует встроенную функцию modulo, чтобы определить, является ли вход четным или нечетным.

2

Темно-синие коды в левом нижнем углу никогда не посещаются, и их можно изменить на любой цвет, кроме цвета соседнего кодера. Я выбрал темно-синий, так как считаю, что он хорошо смотрится с остальной частью программы. Верхний левый черный код также может быть белым, но не каким-либо другим цветом. Я выбрал черный, так как считаю, что он выглядит красивее.

Я предоставил программу как в виде изображения, так и в текстовой форме, поскольку не существует четкого консенсуса относительно того, как оценивать программы Piet. Не стесняйтесь взвешиваться мета-дискуссия.

 

MObesmerepe


Рег
24 Sep, 2004

Тем
80

Постов
231

Баллов
671
  • 26, Oct 2024
  • #11

JavaScript, 6 байт

Анонимная функция:

27

Альтернативно с той же длиной:

Step Switches 0-7 Control Switch Comment 1 RESET 2 00 000 001 EXAMINE Select memory address containing value 3 00 000 010 DEPOSIT Enter new value in binary (2 in this case) 4 RESET 5 RUN 6 STOP

Оба вернутся 0000 3e 1b 1f f5 c1 3e 01 a1 d3 ff 76 which should fulfill the requirement for Step Switches 0-7 Control Switch Instruction Comment 1 RESET 2 00 111 110 DEPOSIT MVI A, 27 Load number to examine into A 3 00 011 011 DEPOSIT NEXT Set value to test (27 in this case) 4 00 011 111 DEPOSIT NEXT RAR Rotate A's LSB into CF 5 11 110 101 DEPOSIT NEXT PUSH PSW Push Status Flags to stack 6 11 000 001 DEPOSIT NEXT POP B Pop Status Flags to BC register 7 00 111 110 DEPOSIT NEXT MVI A, 1 CF is LSB (0x1) of Status Flags 8 00 000 001 DEPOSIT NEXT 9 10 100 001 DEPOSIT NEXT ANA C Mask CF so is only result displayed 10 11 010 011 DEPOSIT NEXT OUT 255 display contents of A on data panel 11 11 111 111 DEPOSIT NEXT 12 01 110 110 DEPOSIT NEXT HLT Halt CPU 13 RESET Reset program counter to beginning 14 RUN 15 STOP D0 light will be on if value is odd, or off if even ценности.

Попробуйте обе версии онлайн

 

Lonks86


Рег
30 Sep, 2009

Тем
74

Постов
196

Баллов
596
  • 26, Oct 2024
  • #12

Япт, 1 байт

CF=0

Возврат CF=1 for even numbers, A для странного.

Попробуйте онлайн!

Объяснение

Одной из определяющих особенностей Japt является то, что в отличие от большинства языков игры в гольф функции не имеют фиксированной арности; то есть любая функция может принимать любое количество аргументов. Это означает, что иногда вы можете опустить аргументы, и Japt сам догадается, чего вы хотите. 1F RAR ; rotate accumulator's least significant bit into Carry Flag on numbers is a function that accepts one argument and returns < если число делится на аргумент, иначе g . For example:

Q <= -Q^Q

Эта программа выведет g^_ if the input is divisible by 3, and _FI в противном случае. Так уж получилось, что аргументом по умолчанию является Q == Q*-1^Q , thereby solving this challenge in a single byte.


Альтернативное 1-байтовое решение:

q_F

gx1 converts the input into a base-2 string. The ti2 флаг возвращает последний символ из строки.

Попробуйте онлайн!

 

Piligrim


Рег
03 May, 2014

Тем
89

Постов
215

Баллов
680
  • 26, Oct 2024
  • #13

Sinclair ZX81 BASIC 124 байта 114 байтов 109 байтов 57 50 42 токенизированных байта BASIC

Еще один кандидат на релиз:

}2P

Согласно комментариям Адама ниже:

[0,1]

Это будет сейчас @U2 !!!3 = !!0 = !1 = 0 for even and !!2 = !0 = 1 for odd. Zero exits.

Вот более старые версии символического списка для справочных целей:

! Not FQQ Applied to the input (first Q) Q times

Вот старый листинг (v0.01), чтобы вы могли увидеть улучшения, которые я сделал, поскольку новый листинг не только меньше, но и быстрее:

!F

А вот версия 0.02 (с использованием подстрок Sinclair):

a % 2 == 0

 

Discreet


Рег
18 May, 2005

Тем
81

Постов
201

Баллов
626
  • 26, Oct 2024
  • #14

мозготрах, 12 байт

È

Для этого потребуется интерпретатор с кольцевой лентой и ячейками, которые обматываются. Тот, что на TIO, имеет 65 536 8-битных ячеек и удовлетворяет требованиям.

Ввод-вывод осуществляется в байтах. Нечетные входные данные отображаются на 0x00 (ложь), даже вводит ненулевой байт (правда).

Попробуйте онлайн!

Как это работает

Мы начинаем с чтения входного байта с помощью . and adding 2 его стоимости с >++ . We'll see later why incrementing is necessary.

Далее мы входим в цикл, который переходит к ячейке справа, добавляем 2 к ней и повторяет процесс, если только это не установит значение ячейки равным 0.

Первоначально все ячейки, кроме входной, содержат 0. Если ввод нечетный, добавление 2 чтобы он никогда не обнулил его. Однако после обхода ленты 127 раз, следующая итерация цикла установит ячейку справа от входной ячейки как 128 × 2 = 0 (по модулю 256), что приводит к завершению цикла. . repeats the loop body one more time, so next cell is also zeroed out and then printed with >++ .

С другой стороны, если входной сигнал н и н четный, код перед циклом устанавливает входную ячейку в значение п + 2. После обхода ленты (256 – (n – 2))/2 = (254 – n)/2 раз входная ячейка достигнет 0, а ячейка справа от нее будет содержать значение (254 – п) / 2 × 2 = 254 – н. После добавления 2 с ++ , , напечатаю 256 - n = -n (по модулю 256), что не равно нулю, поскольку н не равно нулю.

Наконец, обратите внимание, что во втором случае будет напечатано 258 - n = 2 - n (по модулю n) если бы мы не увеличивали входные данные перед циклом, поскольку для обнуления входной ячейки потребовался бы еще один цикл вокруг ленты. Таким образом, программа не сможет ввести данные. 2.

 

Amoralex


Рег
25 May, 2015

Тем
95

Постов
211

Баллов
726
  • 26, Oct 2024
  • #16

Пиф, 3 2 байта

Я сделал это. Я играл в гольф в то, что невозможно. На этот раз это нетривиальное решение, позволяющее получить последний байт!

1 INPUT A 2 IF A<1 THEN STOP 3 LET B=INT (INT A/2) 4 LET M=1+INT A-B*2 5 PRINT A;":"; 6 GOSUB M*10 7 RUN 10 PRINT "TRUE" 11 RETURN 20 PRINT "FALSE" 21 RETURN

Правда о четных значениях (не включая 0, но это не положительно, так что...).

Объяснение:

1 INPUT A 2 IF NOT A THEN STOP 3 LET B=INT (INT A/2) 4 PRINT A;":";NOT INT A-B*2 5 RUN

Например, 0 , and 1

Я сохраню свою библиотеку 3-байтовых решений здесь, ниже.

«Есть еще один ответ с несколькими 3-байтовыми решениями, но он далеко не полный. Добавим еще парочку:

PRINT

Индексы в список 1 INPUT A 2 IF NOT A THEN STOP 3 PRINT A;":";NOT INT A-(INT (INT A/VAL "2")*VAL "2") modularly, giving truthy values on odd input.

1 INPUT A 2 IF A THEN PRINT A;":";NOT INT A-(INT (INT A/VAL "2")*VAL "2")

Является ли 2 в простой факторизации входных данных? (Правда даже)

-h

НОД равен 2, а вход 2? (Правда даже)

¢

XOR-ввод с 1 не уменьшает его? (Правда даже)

¢

По сути 2 where Q is the input, but done through a loop. (Truthy on even)

0

То же, что и выше.

1

Переводится на v3 (Truthy on even)

Обратите внимание, что любое из приведенных выше решений, включающих 0 will work with 1 за перевернутую истину-ложь.)

 

CaxCadoBook76


Рег
07 Dec, 2020

Тем
73

Постов
208

Баллов
573
  • 26, Oct 2024
  • #17

Машинный код Intel 8080, 1 байт

v

Ввод находится в 0 , result is 1 если странно, v if even.

Вот тестовая программа для МИЦ Альтаир 8800 который будет принимать введенное число и отображать результат (нечетный или четный) на индикаторах передней панели. Просто следуйте этим инструкциям по программированию на переключателях на передней панели:

truthy|falsey

Если введено правильно, программа в оперативной памяти будет выглядеть так: 0|1

Чтобы повторить запуск с другим номером:

n=>n%2

Попробуйте онлайн!

Просто следуйте простым шагам выше!

Выход n=>n&1 , light +>>,[-[->]<]<. Ввод =

ВКЛ, что указывает на НЕЧЕТНЫЙ результат: Instruction Δ Hue Δ Lightness Stack ------------ ----- ----------- ------- In (Number) 4 2 n Push [2] 0 1 2, n Modulo 2 1 n % 2 Out (Number) 5 1 [Empty] [Exit] [N/A] [N/A] [Empty] , light 5njaampjhompppam Ввод =

ВЫКЛ, указывая ЧЕТНЫЙ результат:

 

Mironovaoxana9


Рег
15 Nov, 2019

Тем
65

Постов
203

Баллов
538
  • 26, Oct 2024
  • #18
Битцикл int c(int n){return n%2;}

, 19 17 16 15 байт

Попробуйте онлайн! n->n%2 to redirect bits coming from different directions.

Ага, у меня такое ощущение, что 18-байтовое решение находится вне досягаемости :( Ха-ха! -2 байта с помощью

true/false 1/0 ||answer||

 

Uhzrgp49


Рег
13 Oct, 2006

Тем
65

Постов
193

Баллов
528
  • 26, Oct 2024
  • #20
true

С++, 25 байтЭто определяет шаблон переменной (конструкция, подобная функции Object c(int n){return n%2<1;} . n->n%2<1 ) со значением, равным побитовой операции : % Implicitly input n. Push row vector [1 2 ... n] % STACK: [1 2 3 4 5] He % Reshape into a 2-row matrix, padding with zeros if needed % STACK: [1 3 5; 2 4 0] for odd values. The value is calculated on compile-time.

для четных значений,

Требуется С++14.

Попробуйте онлайн!

 

Pillau84


Рег
05 Dec, 2009

Тем
73

Постов
204

Баллов
589
  • 26, Oct 2024
  • #21

ТИС-100, 39 байт

Конечно, это, точнее, программа для архитектуры T21 Basic Execution Node, эмулируемая эмулятором ТИС-100. Я направлю тебя к этот ответ

5

за фантастически подробное объяснение системы подсчета баллов по программам ТИС-100, а также их структуры.

if-else

Объяснение:

:He

В псевдокоде это будет выглядеть примерно так:

T21 не имеет логических типов или значений истинности/ложности, поэтому программа возвращает -1 для нечетных чисел и 0 для четных чисел, если только предыдущий ввод не был нечетным, и в этом случае она возвращает -1 для четных чисел и 0 для нечетных чисел. цифры — если этот факт вас беспокоит, это полноценный ответ, поэтому вы можете просто перезапускать свой T21 между использованиями.

 

Bibliofil


Рег
31 Jan, 2007

Тем
81

Постов
204

Баллов
629
  • 26, Oct 2024
  • #22
Брейн-зенитная артиллерия

, 22 20 байт

C"123"

Вот еще один крутой ответ в Brain-Flak, который вам тоже стоит посмотреть.

Попробуйте онлайн!

Объяснение FAIL .

Для начала мы сделаем копию нашего ввода с помощью

Нижняя копия будет служить правдивым значением, а верхняя будет использоваться для фактической обработки. Это сделано потому, что нам нужно, чтобы входные данные были сверху, и довольно громоздко (два дополнительных байта!) Помещать 1 под входными данными. WIN . This is a simple modification on the standard countdown loop that switches stacks each time it decrements.

Затем мы начинаем цикл

Поскольку существует две стопки, четное число окажется на вершине стопки, с которой оно началось, а нечетное число закончится в противоположной стопке. Скопированное значение останется на месте и, таким образом, будет служить маркером того, с чего мы начали. HOW DUZ I C YR N VISIBLE BOTH SAEM MOD OF N AN 2 AN 0 IF U SAY SO (originally the input) sitting on top of either a truthy (the copy of the input) or falsy (empty stack) value. We also have the opposite value on the other stack.

Как только мы закончим с циклом, у нас будет 0$ which can be removed either by T`E`x x$ Нам нужно избавиться от x . Both seem to work and give opposite results, however 0 или

вызывает ложное значение для нуля, тогда как оно должно возвращать истину. Это связано с тем, что наше «истинное» значение является копией входных данных, а ноль — единственный входной сигнал, который может быть ложным. 1 instead.

(Конечно, согласно спецификации технически я не обязан поддерживать ноль, но приведу два варианта, которые я бы предпочел поддерживать)

 

FROL27032008


Рег
05 Nov, 2019

Тем
80

Постов
211

Баллов
621
  • 26, Oct 2024
  • #23

С#, 8 байт

[02468]$

Компилируется в 1 .

Или, если анонимная функция запрещена, этот метод для 21 байта:

0 ||answer||

Пиф, 3

Я ожидал, что для этого в pyth будет встроенная функция размером 1 или 2 байта. Вместо этого вот лучшие решения, которые я смог найти:

and

или

1 .__and__

или

Go to Post Office to pick up the stdin value in a string format. Go to The Babelfishery to convert the string to a number. Go to Starchild Numerology to pickup the numerical input 2. Go to Divide and Conquer to divide the two passengers (stdin & 2). Go to Cyclone to create a copy of the result. Go to Trunkers to truncate the original to an integer. Go to Equal's Corner to see if the two passengers are the same. Equal's Corner returns the first passenger if they're the same (no .5 removal so the stdin was even) or nothing if they're not. If nothing was returned, it was odd, so go pick up a 0 from Starchild Numerology. Go to Knots Landing to convert any 0s to 1s and all other numbers to 0s. Go to The Babelfishery to convert the passenger (either a 1 or 0 at this point) to a string. Go to Post Office to print that string. Try and fail to go to Starchild Numerology because the directions are wrong so the program terminates. ||answer||

Bash + bc, 21 14 11 9 байт

Go to Post Office:w 1 l 1 r 1 l. Pickup a passenger going to The Babelfishery. Go to The Babelfishery:s 1 l 1 r. Pickup a passenger going to Divide and Conquer. 2 is waiting at Starchild Numerology. Go to Starchild Numerology:n 1 l 1 l 1 l 2 l. Pickup a passenger going to Divide and Conquer. Go to Divide and Conquer:e 1 l 2 r 3 r 2 r 1 r. Pickup a passenger going to Cyclone. Go to Cyclone:e 1 l 1 l 2 l. Pickup a passenger going to Trunkers. Pickup a passenger going to Equal's Corner. Go to Trunkers:s 1 l. Pickup a passenger going to Equal's Corner. Go to Equal's Corner:w 1 l. Switch to plan "b" if no one is waiting. Pickup a passenger going to Knots Landing. Go to Knots Landing:n 4 r 1 r 2 r 1 l. [a]Pickup a passenger going to The Babelfishery. Go to The Babelfishery:w 1 l. Pickup a passenger going to Post Office. Go to Post Office:n 1 l 1 r. [b]0 is waiting at Starchild Numerology. Go to Starchild Numerology:n 1 r. Pickup a passenger going to Knots Landing. Go to Knots Landing:w 1 r 2 r 1 r 2 l 5 r. Switch to plan "a".

Считывает ввод командной строки, преобразует значение в строку с помощью операции mod и передает строку в bc для расчета. Выводит 1 для нечетного, 0 для четного.

Тестовые случаи:

Go to Post Office:w 1 l 1 r 1 l.Pickup a passenger going to The Babelfishery.Go to The Babelfishery:s 1 l 1 r.Pickup a passenger going to Divide and Conquer.2 is waiting at Starchild Numerology.Go to Starchild Numerology:n 1 l 1 l 1 l 2 l.Pickup a passenger going to Divide and Conquer.Go to Divide and Conquer:e 1 l 2 r 3 r 2 r 1 r.Pickup a passenger going to Cyclone.Go to Cyclone:e 1 l 1 l 2 l.Pickup a passenger going to Trunkers.Pickup a passenger going to Equal's Corner.Go to Trunkers:s 1 l.Pickup a passenger going to Equal's Corner.Go to Equal's Corner:w 1 l.Switch to plan "b" if no one is waiting.Pickup a passenger going to Knots Landing.Go to Knots Landing:n 4 r 1 r 2 r 1 l.[a]Pickup a passenger going to The Babelfishery.Go to The Babelfishery:w 1 l.Pickup a passenger going to Post Office.Go to Post Office:n 1 l 1 r.[b]0 is waiting at Starchild Numerology.Go to Starchild Numerology:n 1 r.Pickup a passenger going to Knots Landing.Go to Knots Landing:w 1 r 2 r 1 r 2 l 5 r.Switch to plan "a".

Изменить: сохранено 7 байт благодаря @ais523.
Редактировать 2: сохранено еще 3 байта благодаря @Dennis
Редактировать 3: спас еще двоих благодаря @Dennis.

 

Osmobil


Рег
28 Oct, 2007

Тем
82

Постов
198

Баллов
638
  • 26, Oct 2024
  • #24

7, 18 символов, 7 байт

1

Попробуйте онлайн!

7 не имеет ничего похожего на обычный оператор if и имеет более одного идиоматического способа представления логического значения. Таким образом, трудно понять, что считать правдивым, а что ложным, но эта программа использует 0 for odd and the null string for even (the truthy and falsey values for Perl, in which the 7 interpreter is written). (It's easy enough to change this; the odd output is specified before the first 7, the even output is specified between the first two 7s. It might potentially need an output format change to handle other types of output, though; I used the two shortest distinct outputs here.)

7 использует сжатую восьмеричную кодировку, в которой три байта источника представляют восемь байтов программы, поэтому 18 символов источника представлены на диске в 7 байтах.

Объяснение

EvenQ

Как и многие форматы вывода, «выходные целые числа» отменяют любое количество уровней экранирования перед выводом; таким образом False , which combined make a swap-and-escape operation, can be used in place of True , операция замены (которая представляет собой операцию замены и выхода с последующим unescape). Если вы использовали выходной формат, который нестабилен относительно экранирования, вам понадобится полная OddQ there. (Incidentally, the reason why we needed to escape the format string originally is that if the first output contains unrepresentable characters, it automatically forces output format 7. Escaping it removes the unrepresentable characters and allows format 0 to be selected.)

Из шести начальных элементов стека самым верхним является основная программа (и она используется . that's the first thing to run); the second is the < который выбирает формат вывода и запрашивает ввод и используется этой операцией; третий потребляется как побочный эффект ... 1 1 NUL ... 49 49 0 ^ operation (it's used to discard stack elements in addition to producing output); the fourth, <. , является телом цикла (и потребляется ... 1 NUL NUL ... 49 0 0 ^ that executes the loop); and the fifth and sixth are swapped a number of times equal to the input (thus end up in their original positions if the input is even, or in each others' positions if the input is odd).

Вы можете отбить персонажа, изменив ведущие , to > (и опираясь на неявный пустой шестой элемент стека), но это изменит четность выходных данных на менее идиоматический метод, чем метод «нечетное значение верно», и он не сохраняет целый байт (длина источника все еще составляет семь байтов). ). Поэтому я решил использовать более естественную форму вывода, поскольку она не хуже.

 

Ayaxminsk


Рег
28 Feb, 2010

Тем
66

Постов
203

Баллов
553
  • 26, Oct 2024
  • #25

Желе, 1 байт

,

Попробуйте онлайн!

Просто еще один встроенный.

Для людей, которые не знают Jelly: у него довольно много возможностей для вывода недостающих фрагментов кода, поэтому нет большой синтаксической разницы между фрагментом, функцией и полной программой; интерпретатор автоматически добавит код для ввода соответствующих аргументов и выведет результат. Это очень удобно при работе с правилами PPCG, которые разрешают функции и программы, но запрещают фрагменты. В ссылке TIO я рассматриваю это как функцию и запускаю ее для каждого целого числа от 1 до 20 включительно, но она работает и как полноценная программа.

Желе, 2 байта

[,>,]

Попробуйте онлайн!

Без встроенной функции он тоже довольно короткий. (Это побитовое И с 1.)

 

Millas


Рег
08 Aug, 2004

Тем
75

Постов
221

Баллов
636
  • 26, Oct 2024
  • #26

Чистый Баш, 8

  • Сэкономлено 3 байта благодаря @Dennis
+

Ввод, заданный в качестве параметра командной строки для этой функции. +[,>,]<. . Output returned as a shell return value - display with IT'S SHOWTIME # BeginMain HEY CHRISTMAS TREE i # Declare i YOU SET US UP 0 # SetInitialValue 0 GET YOUR ASS TO MARS i # AssignVariableFromMethodCall i DO IT NOW # CallMethod I WANT TO ASK YOU ... ANSWERED IMMEDIATELY # ReadInteger GET TO THE CHOPPER i # AssignVariable i HERE IS MY INVITATION i # SetValue i (push i on the stack) I LET HIM GO 2 # ModuloOperator 2 ENOUGH TALK # EndAssignVariable TALK TO THE HAND i # Print i YOU HAVE BEEN TERMINATED # EndMain

 

Pris_v1_v1


Рег
22 Sep, 2011

Тем
64

Постов
204

Баллов
564
  • 26, Oct 2024
  • #27

Алиса, 7 байт

i

Попробуйте онлайн!

Принты 0 for even inputs and 1 для нечетных входов.

Объяснение

Это структурно похоже на моя дополнительная программа, но перевернутое зеркало слегка меняет поток управления:

IT'S SHOWTIME HEY CHRISTMAS TREE i YOU SET US UP 0 GET YOUR ASS TO MARS i DO IT NOW I WANT TO ASK YOU A BUNCH OF QUESTIONS AND I WANT TO HAVE THEM ANSWERED IMMEDIATELY GET TO THE CHOPPER i HERE IS MY INVITATION i I LET HIM GO 2 ENOUGH TALK TALK TO THE HAND i YOU HAVE BEEN TERMINATED
 

Lazarojyqqva


Рег
14 Feb, 2011

Тем
76

Постов
214

Баллов
624
Тем
403,760
Комментарии
400,028
Опыт
2,418,908

Интересно