function getURL(e){return"https://api.stackexchange.com/2.2/questions/"+QUESTION_ID+"/answers?page="+e+"&pagesize=100&order=desc&sort=creation&site=codegolf&filter="+ANSWER_FILTER}function getAnswers(){$.ajax({url:getURL(answer_page++),method:"get",dataType:"jsonp",crossDomain:!0,success:function(e){answers.push.apply(answers,e.items),answers_hash=[],answer_ids=[],e.items.forEach(function(e){var s=+e.share_link.match(/\d+/);answer_ids.push(s),answers_hash[s]=e}),useData(answers)}})}function getOwnerName(e){return e.owner.display_name}function useData(e){var s=[];e.forEach(function(e){var a=e.body.replace(/<s>.*<\/s>/,"").replace(/<strike>.*<\/strike>/,"");console.log(a),VALID_HEAD.test(a)&&s.push({user:getOwnerName(e),language:a.match(VALID_HEAD)[1],score:+a.match(VALID_HEAD)[2],link:e.share_link})}),s.sort(function(e,s){var a=e.score,r=s.score;return a-r}),s.forEach(function(e,s){var a=$("#score-template").html();a=a.replace("{{RANK}}",s+1+"").replace("{{NAME}}",e.user).replace("{{LANGUAGE}}",e.language).replace("{{SCORE}}",e.score),a=$(a),$("#scores").append(a)})}var QUESTION_ID=58047,ANSWER_FILTER="!t)IWYnsLAZle2tQ3KqrVveCRJfxcRLe",answers=[],answer_ids,answers_hash,answer_page=1;getAnswers();var VALID_HEAD=/<h\d>([^\n,]*)[, ]*(\d+).*<\/h\d>/;
body{text-align:left!important}table thead{font-weight:700}table td{padding:10px 0 0 30px}#scores-cont{padding:10px;width:600px}#scores tr td:first-of-type{padding-left:0}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script><link rel="stylesheet" type="text/css" href="//cdn.sstatic.net/codegolf/all.css?v=83c949450c8b"><div id="scores-cont"><h2>Scores</h2><table class="score-table"><thead> <tr><td></td><td>User</td><td>Language</td><td>Score</td></tr></thead> <tbody id="scores"></tbody></table></div><table style="display: none"> <tbody id="score-template"><tr><td>{{RANK}}</td><td>{{NAME}}</td><td>{{LANGUAGE}}</td><td>{{SCORE}}</td></tr></tbody></table>
[1 2 3 6]
para o último caso de teste. Poderia também imprimir[6 3 2 1]
,[1.0 2.0 3.0 6.0]
ou[6.0 3.0 2.0 1.0]
?Respostas:
Pitão, 10 bytes
Demonstração
Para cada energia, gera a lista de todos os números até a entrada recebida para essa energia e verifica se a entrada está na lista.
fonte
Haskell, 38
Bem direto. A compreensão da lista localiza valores
b
para os quais a entradan
aparece entre[1^b, 2^b, ..., n^b]
. Basta verificarb
o intervalo[1..n]
.fonte
Python 2, 53
Brute força todas as combinações de bases em expoentes em [0, n-1] e bases em [1, n].
fonte
Python 3, 56 bytes
Isso é realmente desajeitado. Testa se cada potencial
i
-ésima raiz fornece um número inteiro arredondando-o, obtendo o poder dei
e verificando se é igual ao original.A verificação direta de que a raiz é um número inteiro é complicada porque pontos flutuantes fornecem coisas do tipo
64**(1/3) == 3.9999999999999996
. Arredondando-o para um número inteiro, vamos verificar se a potência retorna ao valor original. Obrigado ao ypercube por sugerir isso, economizando 1 byte.feersum tem uma solução mais curta e inteligente . Vocês todos deveriam realmente votar isso.
fonte
round(n**(1/i),0)**i==n
?0
ser a precisão padrão da rodada, economiza um byte.Pitão,
111012 bytesVerifica todas as combinações possíveis de poderes. Muito devagar.
fonte
CJam, 23 bytes
Isso funciona tomando a fatoração primária de n e computando a interseção dos divisores de todos os expoentes.
É um pouco mais longo que minha outra solução , mas espero que funcione (e termine instantaneamente) para todos os números inteiros entre 2 e 2 63 - 1 .
Experimente on-line no intérprete CJam .
Como funciona
fonte
APL, 17 bytes
Meu primeiro programa de APL; sugestões de golfe são apreciadas.
fonte
pow(pow(7,3),1./3))
eu entro6.99999999999999
em C ou Python. Isso ocorre porque a precisão é perdida ao calcular 1 / A.JavaScript (ES5),
73 bytes81 bytes79 bytes75 bytesVerifica se a potência inteira mais próxima da raiz possível é igual
n
.~~(.5+...)
é equivalente aMath.round(...)
para expressões dentro do intervalo inteiro (0 a 2 ^ 31 - 1).Editar: Usava
&&
lógica lenta em vez deif
raspar 2 bytes e adicionou um prompt de entrada, pois a pergunta adicionava um esclarecimento. Anteriormente, assumindo que a entrada foi armazenadan
.Editar 2: Alterado
~~(.5+...)
para.5+...|0
salvar dois bytes, evitando o agrupamento.Editar 3: Removido
var
para salvar 4 bytes. No modo não estrito, isso é aceitável.fonte
p=Math.pow
para salvarvar
é necessáriafor
, em vez deprompt
..Braquilog , 8 bytes
Experimente online!
Toma entrada através de sua variável de entrada e gera cada potência através de sua variável de saída, em ordem crescente, conforme necessário, ao contrário da solução antiga,
≥ℕ≜^↙.?∧
que por acaso tem exatamente o mesmo comprimento.Não tenho justificativa rigorosa para afirmar que todo expoente não é maior que a entrada, mas para que o programa realmente termine, ele precisa ser limitado.
ḋḅlᵛf
é uma solução muito mais curta (sem gerador) para todos os casos de teste, mas falha se a entrada não for uma potência de um produto de primos distintos. (Pense bem, já que todos os casos de teste são poderes de números primos,ḋlf
também funciona ...) O melhor que eu vim para salvar a ideiaḋḅlᵐḋˢ⊇ᵛ×f
, sai em 10 bytes.fonte
Gelatina , 6 bytes
Experimente online!
fonte
05AB1E , 3 bytes
Experimente online!
Resposta do porto da geléia de cordas não relacionadas .
fonte
JavaScript ES7, 66 bytes
Aproveita as compreensões experimentais da matriz. Só funciona no Firefox.
Possível golfe. Provavelmente tentarei espremer as expressões um pouco mais e esperançosamente encontrar uma alternativa para a longa
Array(n).keys()
sintaxe.Pode ser mais curto, mas o JavaScript tem uma precisão horrível de ponto flutuante.
fonte
CJam, 20 bytes
Para a entrada n , isso calcula o log b n para todos os b menores ou iguais a n e mantém os resultados inteiros.
Isso deve funcionar para todos os números inteiros entre 2 e 9.999 . O tempo de execução é aproximadamente O (n) .
Experimente on-line no intérprete CJam .
Como funciona
fonte
Ruby, 50
Imprime na tela.
Ruby, 57
Retorna uma matriz.
No programa de teste:
Calcula cada raiz e testa o módulo 1 para ver se o restante é menor que 1e-8. Devido à precisão limitada, algumas raízes inteiras válidas são calculadas com o formato 0,9999 .., daí a necessidade de adicionar 1e-9 a elas.
Até a enésima enésima raiz de n é calculada, que é um excedente total, mas parecia a maneira mais curta de escrever um loop não infinito.
fonte
Stax , 6 bytes
Execute e depure
Todos os divisores do MDC de expoentes na fatoração primária. É o mesmo que o algoritmo de geléia.
fonte
DC, 104 bytes
A entrada é retirada do terminal, a saída é impressa e também na pilha.
Porque isso usa o? operador, você precisa usar
dc -e "<solution>"
oudc <file with solution in it>
.Ninguém nunca vê minhas respostas, muito menos vote nelas, mas eu realmente gosto de resolver problemas em Washington. Até agora, é a solução menos eficiente neste segmento, mas pensei em publicá-lo de qualquer maneira.
coisas iniciais
Macro para elevar uma base a todos os poderes até que o resultado seja maior que o alvo ou igual ao alvo
Macro para salvar um valor de expoente válido conforme encontrado nas macros de expoente acima em outra pilha
Macro para executar a macro 2x acima (macro c) em todas as bases, de 2 ao número alvo
Macro para imprimir os valores da pilha f
fonte
Ruby , 46 bytes
Experimente online!
fonte
C # (compilador interativo do Visual C #) , 93 bytes
Experimente online!
fonte
Japt , 10 bytes
Tente
fonte