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.