Herausforderung
Es scheint also, dass wir zwar viele Herausforderungen haben, die mit quadratischen Zahlen oder Zahlen anderer Formen funktionieren, aber keine, die einfach fragt:
Wenn eine ganze Zahl n
(wo n>=0
) als Eingabe angegeben wird, wird ein wahrer Wert zurückgegeben, wenn dies n
ein perfektes Quadrat ist, oder ein falscher Wert, wenn dies nicht der Fall ist.
Regeln
- Sie können Eingaben auf jede vernünftige und bequeme Weise vornehmen, sofern dies nach den Standard-E / A-Regeln zulässig ist .
- Sie müssen keine Eingaben verarbeiten, die größer sind als die von Ihnen gewählte Sprache und die auch nicht zu Gleitkommaungenauigkeiten führen.
- Ausgabe soll ein von zwei konsistenten truthy / Falsey Werten (zB
true
oderfalse
,1
oder0
) - truthy , wenn der Eingang ein perfekter Platz, Falsey wenn es nicht. - Dies ist Codegolf, also gewinnt die niedrigste Bytezahl.
Testfälle
Input: 0
Output: true
Input: 1
Output: true
Input: 64
Output: true
Input: 88
Output: false
Input: 2147483647
Output: false
2**54-2
es immer noch größer ist als ein Double, zumindest in JavaScript18014398509481982 > 9007199254740991
2**54-2
in eine JS-Konsole ein und vergleichen Sie, was Sie erhalten 18014398509481982
(den genauen Wert). JS gibt den exakten Wert aus, ist also 2**54-2
mit einem Double darstellbar. Wenn Sie das immer noch nicht überzeugt, nehmen Sie die Binärdaten 0100001101001111111111111111111111111111111111111111111111111111
, interpretieren Sie sie als IEEE-754-Gleitkomma mit doppelter Genauigkeit und sehen Sie, welchen Wert Sie erhalten.
18014398509481982
(2**54-2
), das ist mit einem Doppel darstellbaren und verursacht Antworten , die Verwendungsqrt
zum Scheitern verurteilt.