Tarea: el título lo resume más o menos: eleva un entero x a power x , donde 0<x
.
Restricciones:
- El uso de exponenciación,
exp()
,ln()
, lenguaje y otros relacionados poderes empotrados, comopow()
,x^x
,x**x
está prohibido. - Puede suponer que el entero dado se ajusta a los límites del lenguaje de programación que elija.
Casos de prueba:
Input | Output
---------------
2 | 4
3 | 27
5 | 3125
6 | 46656
10 | 10000000000
Este es el código de golf , por lo que gana el programa más corto en bytes.
code-golf
math
arithmetic
Lanudo
fuente
fuente
0
y que se especificará la salida esperada (0
o1
, o bien). Finalmente, tener que manejar enteros negativos sería una buena adición al desafío.1
para0^0
. Sin embargo,Foundation
+ Swift devuelve 00
y en su lugar especifiqué eso0<x
en la entrada. También eliminé la restricción de que el código no debería arrojar errores; Eso debería ser evidente. Siéntase libre de retroceder si es necesario.Respuestas:
APL (Dyalog) , 4 bytes
Para x x , toma x como argumento izquierdo yx como argumento derecho.
¡Pruebe todos los casos en línea!
×/
producto de⍴⍨
arg copias argY aquí hay uno que también maneja enteros negativos:
¡Prueba todos los casos!
×/
el producto de|
valor absoluto⍴
r epetitions de|
el valor absoluto*
al poder de×
el signumLa primitiva de potencia incorporada es:
fuente
Python , 25 bytes
Pruébalo en línea!
fuente
Mathematica, 16 bytes
Tengo dos soluciones en este recuento de bytes:
Aquí,
#~Table~#
crea una lista den
copias den
. Luego, laList
cabeza se reemplaza por la1##&
que multiplica todos sus argumentos.Esto simplemente almacena la entrada en
n
y se multiplica luego1
porn
,n
veces.fuente
#~Product~{#}&
JavaScript (ES6),
33282524 bytesIntentalo
Historia
25 bytes
28 bytes
33 bytes
fuente
Puro bash, 43
Pruébalo en línea .
No estoy seguro de si esto está doblando demasiado las reglas: no estoy usando ninguno de los componentes prohibidos enumerados, pero estoy usando la conversión de base.
printf 1%0$1d
produce a1
seguido de n0
s$[b#a]
es una expansión aritmética para tratara
como unb
número base , que da el resultado requerido. Lamentablemente, base <2 no funciona, por lo que los?:
bits adicionales manejan la entrada n = 1.La entrada máxima es 15, porque bash usa enteros con signo de 64 bits (hasta 2 31 -1).
fuente
Alice , 13 bytes
Pruébalo en línea!
Explicación
Este es un marco para programas que leen y escriben enteros decimales y operan completamente en modo Cardinal (por lo tanto, programas para la mayoría de los problemas aritméticos).
fuente
ML estándar , 42 bytes
Pruébalo en línea!
Explicación:
fuente
Jalea , 3 bytes
Pruébalo en línea!
¿Cómo?
fuente
F7 88 50
funciona según lo previsto.Cubix , 19 bytes
Pruébalo en línea!
Paso a paso
Se expande sobre un cubo con longitud lateral 2
I:1
Toma la entrada, la duplica y empuja 1. Esto configura la pila con un contador, multiplicador y resultado.*s;
Multiplica el TOS, intercambia el resultado con anterior y elimina el anterior.pu
Traiga el artículo de mostrador a los TOS. Tu turno. Esto solía ser un cambio de carril, pero necesitaba afeitarse un byte.|($
Esto se hizo para guardar un byte. Cuando se golpea se salta el decremento. refleja, disminuye el contador y omite la operación no operativa alrededor del cubo.!vqW
Prueba el contador. Si la verdad se saltea la redirección, coloca el contador en BOS, cambia el carril nuevamente al multiplicador. De lo contrario redirigir.|sO@
Esta es la secuencia final redirigida desde la prueba de contador. Pasa el reflejo horizontal, intercambia los TOS y trae el resultado a los TOS, sale y se detiene.fuente
R, 22 bytes
lee
x
de stdin.genera una lista de
x
copias dex
, luego calcula el producto de los elementos de esa lista. Cuandox=0
, losrep
retornosnumeric(0)
, que es un vector numérico de longitud0
, pero elprod
de eso es 1, entonces0^0=1
por este método, que es consistente con la exponenciación incorporada de R, es bastante claro.Pruébalo en línea!
fuente
Lenguaje de máquina x86_64 para Linux,
14 1110 bytesPara probarlo en línea! , compila y ejecuta el siguiente programa en C.
fuente
Ruby,
2018 bytes-2 bytes porque la especificación cambió y ya no necesito un argumento exponente.
Pruébalo en línea!
fuente
Apilado , 10 bytes
Pruébalo en línea!
Exponenciación de dos argumentos para el mismo tamaño:
Ambas son funciones. Repite una función que se multiplica
1
porn
n
tiempos.fuente
Scala ,
3226 bytesPruébalo en línea! (Se agregó la conversión a largo en el TIO para que no se desborde en n = 10).
fuente
05AB1E , 3 bytes
Pruébalo en línea! o Pruebe todos los ejemplos
fuente
.D
. La primera vez que lo veo usado.Haskell,
242321 bytesTry it online!
fuente
f y=foldr1(*)$y<$[1..y]
is a byte shorter.product$y<$[1..y]
Japt, 4 bytes
Try it online!
Explanation
fuente
x86 machine code (Linux), 18 bytes
It expects a C declaration as follows
extern int XpowX(int)
.Disassembled
fuente
Brachylog, 6 bytes
Try it online!
Explanation
fuente
CJam, 7 bytes
Try it online!
Explanation
fuente
Perl 6, 13 bytes
$_ xx $_
evaluates to a list of$_
copies of$_
($_
being the argument to the anonymous function), and then[*]
reduces that list with multiplication.fuente
CJam, 6 bytes
Try it online!
fuente
Clojure, 22
:)
fuente
Röda, 17 bytes
Try it online!
It's an anonymous function that takes it's input from the stream.
Explanation:
fuente
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.
fuente
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.
fuente
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.
fuente
MATLAB/Octave, 23 bytes
fuente
Python, 32 bytes
Try it online!
fuente
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!
fuente