Zadanie - tytuł właściwie podsumowuje: podnieś liczbę całkowitą x do potęgi x , gdzie 0<x
.
Ograniczenia:
- Korzystanie z potęgowania,
exp()
,ln()
, oraz wszelkie inne powiązane uprawnienia-językowe Zabudowy, jakpow()
,x^x
,x**x
jest zabronione. - Możesz założyć, że podana liczba całkowita mieści się w granicach wybranego języka programowania.
Przypadki testowe:
Input | Output
---------------
2 | 4
3 | 27
5 | 3125
6 | 46656
10 | 10000000000
To jest golf golfowy , więc wygrywa najkrótszy program w bajtach.
code-golf
math
arithmetic
Kudłaty
źródło
źródło
0
i że oczekiwany wynik określenia (0
albo1
albo albo). Wreszcie, radzenie sobie z ujemnymi liczbami całkowitymi byłoby dobrym dodatkiem do wyzwania.1
do0^0
. JednakFoundation
+ Swift zwraca 00
i zamiast tego podałem to0<x
we wprowadzeniu. Usunąłem również ograniczenie, że kod nie powinien zgłaszać błędów; to powinno być oczywiste. W razie potrzeby możesz wycofać się.Odpowiedzi:
APL (Dyalog) , 4 bajty
Dla x x przyjmuje x jako lewy argument i x jako prawy argument.
Wypróbuj wszystkie skrzynki online!
×/
Produkt⍴⍨
arg kopie argA tutaj jest taki, który obsługuje również ujemne liczby całkowite:
Wypróbuj wszystkie skrzynki!
×/
produkt z|
całkowita wartość⍴
R ePetitions z|
wartość bezwzględna*
do potęgi×
podpisWbudowana operacja podstawowa Power to:
źródło
Python , 25 bajtów
Wypróbuj online!
źródło
Mathematica, 16 bajtów
Mam dwa rozwiązania w tej liczbie bajtów:
Tutaj
#~Table~#
tworzy listęn
kopiin
. NastępnieList
głowa zostaje zastąpiona tym,1##&
co zwielokrotnia wszystkie jej argumenty.To po prostu przechowuje dane wejściowe,
n
a następnie mnoży1
przezn
,n
razy.źródło
#~Product~{#}&
JavaScript (ES6),
33282524 bajtówSpróbuj
Historia
25 bajtów
28 bajtów
33 bajty
źródło
Pure Bash, 43
Wypróbuj online .
Nie jestem pewien, czy to zbyt mocno nagina reguły - nie używam żadnego z wymienionych zakazanych wbudowań, ale używam konwersji bazowej.
printf 1%0$1d
wyprowadza1
następnie n0
y$[b#a]
jest rozszerzeniem arytmetycznym, które należy traktowaća
jakob
liczbę podstawową , co daje wymagany wynik. Niestety baza <2 nie działa, więc dodatkowe?:
bity obsługują wejście n = 1.Maksymalna wartość wejściowa to 15, ponieważ bash używa 64-bitowych liczb całkowitych ze znakiem (do 2 31 -1).
źródło
Alice , 13 bajtów
Wypróbuj online!
Wyjaśnienie
Jest to struktura dla programów, które odczytują i zapisują liczby całkowite dziesiętne i działają całkowicie w trybie kardynalnym (czyli programy dla większości problemów arytmetycznych).
źródło
Standardowy ML , 42 bajty
Wypróbuj online!
Wyjaśnienie:
źródło
Galaretka , 3 bajty
Wypróbuj online!
W jaki sposób?
źródło
F7 88 50
działa zgodnie z przeznaczeniem.Cubix , 19 bajtów
Wypróbuj online!
Krok po kroku
Rozciąga się na sześcian o długości boku 2
I:1
Pobiera dane wejściowe, powiela je i przesuwa 1. Ustawia stos z licznikiem, mnożnikiem i wynikiem.*s;
Mnoży TOS, zamienia wynik z poprzednim i usuwa poprzedni.pu
Przynieś licznik do TOS. Zawracanie To była zmiana linii, ale musiała ogolić bajt.|($
Dokonano tego, aby zapisać bajt. Po trafieniu pomija zmniejszenie. odbija, zmniejsza licznik i pomija owijanie bez op wokół kostki.!vqW
Przetestuj licznik. Jeśli naprawdę pominiesz przekierowanie, umieść licznik na BOS, zmień linię z powrotem na mnożnik. W przeciwnym razie przekierowanie.|sO@
jest to sekwencja końcowa przekierowana z licznika testu. Przechodzi obok odbicia poziomego, zamienia TOS przynosząc wynik do TOS, wyjścia i zatrzymania.źródło
R, 22 bajty
czyta
x
ze standardowego.generuje listę
x
kopiix
, a następnie oblicza iloczyn elementów tej listy. W przypadkux=0
, gdyrep
powracanumeric(0)
, co jest numeryczny wektor o długości0
, aleprod
w to 1, więc0^0=1
tym sposobem, który jest zgodny z wbudowanym potęgowania R, więc to całkiem zgrabny.Wypróbuj online!
źródło
język maszynowy x86_64 dla systemu Linux,
14 1110 bajtówAby Spróbuj online! , skompiluj i uruchom następujący program C.
źródło
Rubin,
2018 bajtów-2 bajty, ponieważ specyfikacja uległa zmianie i nie potrzebuję już argumentu wykładniczego.
Wypróbuj online!
źródło
Ułożone , 10 bajtów
Wypróbuj online!
Dwuskładnikowe potęgowanie dla tego samego rozmiaru:
Obie są funkcjami. Powtarza funkcję, która mnoży się
1
przezn
n
czasy.źródło
Scala ,
3226 bajtówWypróbuj online! (Dodano konwersję do długiej w TIO, aby nie przepełniała się n = 10).
źródło
05AB1E , 3 bajty
Wypróbuj online! lub Wypróbuj wszystkie przykłady
źródło
.D
. Pierwszy raz widziałem, jak go wykorzystano.Haskell ,
242321 bajtówWypróbuj online!
źródło
f y=foldr1(*)$y<$[1..y]
jest bajt krótszy.product$y<$[1..y]
Japt , 4 bajty
Wypróbuj online!
Wyjaśnienie
źródło
kod maszynowy x86 (Linux), 18 bajtów
Oczekuje deklaracji C w następujący sposób
extern int XpowX(int)
.Zdemontowane
źródło
Brachylog , 6 bajtów
Wypróbuj online!
Wyjaśnienie
źródło
CJam , 7 bajtów
Wypróbuj online!
Wyjaśnienie
źródło
Perl 6 , 13 bajtów
$_ xx $_
analizuje listę$_
kopii$_
($_
będącą argumentem funkcji anonimowej), a następnie[*]
zmniejsza tę listę przez pomnożenie.źródło
CJam , 6 bajtów
Wypróbuj online!
źródło
Clojure, 22
:)
źródło
Röda, 17 bytes
Try it online!
It's an anonymous function that takes it's input from the stream.
Explanation:
źródło
dc,
24232622 bytesThis is my first attempt writing a recursive macro in dc. I am sure it is a sub-optimal solution which can be improved a lot.
Try it online!
Edit: Thanks eush77! -4 bytes.
źródło
x=1
.lr
sequences at the end with twod
s at the beginning.x
copies ofx
on the stack (and1
of course), andx
multiplications thereafter. So the ending can just be plaindsFxp
.lr
wouldn't work here. It's my first time golfing in a stack-based language, so it feels very unusual. Thanks for your help!Batch, 58 bytes
Only works for single-digit inputs due to 32-bit arithmetic.
źródło
brainf*ck, 148 bytes
Try it online!
No built-ins ;)
How it works
In a nutshell, this works by multiplying
x
(the input) by itselfx
times. (a.k.a. iterating iterated addition). The net result is x^x.I/O
The program takes a single ASCII input, and processes it as it's ASCII index minus 48. The minus 48 is to normalize inputs of actual numbers (
4
becomes52
->52-48
->4
). To input a number higher than 9, use the next corrosponging ASCII character (:
->58-48
->10
). The program ouputs in a similar fashion.Test I/O
Since there are no printable ASCII characters after an input of 3, it can only print numbers in theory. Though, you can check all inputs do in fact work on visualizers such as this.
źródło
MATLAB/Octave, 23 bytes
źródło
Python, 32 bytes
Try it online!
źródło
f=
part, so you can shorten your submission to 30 bytes.f=
part does need to be counted, because it's recursive, so it relies upon the function being namedf
in order to work properlyCommon Lisp,
59 4240 bytesTry it online!
źródło