A tetração, representada como
a^^b
, é repetida exponenciação. Por exemplo,2^^3
é2^2^2
, o que é 16.
Dados dois números um e b , de impressão a^^b
.
Casos de teste
1 2 -> 1
2 2 -> 4
5 2 -> 3125
3 3 -> 7625597484987
etc.
Notação científica é aceitável.
Lembre-se de que isso é código-golfe , portanto o código com o menor número de bytes vence.
3 3 -> 7625597484987
3^3^3
significa automaticamente3^(3^(3))
. Veja en.wikipedia.org/wiki/Order_of_operations , onde diz "Expoentes empilhados são aplicados de cima para baixo, ou seja, da direita para a esquerda".Respostas:
Dyalog APL, 3 bytes
TryAPL.
Explicação
fonte
J,
54 bytesEsta é literalmente a definição de tetração.
Uso
Explicação
fonte
2 ^ 2 ^ 2
é avaliada como2 ^ (2 ^ 2)
e assim por dianteHaskell, 19 bytes
Repete o exponenciamento começando em
1
para produzir a lista e[1,a,a^a,a^a^a,...]
, em seguida, pegue ob
'th th elemento.Mesmo comprimento diretamente:
O ponto livre é mais longo:
fonte
Mathematica, 16 bytes
Explicação
Faça b cópias de a.
Exponenciação.
fonte
Python, 30 bytes
Usa a definição recursiva.
fonte
Python, 33 bytes
Isso avalia uma função sem nome, que leva a representação de seqüência de caracteres de um número e um número. Por exemplo:
Se misturar formatos de entrada como esse não for contabilizado, também haverá esta versão de 38 bytes:
fonte
Gelatina , 4 bytes
Experimente online! ou verifique todos os casos de teste .
Como funciona
fonte
Perl, 19 bytes
Inclui +1 para
-p
Dê números em linhas separadas no STDIN
tetration.pl
fonte
R, 39 bytes
Função recursiva:
fonte
Elemento , 11 bytes
Experimente online!
Isso é apenas exponenciação "direta" em um loop.
fonte
JavaScript (ES7), 24 bytes
A versão do ES6 é de 33 bytes:
fonte
f=a=>b=>b?a**f(a,b-1):1
dc,
3529 bytes:Aqui está o meu primeiro programa completo em
dc
.fonte
Perl, 40 bytes
Aceita dois números inteiros como entrada para a função e gera o resultado
fonte
pop
para obter$ARGV[1]
, então use"@ARGV"
para obter$ARGV[0]
. Use emsay
vez deprint
(opção-M5.010
ou-E
é grátis). Mas ainda assim,ARGV
é terrivelmente longo. Um-p
programa quase sempre venceNa verdade , 6 bytes
Experimente online!
A entrada é tomada como
b\na
(\n
é uma nova linha)Explicação:
fonte
CJam , 9 bytes
Experimente online!
Explicação
fonte
PHP, 51 bytes
fonte
Idioma do GameMaker,
5250 bytesfonte
Pitão, 6 bytes
Experimente online.
Explicação
fonte
Tamanho 0.15 ,
1211 bytesExperimente aqui!
Explicação
fonte
Raquete 51 bytes
Ungolfed:
Teste:
Resultado:
fonte
Scala, 45 bytes
Ungolfed:
Crie uma sequência de
a
s comb
elementos e apliquemath.pow
da direita para a esquerda.fonte
TI-Basic, 19 bytes
fonte
Java 7,
7157 bytesUngolfed & código de teste:
Experimente aqui.
Resultado:
fonte
C, 50 bytes
Direto da definição de Tetração .
fonte
05AB1E , 4 bytes
Experimente online!
3 bytes se os argumentos puderem ser trocados:
fonte
a=5, b=2
deve produzir3125
. Não sei em que ordem você está recebendo a entrada, mas, no entanto, coloquei 5 e 2 e obtive o resultado errado.Bash, 50 bytes
(dentro dos limites do tipo de dados inteiro bash)
Golfe
Explicação
Crie expressão com printf, por exemplo, E 2 5:
use a expansão aritmética integrada do bash para calcular o resultado
Teste
fonte
Powershell, 68 bytes
Esta é a mais curta das três abordagens que tentei, no geral, não tão boa assim, tenho 100% de certeza de que há uma abordagem mais curta, mas as poucas coisas que tentei de alguma forma acabaram com um pouco mais de bytes.
Infelizmente, o Powershell não possui um operador
^
ou**
operador embutido , ou seria uma resposta limpa de 32/33 bytes, ou seja,iex (,$args[0]*$args[1]-join"^")
fonte
Axioma 70 bytes
isso menos jogado
fonte
Maravilha , 21 bytes
Usa a abordagem recursiva. Uso:
Solução de bônus, 22 bytes
Uma abordagem levemente não convencional. Uso:
Mais legível:
Assumindo
a^^b
:Gera uma lista infinita de titulado
a
; poisa=2
, essa lista seria algo parecido[2 4 16 65536...]
. Então indexa emb-1
porque Wonder é zero-indexado.fonte
Clojure, 56 bytes
Talvez haja uma maneira mais curta via
apply comp
?fonte