Tarefa
Dado um número inteiro não negativo n
, emita 1
se n
é 0
e emita o valor de n
outro modo.
Entrada
Um número inteiro não negativo.
- Se você gostaria de aceitar a string como entrada, a string corresponderia ao seguinte regex:,
/^(0|[1-9][0-9]*)$/
ou seja, ela não deve ter zeros à esquerda, exceto quando estiver0
. - Se você aceitar um número inteiro real como entrada, poderá assumir que o número inteiro está dentro da capacidade de manipulação do idioma.
Saída
Um número inteiro positivo, especificado acima. Zeros à esquerda não são permitidos. Sua saída deve corresponder ao regex /^[1-9][0-9]*$/
.
Casos de teste
input output
0 1
1 1
2 2
3 3
4 4
5 5
6 6
7 7
Pontuação
Isso é código-golfe , então a resposta mais curta em bytes vence.
Aplicam-se brechas padrão .
Respostas:
C (gcc),
1413 bytesAgradeço à @betseg por me lembrar do
n?:1
truque nos comentários da outra resposta C!Experimente online!
C, 17 bytes
Experimente online!
C, 16 bytes
Experimente online!
fonte
3*!n+n
igual3*0+5
.main
partir do qual a função / macrof
é chamada. Uma solução não precisa ser um programa completo por padrão. A versão específica do gcc pode ou não ser compilada em outro compilador e pode ou não ser executada corretamente quando compilada em outro compilador.Japonês , 2 bytes
Experimente online!
Explicação
ª
é um atalho para o||
operador de JS . Japt tem entrada implícita, portanto, este programa calculainput||1
e o resultado é enviado implicitamente para STDOUT.w1
também funcionaria, aproveitando ao máximo a entrada e1
.fonte
Alice , 7 bytes
Experimente online!
Explicação
fonte
JavaScript (ES6), 7 bytes
fonte
n=>n+!n
(Pelo menos eu acho)n|!n
, embora este é limitado a uma quantidade de 31 bits.)n=>n||1
poderia ser simplificadon||1
, então não. Respostas aceitáveis são programas ou funções completos.n=>do_something_with(n)
é uma função de seta na sintaxe do ES6.n
se não for zero. Um OR bit a bit seria modificadon
sempre que o bit menos significativo não estiver definido (por exemplo(4|1) === 5
).Pitão, 2 bytes
Experimente online
Explicação
fonte
Retina , 4 bytes
Experimente online!
Se a entrada começar com um zero, substitua-a por um 1. (Funciona porque é garantido que a entrada não possui zeros à esquerda para valores diferentes de zero).
fonte
V , 4 bytes
Experimente online!
Abusa de um comportamento não preferido, mas esperado , então não posso chamá-lo de bug. Explicação:
No Vim, os comandos aceitam uma contagem. Por exemplo,
<C-a>
incrementará um número, mas7<C-a>
incrementará um número em 7. No entanto, você não pode usar0
como uma contagem, porque0
já é um comando (vá para a primeira coluna) eNo contexto de um editor de texto, raramente faz sentido solicitar que um comando seja executado 0 vezes.
Isso é bom para um editor de texto, mas geralmente desagradável para uma linguagem de golfe; portanto, V substitui alguns comandos para que
0
seja uma contagem válida. Por exemplo,é
,ñ
,Ä
, e alguns outros. No entanto, como<C-a>
é um comando interno do vim, ele não é sobrescrito, portanto, executar isso com uma entrada positiva fornece:Mas rodar com 0 como entrada fornece:
Explicação completa:
fonte
0
não ser uma contagem é útil. Eu nem sequer considerá-lo no início porque eu tenho evitado isso tantas vezesJ , 2 bytes
Experimente online!
^
[argumento] elevado ao poder de*
o sinal do argumento (0 se 0 mais 1)Porque
1=0^0
em J.fonte
Haskell, 5 bytes
Exemplo de uso:
(max 1) 0
->1
.Não há muito o que explicar.
fonte
dc, 7
Baseia-se no fato de
dc
avaliar 0 0 a 1, mas 0 n a 0 para todos os outros n.Experimente online .
fonte
R, 13 bytes
lê
n
de stdin. Compmax
, ele pode ler em uma lista e retornar o valor apropriado para cada elemento da lista para +1 byte.experimente online!
Devo observar que há outra solução R fina em 13 bytes por Sven Hohenstein que permite outra solução de 13 bytes de
o que me faz pensar se esse é o limite mais baixo para R.
fonte
pryr
:pryr::f(n+!n)
. Não consegue encontrar qualquer coisa menor ...Cubix , 6 bytes
De alguma forma, conseguiu encaixá-lo em um cubo de unidade ... Teste on-line!
Explicação
Antes de ser executado, o código é organizado como uma rede de cubos:
O IP (ponteiro de instrução) é então colocado na face esquerda extrema (
I
), voltada para a direita. As instruções executadas a partir daí são:O IP atinge
!
novamente, ignorando a@
parte inferior da face. Isso não é útil, pois precisamos pressionar o botão@
para finalizar o programa. O IP bateL
novamente e passa pela linha do meio em reverse (L1!I
) antes de terminarL
mais uma vez, o que finalmente transforma o IP@
.fonte
brainfuck , 8 bytes
Experimente online!
fonte
V , 5 bytes
Onde
<C-a>
é0x01
.Experimente online!
Explicação
fonte
Geléia, 2 bytes
Experimente online!
Praticamente exatamente a minha resposta Pyth, mas é o meu primeiro programa Jelly.
fonte
Oásis , 2 bytes
Usa a seguinte fórmula: a (0) = 1 , a (n) = n
Experimente online!
fonte
>V
.R
2016 bytesfonte
Braquilog , 3 bytes
Experimente online!
Explicação
Se adicionarmos o implícito
?
(Input) e.
(Output), teremos:fonte
MarioLANG , 12 bytes
Experimente online!
Como funciona
Mario começa no canto superior esquerdo, inicialmente andando para a direita. Ele lê um int de input (
;
) e o armazena na célula de memória atual. Então ele cai do chão (=
), batendo[
, o que o faz ignorar o próximo comando se a célula atual for 0.Se a célula não for 0, ele começará a andar para a esquerda (
<
), produzirá a célula atual como int (:
) e morrerá (final do programa).Se a célula for 0, ele ignora o comando para virar à esquerda e continua andando à direita. Ele incrementa a célula atual (
+
), a produz e cai até a morte.fonte
Flak cerebral ,
22, 10 bytesExperimente online!
Explicação:
Se a entrada for diferente de zero,
{{}}
irá retirar tudo da pilha e avaliar a entrada. Se for zero, nada será exibido e será avaliado como zero. Então, correr({{}})
dáDiferente de zero:
Zero:
Nesse ponto, adicionaremos a altura da pilha (0 para diferente de zero, 1 para zero) e exibiremos mais um valor da pilha. (como a pilha é preenchida com um número infinito de zeros, isso exibirá os 0 primeiros ou 0 extra)
fonte
TI-BASIC, 7 bytes
Alternativamente,
TI-BASIC, 7 bytes
fonte
Hexagony ,
76 bytesExpandido:
Experimente online!
Guardado 1 byte graças a Martin!
Se o número for diferente de zero, imprima-o, caso contrário, adicione um e imprima-o.
fonte
APL (Dyalog) , 3 bytes
Experimente online!
Isso leva o teto do argumento e
1
.fonte
Python, 15 bytes
fonte
n or 1
6 bytes?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
sempre voltava1
, não?lambda n:n|1>>n
dc, 11 bytes
[1]sf
armazena uma macro no registro f que empurra 1 para o topo da pilha,?
lê a entrada,d0=f
executa a macro f se a entrada for 0,p
imprime a parte superior da pilha.Teste:
fonte
Excel, 10 bytes
Isso economiza 4 bytes sobre a solução óbvia da instrução 'IF'
=IF(A1=0,1,A1)
,.fonte
=A1+NOT(A1)
Java 8, 10 bytes
fonte
i==0
pode ser substituído pori<1
R, 13 bytes
Aqui,
scan
é usado para ler o valor de entradan
. A negação den
(ou seja,!n
0 ou 1) é adicionada an
.fonte
Mathematica,
98 bytesPor Martin Ender:
Primeira ideia:
A função pura substitui
0
por1
. O espaço é necessário ou pensa que estamos dividindo.0
.fonte
Perl 5, 6 + 2 bytes para os sinalizadores -l e -p
Recebe entrada em linhas separadas do stdin. Corre com as bandeiras
-lp
.fonte