Czy nie byłoby fajnie, gdyby funkcje programowania można było odwrócić, tak jak zaimplementowane funkcje matematyczne?
Napisz funkcję (lub program), która przyjmuje jedno dane wejściowe x
w dowolnej formie i generuje dane wyjściowe ln(x)
.
Kiedy bajty programu są ponownie uporządkowane / odwrócone, tak że pierwszy bajt jest teraz ostatnim bajtem, powinien zamiast tego przyjąć jedno wejście x
w dowolnej formie i dane wyjściowe e^x
.
- Twoja odpowiedź musi zawierać co najmniej 3 prawidłowe znaczące liczby.
- Przybliżenia są w porządku, o ile mają co najmniej 3 prawidłowe znaczące liczby.
- Twój kod musi być w tym samym języku programowania, zarówno do przodu, jak i do tyłu.
Powiedzmy, że ten program implementuje ln(x)
:
abc你好
Następnie ten program musi zaimplementować e^x
:
\xBD\xA5\xE5\xA0\xBD\xE4cba
Złota gwiazda, jeśli używasz języka bez obsługi pływaka.
To dziwna forma golfa kodowego, więc wygrywa najkrótszy program.
code-golf
arithmetic
source-layout
Filip Haglund
źródło
źródło
?
, która wykorzystuje metodę sieczną.Odpowiedzi:
Haskell, 11 bajtów
i w odwrotnej kolejności:
Działa to bez sztuczki „komentowania”. Zamiast tego każda wersja definiuje dodatkową, ale nieużywaną funkcję (
pxe
/gol
).źródło
gol=f
.APL, 3 bajty
To jest pociąg funkcyjny. Monadyczne
*
zwrotye^x
, monadyczne⍟
zwrotyln(x)
.⊣
jest funkcją dynamiczną, która zwraca swój lewy argument. Zatem*⊣⍟
jest równoważne z just*
, a odwrotność⍟⊣*
jest równoważna z just⍟
.źródło
Galaretka,
54 bajtówTak, moja pierwsza galaretka odpowiedź. :) Dane wejściowe są przez argument wiersza poleceń.
Galaretka ma własną stronę kodową, więc każdy znak ma jeden bajt.
Wypróbuj online!
Wywrócony:
Wypróbuj online!
Wyjaśnienie
Sam
Æ
w sobie jest nierozpoznanym tokenem, więc działa tak samo jak linia. Oznacza to, że w obu przypadkach główny link jest tylkoÆl
lubÆe
który jest wbudowanym 2-znakowym znakiem dlaexp()
lubln()
i jest domyślnie wykonywany dla pierwszego argumentu wiersza poleceń.źródło
JavaScript, 18 bajtów
źródło
Math.ln||pxe.htaM
prawdopodobnie również zadziała.Poważnie, 5 bajtów
Input, ln, output, następnie exp na pustym stosie (nic nie robi), a input (nic nie robi, ponieważ dane wejściowe są wyczerpane). Wypróbuj online!
Wywrócony:
Wypróbuj online!
źródło
Julia, 7 bajtów
To anonimowa funkcja. Przypisz ją do zmiennej, aby ją wywołać. Ocenia wbudowane
log
lubexp
plus komentarz.źródło
Mathematica, 19 bajtów
Wywrócony:
To było interesujące dla golfa! Mathematica nie ma komentarzy do linii / niejawnych zakończeń ciągów, więc nie mogłem wybrać prostej drogi. Zamiast tego wykorzystał fakt
0 + x == x
,0 x == 0
i to1 x == x
bez względu na to, cox
jest! Testowanie:źródło
Python2, 73 bajty
io: stdin / stdout
odwrotność:
źródło
__import__("math").
zamiastCJam, 11 bajtów
Sprawdź to tutaj.
Wywrócony:
Sprawdź to tutaj.
Zasadniczo taka sama sztuczka związana z komentowaniem jak w odpowiedzi na Python w OP.
e#
zaczyna komentarz.rd
odczytuje dane wejściowe iml
czyme
oblicza logarytm lub wykładniczy.źródło
Brachylog , 3 bajty
Wypróbuj online!
Początkowo miałem nadzieję użyć
~*
, ale chociaż*~
obliczae^x
i z powodzeniem ignoruje tyldy tyldy,~*
nie udaje się we wszystkich wejściowych liczbach całkowitych i napotyka przepełnienie zmiennoprzecinkowe na większości danych niecałkowitych.Naprzód:
Wstecz:
Używa predykatu tożsamości, ponieważ chociaż tyldy tyldy są tolerowane, wiodące indeksy dolne nie są. (Gdyby tak było, odpowiedź Brachylog byłaby
*₁
sama, co jest zwykłym wbudowanym logiem naturalnym).źródło
Vitsy, 5 bajtów
Jest to program, który kończy działanie po błędzie.
Ten program kończy działanie z błędem z ln (wejściem) na stosie.
Wypróbuj online! (zauważ, że umieściłem,
N
aby mieć widoczny wynik)To jest odwrotne:
Ten program kończy działanie z błędem z e ^ (wejście) na stosie.
Wypróbuj online!
źródło
Rozmyte Octo Guacamole, 7 bajtów
niekonkurujący, FOG jest nowszy niż wyzwanie
Jest to odpowiednik funkcji w FOG. Zakłada, że dane wejściowe znajdują się na stosie. Można to przypisać do funkcji za pomocą kodu
"EZO@pZE""f"o
, gdzief
jest dowolna nazwa jednoznakowa, którą chcesz przypisać. Następnie używaj go jak każdego innego polecenia. Przykład:"EZO@pZE"'f'o^f
.Wyjaśnienie:
Wywrócony:
źródło
Matl, 5 bajtów
Yl
: logZe
: exp%
: komentarzźródło
Pyth, 12 bajtów
Znaleziska
ln(input())
Znaleziska
e^input()
Spacje zatrzymują niejawne drukowanie ciągów, każda wersja oblicza je, a następnie tworzy ciąg z pozostałymi znakami.
ln(x)
tryb tutaje^x
tryb tutajźródło
𝔼𝕊𝕄𝕚𝕟, 8 znaków / 10 bajtów
Try it here (Firefox only).Try reverse here (Firefox only).
Tylko 2 wbudowane oddzielone komentarzem.
źródło
Jolf, 9 bajtów
Program 1:
exp
wejściaProgram 2:
ln
wejściaPunkty bonusowe za bycie palindromem bez rozróżniania wielkości liter? Wypróbuj tutaj!
źródło
J, 8 bajtów
Logarytm naturalny jest
^.
wykładniczy^
. Problem polega na tym, że.
można modyfikować tylko prawidłowy czasownik, w przeciwnym razie wystąpi błąd pisowni. Dlatego nie możemy użyć lewy argument lewy w odpowiedzi APL, ponieważ^.[^
spowodowałby błąd po odwróceniu, ponieważ^[.^
tworzy niepoprawny czasownik. Musimy więc używać komentarzy; aleNB.
jest tak długi :( Na szczęście oba kończą się na.
, więc & ldots; jest to.Logarytm:
Wykładniczy:
Możesz wprowadzić je samemu online !
źródło
Java 8,
19818230 bajtówWypróbuj online.
i odwrócone:
Wypróbuj online.
Wykorzystuje trick trick (
//
) z wbudowanymi funkcjami dlaMath.log
iMath.exp
.źródło
Runiczne Zaklęcia , 9 bajtów
Wypróbuj online!
Bezbożny, nieciekawy program.
@
zapewnia zakończenie domniemanego punktu wejścia po lewej stronie, wszystko po nim jest niewykonane. Bardzo starałem się ponownie użyć instrukcji'
lubA
, ale bezskutecznie, nawet przy większych programach. Wymagany wyraźny punkt wejścia dla programów wieloliniowych zasadniczo go wyklucza.źródło