Wyzwanie
Wydaje się, że chociaż mamy wiele wyzwań, które działają z liczbami kwadratowymi lub liczbami innych kształtów, nie mamy takiego, który po prostu pyta:
Podanie liczby całkowitej n
(gdzie n>=0
) jako wartości wejściowej zwraca prawdziwą wartość, jeśli n
jest to idealny kwadrat lub wartość falsey, jeśli nie.
Zasady
- Możesz przyjmować dane za pomocą dowolnych rozsądnych i wygodnych środków, o ile pozwalają na to standardowe reguły we / wy .
- Nie musisz obsługiwać danych wejściowych większych niż Twój wybrany język może natywnie obsługiwać, ani które prowadziłyby do niedokładności zmiennoprzecinkowych.
- Wynik powinien być jedną z dwóch spójnych wartości prawda / falsey (np.
true
Lubfalse
,1
lub0
) - prawda, jeśli wejście jest idealnym kwadratem, falsey, jeśli nie jest. - To jest golf golfowy, więc wygrywa najmniej bajtów.
Przypadki testowe
Input: 0
Output: true
Input: 1
Output: true
Input: 64
Output: true
Input: 88
Output: false
Input: 2147483647
Output: false
2**54-2
wciąż jest większy niż podwójny może bezpiecznie sobie poradzić, przynajmniej w JavaScript18014398509481982 > 9007199254740991
2**54-2
do konsoli JS i porównaj to, co otrzymujesz 18014398509481982
(dokładna wartość). JS generuje dokładną wartość, dlatego 2**54-2
można ją przedstawić za pomocą podwójnej. Jeśli nadal Cię to nie przekonuje, weź dane binarne 0100001101001111111111111111111111111111111111111111111111111111
, zinterpretuj je jako zmiennoprzecinkowe podwójnej precyzji IEEE-754 i zobacz, jaką wartość uzyskasz.
18014398509481982
(2**54-2
), która jest reprezentowana przez podwójną, i powoduje, że odpowiedzi, które są używane,sqrt
zawodzą.