Podano dodatnią liczbę kwadratową jako dane wejściowe. Podaj liczbę wartości między wejściem a następnym najwyższym kwadratem.
Przykład
Wejście: 1
Wyjście: 2
Powód: Liczby 2 i 3 mają wartość od 1 do 4, kolejny najwyższy kwadrat
Wejście: 4
Wyjście: 4
Powód: liczby 5, 6, 7, 8 są między 4 a 9
Odpowiedzi:
Galaretka , 2 bajty
Wypróbuj online!
Port mojej odpowiedzi Mathematica (pierwiastek kwadratowy, a następnie podwój). Jest to ograniczone do danych wejściowych, które można przedstawić dokładnie jako liczbę zmiennoprzecinkową. W takim przypadku trzy bajtowe rozwiązanie
ƽḤ
działa w przypadku dowolnych kwadratów (które Dennis opublikował jako pierwszy, a następnie usunął).źródło
Brain-Flak ,
38, 22 bajtówWypróbuj online!
Jestem bardzo dumny z tej odpowiedzi. IMO, jedno z moich najlepszych golfowych uderzeń mózgu.
Jak to działa?
Jak zauważyło wielu innych użytkowników, odpowiedzią jest po prostu sqrt (n) * 2 . Jednak obliczanie pierwiastka kwadratowego w wyładowaniach mózgowych jest bardzo nieprofesjonalne. Ponieważ wiemy, że dane wejściowe zawsze będą kwadratem, możemy zoptymalizować. Piszemy więc pętlę, która odejmuje
z danych wejściowych i śledź, ile razy działa. Gdy osiągnie wartość 0, odpowiedzią jest po prostu ostatnia liczba, którą odjęliśmy minus jeden.
Początkowo zepchnąłem licznik na drugi stos. Możemy jednak użyć samego stosu głównego jako licznika, zwiększając wysokość stosu.
W pseudokodzie python-y jest to zasadniczo następujący algorytm:
źródło
Mathematica, 8 bajtów
Wypróbuj online! (Korzystanie z matematyki.)
Różnica między n 2 a (n + 1) 2 wynosi zawsze 2n + 1, ale chcemy tylko, aby wartości między nimi nie obejmowały obu końców, czyli 2n .
Można to potencjalnie skrócić
2#^.5&
zależności od wymagań dotyczących precyzji.źródło
Julia 0,5 , 8 bajtów
Wypróbuj online!
źródło
dc, 5
Wypróbuj online .
Wcześniej źle odczytałem pytanie. Ta wersja działa na dowolne wartości całkowite dodatnie, nie tylko na idealne kwadraty:
dc, 12
Wypróbuj online .
źródło
Galaretka ,
76 bajtówBrakowało mi zastrzeżenia „wejście będzie kwadratowe”, ale zadziała to dla wszystkich liczb całkowitych nieujemnych ... Martin Ender podał już rozwiązanie 2-bajtowe .
Monadyczny link zwracający liczbę.
Wypróbuj online!
źródło
Japt ,
53 bajtyWypróbuj online!
Pierwiastek kwadratowy z danych wejściowych, a następnie pomnóż przez 2.
źródło
Brain-Flak , 20 bajtów
Krzyczcie na niesamowitą (choć nieco dłuższą) odpowiedź DJMcMayhem tutaj
Wypróbuj online!
Wyjaśnienie
Ten kod działa poprzez odliczanie od liczby kwadratowej o nieparzyste przyrosty. Ponieważ każdy kwadrat jest sumą kolejnych liczb nieparzystych, osiągnie on 0 w krokach co 1/2 . Sztuczka polega na tym, że faktycznie śledzimy nasze kroki w parzystej liczbie i używamy wartości statycznej,
()
aby przesunąć ją do odpowiedniej liczby nieparzystej. Ponieważ odpowiedź to 2n 1/2 , ta parzysta liczba będzie naszą odpowiedzią. Kiedy osiągniemy 0, usuwamy zero i nasza odpowiedź znajduje się na stosie.źródło
Mathematica, 17 bajtów
Wypróbuj online!
źródło
Oktawa ,
2510 bajtówWypróbuj online!
Zaoszczędź 15 bajtów, stosując znacznie lepsze podejście Martina. Zakres składa się z
2*sqrt(n)
elementów. Funkcja robi dokładnie to: Mnoży2
przez pierwiastek wejściowy.źródło
Galaretka , 7 bajtów
Wypróbuj online!
Wyjaśnienie:
źródło
Python 3 , 16 bajtów
Wypróbuj online!
źródło
Ohm , 2 bajty
Wypróbuj online!
źródło
JavaScript ES6, 10 bajtów
Wypróbuj online!
Math.sqrt
jest dość długi i dlatego używamy**.5
źródło
TI-Basic, 3 bajty
Najprostsze podejście ...
źródło
05AB1E , 2 bajty
Wypróbuj online!
Kolejny port przedłożenia Martina Endera ...
źródło
Dodaj ++ ,
2220 bajtówWypróbuj online!
Chcesz wiedzieć, jak to działa? Nie bój się! Jestem tutaj, aby cię edukować!
źródło
MATL (
87 bajtów)Jestem pewien, że można to znacznie zmniejszyć (edytuj: dzięki Luis), ale naiwnym rozwiązaniem jest:
Wypróbuj online!
Wyjaśnienie:
źródło
2^
przezU
(a działało to w wersji 20.1.1 , która była najnowsza w momencie wyzwania, więc odpowiedź byłaby możliwa nawet według naszego starego standardu)Pari / GP , 9 bajtów
Wypróbuj online!
źródło
PHP , 44 bajty
Wypróbuj online!
źródło
Alice , 10 bajtów
Wypróbuj online!
Wyjaśnienie
Ponownie oblicza 2 sqrt (n) . Układ oszczędza dwa bajty w stosunku do standardowego rozwiązania:
Podział kodu, z wyłączeniem przekierowania adresu IP:
źródło
Idź , 56 bajtów
Wypróbuj online!
źródło
QBIC ,
199 bajtówUratowałem sporo, kopiując podejście @ MartinEnder.
Niestety nie ma linku TIO do QBIC.
Wyjaśnienie
źródło
Właściwie 3 bajty
Wypróbuj online!
źródło
05AB1E ,
43 bajtyPrzekreślone 4 to nadal 4: c
Wypróbuj online!
źródło
Retina , 21 bajtów
Wypróbuj online! Objaśnienie: Działa na podstawie pierwiastka kwadratowego z liczby na podstawie trójkątnego solvera liczb Martininandera. Po dopasowaniu liczby kwadratowej,
$1
jest różnicą między liczbą kwadratową a poprzednią liczbą kwadratową, w jednostkach. Chcemy kolejnej różnicy, ale ekskluzywnej, która jest tylko 1 dodatkową. Aby to osiągnąć, liczymy liczbę łańcuchów zerowych w$1
.źródło
T-SQL, 22 bajty
Dane wejściowe pochodzą z wcześniej istniejącej tabeli, zgodnie z naszymi standardami .
źródło
Java (OpenJDK 9) / JShell, 17 bajtów
Wypróbuj online!
Uwaga: Wymagałoby
import java.util.function.*;
to pobraniaIntFunction<T>
w Javie 8 lub Java 9, alejava.util.function
pakiet jest domyślnie importowany w JShell.źródło
Haskell, 9 bajtów
Wypróbuj online
Wejścia i wyjścia będą traktowane jako wartości zmiennoprzecinkowe.
źródło
Noether, 7 bajtów
Wypróbuj tutaj!
Tak samo jak każda inna odpowiedź: wypisuje dwa razy pierwiastek kwadratowy.
źródło