Um número é inteiro se for um número inteiro não negativo sem parte decimal. Então 0
e 8
e 233494.0
são inteiros, enquanto 1.1
e 0.001
e 233494.999
não são.
Entrada
Um número de ponto flutuante na base / codificação padrão do seu idioma.
Por exemplo, a representação inteira padrão para Cálculo lambda binário seria numerais da igreja . Mas a representação inteira padrão para Python é a base 10 decimal , não Unary .
Saída
Um valor verdadeiro, se a entrada for inteira, um valor falso, se não for.
Observe que, se o seu idioma suportar apenas a precisão decimal, digamos, 8 casas, 1.000000002
poderá ser considerado inteiro.
A entrada e a saída podem ser feitas por qualquer método de E / S padrão .
Casos de teste
Input -> Output
332 -> true
33.2 -> false
128239847 -> true
0.128239847 -> false
0 -> true
0.000000000 -> true
1.111111111 -> false
-3.1415926 -> false
-3 -> false
Pontuação
Assim como no código-golfe , o envio mais curto vence. Boa sorte!
Respostas:
APL (Dyalog) , 3 bytes
Experimente online!
Observe que
f←
foi anexado no link do TIO devido a limitações técnicas, mas normalmente não é necessário.fonte
floor(n) == abs(n)
.Haskell ,
2716 bytesEsta função verifica se
x
está contida na lista de números inteiros não negativos que não são maiores quex
.Experimente online!
fonte
Wolfram Language (Mathematica) ,
171514 bytesGuardado 1 byte graças a Not a tree!
Experimente online!
Primeira resposta do Mathematica \ o /
Mathematica, 15 bytes
Economizou 2 bytes graças a @ user202729!
fonte
Pitão, 4 bytes
Suíte de teste
O número é igual (
q
) ao piso (s
) do seu valor absoluto (.a
)?fonte
Casca , 3 bytes
Experimente online! O terceiro caso de teste atinge o tempo limite no TIO, então cortei alguns dígitos. Tentei executá-lo localmente, mas o matei após alguns minutos, pois estava usando mais de 6 GB de memória e meu computador começou a gaguejar. Teoricamente, deveria terminar em algum momento ...
Explicação
Isso corresponde à descrição do desafio diretamente.
fonte
λx → floor(x) == abs(x)
em Husk?§=⌊a
, então um byte a mais.Python 2 , 18 bytes
Experimente online!
fonte
/// , 94 bytes, entrada codificada
Experimente online!
Entrada entre as duas linhas verticais finais (
||
)Tira
-00...0
e.00...0
converte todos os dígitos restantes emx
s e testa se o número restante ainda temx
s após.
ou-
não seguido por.
.Pode salvar até 7 bytes, dependendo do que é contado como truthy e falsey, já que esse idioma não possui valores nativos de truthy / falsey, está atualmente sendo exibido
true
e,false
mas pode mudar para, por exemplo,T
eF
para 87 bytes, se for permitido.fonte
Oitava , 15 bytes
Experimente online!
Este é baseado na abordagem usada na resposta Haskell do @ flawr .
Enquanto ele traz a contagem de bytes para 15, é vergonhosamente ineficiente (sem querer ofender), criando uma lista de cada número inteiro de
0
parax
e ver sex
está contido dentro.Oitava , 18 bytes
Experimente online!
Recebe a entrada como um número de precisão dupla. Retorna verdadeiro se inteiro.
Verifica se a entrada quando arredondada é igual à magnitude da entrada. Este será apenas o caso quando o número for positivo e inteiro.
Oitava , 18 bytes
Experimente online!
Uma solução alternativa para 18 bytes. Infelizmente, a
mod
função no Octave não converte implicitamente abool
em adouble
; portanto,+( )
é necessário em torno da comparação maior que a. Caso contrário, essa solução teria sido mais curta.Oitava , 18 bytes
Experimente online!
E outro ...
não consigo obter menos de 18 bytes. Tudo por ter que permitir que 0 seja verdadeiro com o>=
invés de apenas>
.fonte
C ++ (gcc) , 33 bytes
Experimente online!
fonte
Aceto , 6 bytes
Experimente online!
fonte
Pitão , 6 bytes
Experimente online!
fonte
QBIC , 17 bytes
Explicação
Se uma das verificações falhar, isso retornará 0. Se ambas forem verdadeiras, retornará -1 x -1 = 1
fonte
Python 2 e Python 3 ,
2118 bytesExperimente online! (Py2)
Experimente online! (Py3)
3 bytes salvos graças ao Sr. XCoder.
fonte
C (gcc),
27282725 bytes-2 graças a PrincePolka
Experimente online!
Define uma macro "função"
g
que aceita um parâmetrof
(de qualquer tipo). Em seguida, verifica se a conversãof mod 1
é zero e sef
não é negativa.fonte
include
directiva na sua contagem de bytes, uma vez fmod é definida emmath.h
: vê láC #, Java: 43 bytes
-1 byte graças a Zacharý
-1 byte graças a TheLetalCoder
O C # possui uma otimização especial de 33 bytes que você não pode fazer em java:
Para teste
Código c #:
Código Java:
fonte
return
e(
.bool
e não há necessidade do ternário.bool
não existe em Javareturn(int)n==n
? Ou isso serian==n
um int e não apenasn
?int w(float n){return(int)n!=n|n<0?0:1;}
( 40 bytes ). Como o Java 8 lambda, é ainda mais curto:n->(int)n==n&n>=0
( 17 bytes ) , e o mesmo se aplica à resposta em C # que lambda:n=>(int)n==n&n>=0
(também 17 bytes ) .Planilhas Google, 10 bytes
Função de planilha anônima que registra as entradas da célula
A1
e as saídas para a célula chamadora.fonte
Prolog (SWI) , 24 bytes
Experimente online!
fonte
Ly ,
3547 bytesExperimente online!
Ly tem suporte de flutuador, mas a única maneira de criar um flutuador atualmente é realizando divisão. Não há como usar um float como entrada, então tive que verificar manualmente a string.
Perdeu 13 bytes adicionando suporte para números negativos.
fonte
JavaScript, 14
fonte
n=>!(n-(n|0))
(n=>!(n-(n|0)))(-3)
retornatrue
, mas deve retornarfalse
. Veja o último caso de teste.Perl 5, 11 +1 (-p) bytes
O
-l
comutador não é contado porque, para testes, é exibidoexperimente online
fonte
Perl 6 ,
1513 bytesTeste-o
Teste-o
fonte
Java (OpenJDK 8) , 14 bytes
Experimente online!
fonte
C #,
403729 bytesGuardado 8 bytes graças a @Dennis_E!
Resposta antiga (37 bytes)
Resposta antiga antiga (40 bytes):
fonte
bool z(float x)=>x%1==0&&x>=0;
e você pode usar um único&
para 29 bytesx=>x%1==0&x>=0
é mais curto e compilação paraFunc<float, bool>
JavaScript,
1715 bytesObrigado a edc65 por detectar meus erros.fonte
Sinclair ZX81 não expandido, 20 bytes
20 bytes porque BASIC é tokenizado.
Simplesmente produzirá 1 (verdadeiro) se o número for positivo e o valor do número digitado for igual ao seu valor inteiro. As saídas 0 de qualquer uma dessas condições não são atendidas.
fonte
newline
(\r\n
equivalente em ZX81), espaços em branco não contam como bytes, pois eles já estão incluídos nas palavras-chave geralmente devido ao sistema de entrada Sinclair 'one-key-press'. Em execução, serão necessários mais bytes, pois atribuirá o valorA
avar stack
; Eu acho que cada valor numérico é sempre 5 bytes de memória.C, C ++:
3837 bytes-1 byte graças a Zacharý
-1 byte graças ao ceilingcat
Para teste
C: Experimente online
Código C:
Código C ++:
fonte
INT_MAX
. (Eu realmente não me importo, mas algumas pessoas fazem.)return(int)n==n...
trabalho?>=0
teste):return(unsigned)n==n;
E em C, você pode omitir o tipo de retorno por mais 4 bytes.w(float n){n=n==(int)n&&n>=0;}
JavaScript (Node.js) , 11 bytes
Experimente online!
fonte
J ,
74 bytesFoi removida a verificação desnecessária de celing após a solução de Erik The Outgolfer
Experimente online!
fonte
Lisp comum,
3632 bytesExperimente online!
Transposição da resposta de marmeladze .
fonte
Python simbólico , 21 bytes
Experimente online!
Usa uma comparação encadeada:
_%(_==_) == (_!=_)
verifica sen%1 == 0
, somente verdadeiro sen
não tiver parte decimal.(_!=_) <= _
verifica se0 <= n
, somente verdadeiro se o número inteiro não for negativo.fonte