Tarefa - O título resume muito bem: aumente um número inteiro x ao poder x , onde 0<x
.
Restrições:
- Use de exponenciação,
exp()
,ln()
, língua e quaisquer outros poderes-relacionados built-ins, comopow()
,x^x
,x**x
é proibido. - Você pode supor que o número inteiro ajustado se enquadre nos limites da linguagem de programação de sua escolha.
Casos de teste:
Input | Output
---------------
2 | 4
3 | 27
5 | 3125
6 | 46656
10 | 10000000000
Isso é código-golfe , então o programa mais curto em bytes vence.
code-golf
math
arithmetic
Shaggy
fonte
fonte
0
e que a saída esperada ser especificado (0
ou1
ou qualquer um). Finalmente, ter que lidar com números inteiros negativos seria uma boa adição ao desafio.1
para0^0
. No entanto,Foundation
+ Swift retorna 00
e, em vez disso, especifiquei isso0<x
no lead-in. Também removi a restrição de que o código não deve gerar erros; Isso deve ser feito sem dizer. Sinta-se à vontade para reverter, se necessário.Respostas:
APL (Dyalog) , 4 bytes
Para x x , leva x como argumento esquerda e x como argumento direita.
Experimente todos os casos online!
×/
produto de⍴⍨
arg copia argE aqui está um que também lida com números inteiros negativos:
Experimente todos os casos!
×/
o produto de|
valor absoluto⍴
r epetições de|
o valor absoluto*
ao poder de×
o signumA primitiva Power integrada é:
fonte
Python , 25 bytes
Experimente online!
fonte
Mathematica, 16 bytes
Eu tenho duas soluções nessa contagem de bytes:
Aqui,
#~Table~#
cria uma lista den
cópias den
. Em seguida, aList
cabeça é substituída pela1##&
que multiplica todos os seus argumentos.Isto simplesmente armazena a entrada em
n
e se multiplica então1
porn
,n
vezes.fonte
#~Product~{#}&
JavaScript (ES6),
33282524 bytesTente
História
25 bytes
28 bytes
33 bytes
fonte
Pure bash, 43
Experimente online .
Não tenho certeza se isso está dobrando muito as regras - não estou usando nenhum dos builtins proibidos listados, mas estou usando a conversão de base.
printf 1%0$1d
gera a1
seguido de n0
s$[b#a]
é uma expansão aritmética a ser tratadaa
como umb
número base , que fornece o resultado necessário. Infelizmente, a base <2 não funciona, então o extra?:
bits manipulam a entrada n = 1.A entrada máxima é 15, porque o bash usa números inteiros assinados de 64 bits (até 2 31 -1).
fonte
Alice , 13 bytes
Experimente online!
Explicação
Essa é uma estrutura para programas que lêem e escrevem números inteiros decimais e operam inteiramente no modo Cardinal (portanto, programas para a maioria dos problemas aritméticos).
fonte
ML padrão , 42 bytes
Experimente online!
Explicação:
fonte
Gelatina , 3 bytes
Experimente online!
Quão?
fonte
F7 88 50
funciona conforme o esperado .Cubix , 19 bytes
Experimente online!
Passo a passo
Expande para um cubo com comprimento lateral 2
I:1
Pega a entrada, duplica e pressiona 1. Isso configura a pilha com um contador, multiplicador e resultado.*s;
Multiplica os TOS, troca o resultado por anterior e remove anterior.pu
Traga o item do contador para os Termos de Serviço. Sua vez. Isso costumava ser uma alteração de faixa, mas precisava raspar um byte.|($
Isso foi feito para salvar um byte. Quando atingido, pula o decremento. reflete, diminui o contador e ignora o invólucro sem operação ao redor do cubo.!vqW
Teste o contador. Se realmente pular o redirecionamento, coloque o contador no BOS e mude a faixa novamente para o multiplicador. Caso contrário, redirecione.|sO@
essa é a sequência final redirecionada para o contra-teste. Vai além da reflexão horizontal, troca os TOS, trazendo o resultado para os TOS, saída e parada.fonte
R, 22 bytes
lê
x
de stdin.gera uma lista de
x
cópias dex
e calcula o produto dos elementos dessa lista. Quandox=0
, orep
retornonumeric(0)
, que é um vetor numérico de comprimento0
, mas o valorprod
é 1, é0^0=1
por esse método, que é consistente com a exponenciação interna de R, então é bem legal.Experimente online!
fonte
linguagem de máquina x86_64 para Linux,
14 1110 bytesPara experimentá-lo online! , compile e execute o seguinte programa C.
fonte
Rubi,
2018 bytes-2 bytes porque a especificação mudou e eu não preciso mais de um argumento de expoente.
Experimente online!
fonte
Empilhados , 10 bytes
Experimente online!
Exponenciação de dois argumentos para o mesmo tamanho:
Ambos são funções. Repete uma função que se multiplica
1
porn
n
vezes.fonte
Scala ,
3226 bytesExperimente online! (Adicionada conversão para long no TIO para não exceder em n = 10.)
fonte
05AB1E , 3 bytes
Experimente online! ou Experimente todos os exemplos
fonte
.D
. Primeira vez que o vi usado.Haskell ,
242321 bytesExperimente online!
fonte
f y=foldr1(*)$y<$[1..y]
é um byte mais curto.product$y<$[1..y]
Japt , 4 bytes
Experimente online!
Explicação
fonte
código de máquina x86 (Linux), 18 bytes
Ele espera uma declaração C da seguinte maneira
extern int XpowX(int)
.Desmontado
fonte
Braquilog , 6 bytes
Experimente online!
Explicação
fonte
CJam , 7 bytes
Experimente online!
Explicação
fonte
Perl 6 , 13 bytes
$_ xx $_
avalia para uma lista de$_
cópias de$_
($_
sendo o argumento para a função anônima) e[*]
reduz a lista com multiplicação.fonte
CJam , 6 bytes
Experimente online!
fonte
Clojure, 22
:)
fonte
Röda , 17 bytes
Experimente online!
É uma função anônima que recebe sua entrada do fluxo.
Explicação:
fonte
dc ,
24232622 bytesEsta é minha primeira tentativa de escrever uma macro recursiva em dc. Estou certo de que é uma solução subótima que pode ser melhorada bastante.
Experimente online!
Edit: Obrigado eush77 ! -4 bytes.
fonte
x=1
.lr
sequências no final por doisd
s no início.x
cópias dax
pilha (e, é1
claro), ex
multiplicações a partir de então. Portanto, o final pode ser simplesdsFxp
.lr
não funcionaria aqui. É a minha primeira vez jogando golfe em um idioma baseado em pilha, por isso parece muito incomum. Obrigado pela ajuda!Lote, 58 bytes
Funciona apenas para entradas de um dígito devido à aritmética de 32 bits.
fonte
brainf * ck , 148 bytes
Experimente online!
Sem built-ins;)
Como funciona
Em poucas palavras, isso funciona multiplicando
x
(a entrada) por si própriox
vezes. (aka iterando adição iterada). O resultado líquido é x ^ x.I / O
O programa pega uma única entrada ASCII e a processa como seu índice ASCII menos 48 . O menos 48 é para normalizar as entradas dos números reais (
4
torna52
- se ->52-48
->4
). Para inserir um número maior que 9, use o próximo caractere ASCII de corrosão (:
->58-48
->10
). O programa sai de maneira semelhante.E / S de teste
Como não há caracteres ASCII imprimíveis após uma entrada de 3, ele só pode imprimir números em teoria . No entanto, você pode verificar se todas as entradas funcionam de fato em visualizadores como esse .
fonte
MATLAB / oitava, 23 bytes
fonte
Python, 32 bytes
Experimente online!
fonte
f=
parte, para encurtar o envio para 30 bytes .f=
parte não precisa ser contada, porque é recursiva, por isso depende da função que está sendo chamadof
, a fim de funcionar corretamenteLisp comum ,
59 4240 bytesExperimente online!
fonte