Sfida
Quindi, ehm, sembra che, mentre abbiamo molte sfide che funzionano con numeri quadrati o numeri di altre forme, non ne abbiamo una che chiede semplicemente:
Dato un numero intero n(dove n>=0) come input restituisce un valore di verità se nè un quadrato perfetto o un valore di falsa in caso contrario.
Regole
- È possibile accettare input con qualsiasi mezzo ragionevole e conveniente purché consentito dalle regole I / O standard .
- Non è necessario gestire input maggiori di quelli che la lingua scelta può gestire in modo nativo né che porterebbero a imprecisioni in virgola mobile.
- L'output dovrebbe essere uno dei due valori di verità / falsità coerenti (ad esempio,
trueofalse,1o0) - verità se l'input è un quadrato perfetto, false se non lo è. - Questo è code-golf, quindi vince il conteggio di byte più basso.
Casi test
Input: 0
Output: true
Input: 1
Output: true
Input: 64
Output: true
Input: 88
Output: false
Input: 2147483647
Output: false
2**54-2è ancora più grande di un doppio che può tranquillamente gestire, almeno in JavaScript18014398509481982 > 9007199254740991
2**54-2in una console JS e confronta ciò che ottieni 18014398509481982(il valore esatto). JS emette il valore esatto, quindi 2**54-2è rappresentabile con un doppio. Se ciò non ti convince ancora, prendi i dati binari 0100001101001111111111111111111111111111111111111111111111111111, interpretali come un float a doppia precisione IEEE-754 e vedi quale valore ottieni.
18014398509481982(2**54-2), che è rappresentabile con un doppio, e fa sì che le risposte che usanosqrtfalliscano.