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**xestá 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

0y que se especificará la salida esperada (0o1, o bien). Finalmente, tener que manejar enteros negativos sería una buena adición al desafío.1para0^0. Sin embargo,Foundation+ Swift devuelve 00y en su lugar especifiqué eso0<xen 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 dencopias den. Luego, laListcabeza se reemplaza por la1##&que multiplica todos sus argumentos.Esto simplemente almacena la entrada en
ny se multiplica luego1porn,nveces.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$1dproduce a1seguido de n0s$[b#a]es una expansión aritmética para trataracomo unbnú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 50funciona 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:1Toma 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.puTraiga 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.!vqWPrueba 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
xde stdin.genera una lista de
xcopias dex, luego calcula el producto de los elementos de esa lista. Cuandox=0, losrepretornosnumeric(0), que es un vector numérico de longitud0, pero elprodde eso es 1, entonces0^0=1por 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
1pornntiempos.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.lrsequences at the end with twods at the beginning.xcopies ofxon the stack (and1of course), andxmultiplications thereafter. So the ending can just be plaindsFxp.lrwouldn'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 itselfxtimes. (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 (
4becomes52->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 namedfin order to work properlyCommon Lisp,
59 4240 bytesTry it online!
fuente