задача
Учитывая неотрицательное целое число n
, выход , 1
если n
есть 0
, и вывести значение в n
противном случае.
вход
Неотрицательное целое число.
- Если вы хотите принять строку в качестве входных данных, строка будет соответствовать следующему регулярному выражению:,
/^(0|[1-9][0-9]*)$/
то есть она не должна иметь начальных нулей, кроме случаев, когда это так0
. - Если вы принимаете действительное целое число в качестве входных данных, вы можете предположить, что целое число находится в пределах возможностей обработки языка.
Выход
Целое положительное число, указанное выше. Ведущие нули не допускаются. Ваш вывод должен соответствовать регулярному выражению /^[1-9][0-9]*$/
.
Testcases
input output
0 1
1 1
2 2
3 3
4 4
5 5
6 6
7 7
счет
Это код-гольф , поэтому выигрывает самый короткий ответ в байтах.
Применяются стандартные лазейки .
Ответы:
C (gcc),
1413 байтовСпасибо @betseg за напоминание об
n?:1
уловке в комментариях к другому ответу C!Попробуйте онлайн!
C, 17 байтов
Попробуйте онлайн!
C, 16 байтов
Попробуйте онлайн!
источник
3*!n+n
равное3*0+5
.main
из которогоf
вызывается функция / макрос . По умолчанию решение не обязательно должно быть полной программой. Специфичная для gcc версия может компилироваться или не компилироваться на другом компиляторе, и она может работать или не работать правильно при компиляции на другом компиляторе.Japt , 2 байта
Попробуйте онлайн!
объяснение
ª
это ярлык для||
оператора JS . Japt имеет неявный ввод, поэтому эта программа вычисляетinput||1
, и результат неявно отправляется в STDOUT.w1
будет работать так же, принимая максимум ввода и1
.источник
Алиса , 7 байт
Попробуйте онлайн!
объяснение
источник
JavaScript (ES6), 7 байт
источник
n=>n+!n
(по крайней мере, я так думаю)n|!n
, хотя этот ограничен 31-разрядным количеством.)n=>n||1
можно упроститьn||1
, то нет. Приемлемыми ответами являются либо полные программы, либо функции.n=>do_something_with(n)
является функцией стрелка в синтаксисе ES6.n
если оно не равно нулю. Побитовое ИЛИ будет изменятьсяn
всякий раз, когда младший значащий бит не установлен (например(4|1) === 5
).Pyth, 2 байта
Попробуйте онлайн
объяснение
источник
Сетчатка , 4 байта
Попробуйте онлайн!
Если вход начинается с нуля, замените его на 1. (Работает, потому что вход гарантированно не будет иметь начальных нулей для ненулевых значений.)
источник
V , 4 байта
Попробуйте онлайн!
Злоупотребляет нежелательным, но ожидаемым поведением , поэтому я не могу назвать это ошибкой. Объяснение:
В Vim команды принимают количество. Например,
<C-a>
увеличит число, но7<C-a>
увеличит число на 7. Однако вы не можете использовать его0
как счетчик, потому что0
это уже команда (перейти в первый столбец), иВ контексте текстового редактора редко имеет смысл просить, чтобы команда была выполнена 0 раз.
Это хорошо для текстового редактора, но, как правило, неприятно для языка игры в гольф, поэтому V перезаписывает некоторые команды, так что
0
это правильный счет. Например,é
,ñ
,Ä
, и некоторые другие. Однако, поскольку<C-a>
это встроенная команда vim, она не перезаписывается, поэтому выполнение этого с положительным вводом дает:Но работа с 0 в качестве ввода дает:
Полное объяснение:
источник
0
не считать, полезно. Сначала я даже не подумал об этом, потому что много раз избегал этогоJ , 2 байта
Попробуйте онлайн!
^
[аргумент] возведен во власть*
знак аргумента (0, если 0, иначе 1)Потому что
1=0^0
в J.источник
Haskell, 5 байтов
Пример использования:
(max 1) 0
->1
.Ничего особенного объяснить.
источник
дк, 7
Полагается на то, что
dc
оценивает от 0 0 до 1, но от 0 n до 0 для всех остальных n.Попробуйте онлайн .
источник
R 13 байт
читает
n
со стандартного ввода. С помощьюpmax
он может читать в списке и возвращать соответствующее значение для каждого элемента в списке для +1 байта.попробуйте это онлайн!
Я должен отметить, что есть еще одно точное решение R в 13 байтах от Sven Hohenstein, которое позволяет еще одно 13-байтовое решение
что заставляет меня задуматься, является ли это нижним пределом для R.
источник
pryr
:pryr::f(n+!n)
. Не могу найти что-нибудь меньшее ...Cubix , 6 байтов
Каким-то образом удалось разместить его на единичном кубе ... Протестируйте его онлайн!
объяснение
Перед запуском код организован в виде сети кубов:
IP (указатель инструкций) затем помещается на крайнюю левую грань (
I
), направленную вправо. Инструкции запускаются оттуда:Затем IP попадает
!
снова, пропуская@
на нижней грани. Это не полезно, так как нам нужно нажать,@
чтобы завершить программу. IP-адресL
снова срабатывает и проходит через среднюю линию в обратном направлении (L1!I
), а затем снова попадаетL
на IP-адрес, который, наконец, включает IP-адрес@
.источник
брейкфук , 8 байт
Попробуйте онлайн!
источник
V , 5 байтов
Где
<C-a>
находится0x01
.Попробуйте онлайн!
объяснение
источник
Желе, 2 байта
Попробуйте онлайн!
Во многом именно мой ответ Pyth, но это моя первая программа Jelly.
источник
Оазис , 2 байта
Использует следующую формулу: a (0) = 1 , a (n) = n
Попробуйте онлайн!
источник
>V
.R
2016 байтисточник
Брахилог , 3 байта
Попробуйте онлайн!
объяснение
Если мы добавим неявные
?
(Input) и.
(Output), мы получим:источник
MarioLANG , 12 байт
Попробуйте онлайн!
Как это работает
Марио начинает сверху слева, сначала идет направо. Он читает int из input (
;
) и сохраняет его в текущей ячейке памяти. Затем он падает с земли (=
), ударяя[
, что заставляет его игнорировать следующую команду, если текущая ячейка равна 0.Если ячейка не равна 0, он начнет идти влево (
<
), выведет текущую ячейку как int (:
) и падет до своей смерти (конец программы).Если ячейка равна 0, он игнорирует команду повернуть налево и продолжает идти направо. Он увеличивает текущую ячейку (
+
), выводит ее и падает до своей смерти.источник
Brain-Flak ,
22, 10 байтовПопробуйте онлайн!
Объяснение:
Если входные данные отличны от нуля, то
{{}}
все выкинут из стека и будут оцениваться на входе. Если оно равно нулю, ничего не будет вытолкнуто, и оно будет равно нулю. Так бег({{}})
даетНенулевая:
Нуль:
На этом этапе мы добавим высоту стека (0 для ненулевого значения, 1 для нуля) и вытолкнем еще одно значение из стека. (поскольку стек дополняется бесконечным числом 0, это приведет к появлению либо верхнего 0, либо дополнительного 0)
источник
TI-BASIC, 7 байтов
С другой стороны,
TI-BASIC, 7 байтов
источник
Гексагония ,
76 байтExpanded:
Попробуйте онлайн!
Сохранено 1 байт благодаря Мартину!
Если число ненулевое, напечатайте его, в противном случае добавьте к нему и напечатайте вместо этого.
источник
APL (Дьялог) , 3 байта
Попробуйте онлайн!
Это берет верх аргумента и
1
.источник
Python, 15 байт
источник
n or 1
6 байтов?The rules are not terribly clear. I think we have a consensus on meta that REPLs count, but as a separate language, which would allow snippets in many cases, but snippets are not permitted according to this meta post
-> codegolf.meta.stackexchange.com/questions/2419/...1or n
всегда возвращался1
, не так ли?lambda n:n|1>>n
постоянный ток, 11 байт
[1]sf
сохраняет макрос в регистре f, который помещает 1 в верхнюю часть стека,?
читает ввод,d0=f
запускает макрос f, если input был 0,p
печатает верхнюю часть стека.Тест:
источник
Excel, 10 байт
Это экономит 4 байта более очевидным решением заявление «если»,
=IF(A1=0,1,A1)
.источник
=A1+NOT(A1)
Java 8, 10 байт
источник
i==0
может быть замененоi<1
R 13 байт
Здесь
scan
используется для чтения входного значенияn
. Отрицаниеn
(то есть,!n
0 или 1) добавляется кn
.источник
Mathematica,
98 байтовПер Мартин Эндер:
Первая идея:
Чистая функция с заменяет
0
на1
. Пространство необходимо, или оно думает, что мы делимся.0
.источник
Perl 5, 6 + 2 байта для флагов -l и -p
Принимает ввод в отдельных строках от стандартного ввода. Работает с флагами
-lp
.источник