Wyzwanie
Dość proste, biorąc pod uwagę wkład x
, obliczyć, że to nieskończona wieża mocy!
x^x^x^x^x^x...
Dla was, miłośników matematyki, jest x
to nieskończona podróż .
Pamiętaj, że:
x^x^x^x^x^x... = x^(x^(x^(x^(x...)))) != (((((x)^x)^x)^x)^x...)
Zaskoczeni, że nie mieliśmy z tym „prostego” wyzwania matematycznego! *
Założenia
x
zawsze będzie zbieżny.- Liczby ujemne i zespolone powinny być obsługiwane
- To jest golf golfowy , więc wygrywa najmniej bajtów !
- Twoje odpowiedzi powinny być poprawne do co najmniej 5 miejsc po przecinku
Przykłady
Input >> Output
1.4 >> 1.8866633062463325
1.414 >> 1.9980364085457847
[Square root of 2] >> 2
-1 >> -1
i >> 0.4382829367270323 + 0.3605924718713857i
1 >> 1
0.5 >> 0.641185744504986
0.333... >> 0.5478086216540975
1 + i >> 0.6410264788204891 + 0.5236284612571633i
-i >> 0.4382829367270323 -0.3605924718713857i
[4th root of 2] >> 1.239627729522762
* (Inne niż bardziej skomplikowane wyzwanie tutaj )
Odpowiedzi:
APL (Dyalog) , 4 bajty
Wypróbuj online!
*
moc⍣
aż do≡
stabilny⍨
selfieźródło
Pyth,
43 bajtyprzekreślone 4 jest nadal zwykłym 4; (
Wypróbuj online
Jak to działa
źródło
G
, zostanie automatycznie wypełniony.Haskell ,
10063 bajtówW przypadku danych wejściowych, które nie są zbieżne (np.
-2
), Nie zostanie to zakończone:Wielkie dzięki @ ØrjanJohansen za nauczenie mnie
until
i oszczędzanie37
bajtów!Wypróbuj online!
źródło
until
funkcji można to znacznie skrócić . Wypróbuj online!until
, wielkie dzięki.Python 3 ,
40 3935 bajtówd>99
zamiastd==99
: 1 dodatkowej iteracji dla mniejszej liczby bajtówx**True
do x inx**(d>99or g(x,d+1))
. Wyrażenie w tym terminie ma wartość True dla głębokości większej niż 99, a zatem zwraca przekazaną wartość.Rekurencyjna lambda o maksymalnej głębokości 100, tj. Dla głębokości 100 zwraca tę samą wartość. W rzeczywistości jest niezależny od zbieżności, więc spodziewaj się nieoczekiwanego wyniku dla liczb o wartościach niespełniających funkcji.
Wypróbuj online!
źródło
complex('j')
z1j
d>99
wykonuje jeszcze jedną iterację i jest krótszy.g=lambda x,d=0:x**(d>99or g(x,d+1))
,x**True
ocenia nax
Python 3,
373027 bajtów-7 bajtów od @FelipeNardiBatista.
-3 bajty od @xnor
Nie pamiętam już dużo Python, ale udało mi się przenieść moją odpowiedź Ruby i pobić drugą odpowiedź Python 3: D
Wypróbuj online!
źródło
x
,eval('x**'*99+'1')
worksMathematica, 12 bajtów
Pobiera na wejściu liczbę zmiennoprzecinkową.
źródło
J , 5 bajtów
Wypróbuj online!
Wyjaśnienie
Najpierw pokażę, jakie polecenie jest wykonywane po parsowaniu
~
na końcu, a przejście będzie dotyczyło nowego czasownika.źródło
(^^:_)
tworzy nowy czasownik dynastyczny za pomocą sprzężenia potęgowego, a następnie przysłówek sam~
sprawia, że czasownik ten jest monadyczny, aby po podaniu argumentux
rozwinął sięx (^^:_) x
. lewyx
następnie „wtyka”, dając((x&^)^:_) x
zgodnie z notatką, a tylko poprawny argument zmienia się podczas iteracji?x u^:n y
, lewy argument jest związany z diadzie tworząc monady, który jest zagnieżdżonyn
razy nay
.x u^:n y -> (x&u)^:n y -> (x&u) ... n times ... (x&u) y
C # (.NET Core) ,
7978 bajtówWypróbuj online!
Wybrałem iterację do
i
= 999, ponieważ jeśli iterowałem do 99, niektóre przykłady nie osiągnęły wymaganej precyzji. Przykład:Jak widać, po 99 iteracjach wyimaginowana część zawiodła z dokładnością do 5. miejsca po przecinku.
W tym przypadku po 99 iteracjach otrzymujemy oczekiwaną precyzję. W rzeczywistości mógłbym iterować do
i
= 1e9 z tą samą liczbą bajtów, ale to znacznie spowolniłoby kodźródło
Galaretka , 5 bajtów
Wypróbuj online!
źródło
Rubin,
2120 bajtówOświadczenie : Wygląda na to, że Ruby zwraca dziwne wartości, gdy podnosi liczbę zespoloną do potęgi. Zakładam, że naprawienie całego modułu matematycznego Ruby nie jest możliwe, ale w przeciwnym razie wyniki tej funkcji powinny być prawidłowe.Edycja : zastosowałem najnowsze zmiany z mojej odpowiedzi w Pythonie 3 i nagle daje to w ten sposób oczekiwane rezultaty :)Wypróbuj online!
źródło
eval
."0+1i**0+1i**0+1i**..."
, który analizuje w niewłaściwy sposób, ponieważ**
ma wyższy priorytet niż+
.#inspect
i#to_s
zwracają różne wartości. Przed przesłaniem wstępnej odpowiedzi przeszedłem testy w irb i zobaczyłem, że npComplex(1,2)
. Wpisanie REPL da(1+2i)
, w tym nawiasy. Podczas nawijania wartości jednak nawiasy nie są uwzględniane, więc pierwszeństwo, jak zauważyłeś, pomieszało ją.eval
użycie jest zabronione.TI-BASIC, 16 bajtów
Wejścia i wyjścia są przechowywane w
Ans
.źródło
R ,
3633 bajtów- 3 bajty dzięki Jarko Dubbeldam
Czyta ze standardowego.
Reduce
s od prawej, aby wykładniki potęgowe były stosowane we właściwej kolejności.Wypróbuj (funkcja)
Wypróbuj (standardowe wyjście)
źródło
scan(,1i)
Prace. Podobnie jakscan(,'')
działa.JavaScript, 33 bajty
źródło
MATL ,
2010 bajtówzredukowane do połowy dzięki @LuisMendo
Wypróbuj online!
To jest mój pierwszy golf-golf i pierwszy raz, kiedy korzystam z MATL-a, więc jestem pewien, że można go łatwo wygrać.
źródło
XII
jest równoważne zt
. Możesz także pozbyć się automatycznego schowkaXH
iH
korzystać z niegoM
, czylittt^`yw^t5M-]bb-x
. I w ostatniej części, zamiast usuwania niepożądanych wartości, których możesz użyć&
, co mówi domyślnej funkcji wyświetlania, aby pokazywała tylko górę. Możesz więc użyćttt^`yw^t5M-]&
i zapisać kilka bajtów.t
nie jest potrzebny, i stosującG
zamiast innegot
można uniknąć&
, a tym samym opuścić]
niejawna:t^`Gw^t5M-
. Hej, zmniejszyliśmy liczbę bajtów o połowę!Perl 6 , 17 bajtów
Wypróbuj online!
R**
jest operatorem odwrotnego potęgowania;x R** y
jest równyy ** x
.[R**]
zmniejsza listę 999 kopii argumentu wejściowego z odwrotnym potęgowaniem.źródło