Liczba dwuwymiarowa to liczba, która jest czwartą potęgą innej liczby całkowitej, na przykład: 3^4 = 3*3*3*3 = 81
Biorąc pod uwagę liczbę całkowitą jako dane wejściowe, wypisz najbliższą liczbę dwuwymiarową.
Oto pierwsze 15 podwójnych kwadratów:
1, 16, 81, 256, 625, 1296, 2401, 4096, 6561, 10000, 14641, 20736, 28561, 38416, 50625
To jest kod-golf, więc najmniej bajtów wygrywa w każdym języku
To jest OEIS A000583
code-golf
sequence
number-theory
integer
Skidsdev
źródło
źródło
n^4
in
zmienia się na znak.2 x n²
numery: 2, 8, 18, 32, 50, 72, 98, ...Odpowiedzi:
Python 3 , 35 bajtów
Wypróbuj online!
Jak to działa
Wartość n, przy której wyjście przełącza się z ( k - 1) 4 na k 4, spełnia √ (√n - 3/4) + 1/2 = k lub n = ((k - 1/2) 2 + 3 / 4) 2 = ( k 2 - k + 1) 2 = (( k - 1) 4 + k 4 + 1) / 2, czyli dokładnie pierwsza liczba całkowita bliższa k 4 .
(Działa dla wszystkich n ≤ 4504699340341245 = (8192 4 + 8193 4 - 7) / 2> 2 52 , po czym zaokrąglanie zmiennoprzecinkowe zaczyna go łamać, nawet jeśli działa matematycznie dla wszystkich n .)
źródło
round
jeśli przełączysz się na Python 2, który zaokrągla wszystkie .5 w górę.Oktawa , 35 bajtów
To wyzwanie wymagało podejścia opartego na konwolucji.
Wypróbuj online!
Wyjaśnienie
Wyrażenie
(1:n).^4
tworzy wektor wiersza[1 16 81 256 ... n^4]
.Ten wektor jest następnie spleciony z
[1 1]/2
, co jest równoważne z obliczeniem średniej ruchomej bloków wielkości2
. Zakłada to domyślnie, że wektor jest wypełniony po lewej i po prawej stronie0
. Tak więc pierwsza wartość w wyniku to0.5
(średnia niejawna0
i1
), druga to8.5
(średnia1
i16
) itd.Na przykład dla
n = 9
wynikuconv((1:n).^4,[1 1]/2)
jestPorównanie
n>...
daje wyniki zastosowanie
sum(...)
daje2
. Oznacza to, żen
przekracza dokładnie2
punkt środkowy między liczbami dwukwadratowymi (w tym dodatkowy punkt środkowy0.5
). Wreszcie^4
podnosi to4
, aby doprowadzić do rezultatu16
.źródło
Haskell ,
5149 bajtówFunkcja monad ftw!
Wypróbuj online!
Wyjaśnienie:
źródło
MATL , 6 bajtów
Wypróbuj online!
Wyjaśnienie
Rozważ dane wejściowe
9
jako przykład.źródło
Neim , 5 bajtów
Wyjaśnienie:
Wypróbuj online!
źródło
Excel, 25 bajtów
Excel aktualizuje to do
=INT((A1^0.5-3/4)^0.5+0.5)^4
źródło
Excel.ActiveSheet
obiektu, pobierają je z komórkiA1
Mathematica, 21 bajtów
źródło
Brachylog , 9 bajtów
Wypróbuj online!
Wyjaśnienie
źródło
JavaScript (ES7), 42 bajty
Wersja rekurencyjna, 44 bajty
Próbny
Pokaż fragment kodu
źródło
Oktawa , 37 bajtów
Anonimowa funkcja korzystająca z interpolacji najbliższego sąsiada.
Wypróbuj online!
źródło
conv
:(05AB1E , 6 bajtów
Wypróbuj online!
Wyjaśnienie
źródło
APL, 22 bajty
Wypróbuj online!
W jaki sposób?
o←4*⍨⍳⍵
-o
= zakres (⍵
) 4 [wektoryzacja]p←|⍵-⍨o
-p
= abs (o
-⍵
) [wektoryzacja]o/⍨
- weźo
element pod indeks, w którym ...p=⌊/p
-p
minimalnym elementem jestźródło
Galaretka , 6 bajtów
Łącze monadyczne zwracające listę jednego elementu lub pełny program, który drukuje wynik (przy użyciu nieefektywnej metody).
Wypróbuj online!
W jaki sposób?
źródło
PHP , 33 bajty
Wypróbuj online!
PHP , 56 bajtów
Wypróbuj online!
źródło
C ++, 96 bajtów
Pełna wersja:
LINK, aby spróbować
źródło
Haskell, 35 bajtów
Odpowiedź Python3 na port Andersa .
źródło
R ,
47443735 bajtówWypróbuj online!
źródło
f=
) i zamiast jejx[which.min((x-n)^2)]
użyćwhich.min((x-n)^2)^4
, a następnie umieścićf=
w nagłówku linku TIO do testowania jak tutaj :)x
. Dziękuję Ci!n=scan();which.min(((1:n)^4-n)^2)^4
a dane wejściowe trafiają do sekcji stopki na TIO.Pyth , 9 bajtów
Wypróbuj online!
Pyt , 17 bajtów
Pełny program, który wykorzystuje to samo arytmetyczne podejście, co w odpowiedzi @ AndersKaseorg :
Wypróbuj online!
źródło
Japt , 20 bajtów
To wydaje się zbyt długie!
Sprawdź to
źródło
QBIC , 38 bajtów
Wyjaśnienie
źródło
Java (OpenJDK 8) , 64 bajty
Wypróbuj online!
źródło
Common Lisp, 50 bajtów
Wypróbuj online!
źródło
C #, 95 bajtów
Używamy 940 jako wartości ustawionej, ponieważ każda większa wartość przepełni int.
Pełna / sformatowana wersja:
źródło
Ruby ,
23 lata34 bajtyNie mam pojęcia, dlaczego
0.75
jest to tak ważna liczba, ale hej, cokolwiek działa.Wypróbuj online!
źródło