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 el último caso de prueba. ¿Podría también imprimir[6 3 2 1]
,[1.0 2.0 3.0 6.0]
o[6.0 3.0 2.0 1.0]
?Respuestas:
Pyth, 10 bytes
Demostración
Para cada potencia, genera la lista de todos los números hasta la entrada llevada a esa potencia, y luego verifica si la entrada está en la lista.
fuente
Haskell, 38
Muy claro. La comprensión de la lista encuentra valores
b
para los quen
aparece la entrada[1^b, 2^b, ..., n^b]
. Basta comprobarb
en el rango[1..n]
.fuente
Pitón 2, 53
Brute fuerza todas las combinaciones de bases en exponentes en [0, n-1] y bases en [1, n].
fuente
Python 3, 56 bytes
Esto es realmente torpe. Comprueba si cada
i
raíz potencial -th da un número entero redondeándolo, tomándole el poder dei
, y verificando que sea igual al original.Verificar directamente que la raíz es un número entero es complicado porque los puntos flotantes dan cosas como
64**(1/3) == 3.9999999999999996
. Redondeándolo a un entero, verifiquemos si tomar la potencia vuelve al valor original. Gracias a ypercube por sugerir esto, ahorrando 1 byte.Feersum tiene una solución más corta y más inteligente . Todos ustedes realmente deberían votar eso.
fuente
round(n**(1/i),0)**i==n
?0
ser la precisión predeterminada para la ronda, esto ahorra un byte.Pyth,
111012 bytesComprueba todas las combinaciones posibles de poderes. Muy lento.
fuente
CJam, 23 bytes
Esto funciona tomando la factorización prima de n y calculando la intersección de los divisores de todos los exponentes.
Es un poco más largo que mi otra solución , pero esperar que funcione (y terminar al instante) para todos los enteros entre 2 y 2 63 - 1 .
Pruébelo en línea en el intérprete de CJam .
Cómo funciona
fuente
APL, 17 bytes
Mi primer programa APL; Se agradecen las sugerencias de golf.
fuente
pow(pow(7,3),1./3))
me meto6.99999999999999
en C o Python. Esto se debe a que se pierde precisión al calcular 1 / A.JavaScript (ES5),
73 bytes81 bytes79 bytes75 bytesComprueba si la potencia entera más cercana de la posible raíz es igual
n
.~~(.5+...)
es equivalente aMath.round(...)
para expresiones dentro del rango entero (0 a 2 ^ 31 - 1).Editar: se usó la
&&
lógica diferida en lugar deif
reducir 2 bytes y se agregó un mensaje de entrada ya que la pregunta agregó una aclaración. Anteriormente asumía que la entrada estaba almacenadan
.Edición 2: se modificó
~~(.5+...)
para.5+...|0
guardar dos bytes evitando la agrupación.Edición 3: eliminada
var
para guardar 4 bytes. En modo no estricto, esto es aceptable.fuente
p=Math.pow
en el guardado rápido 1 bytevar
se requierefor
lugar deprompt
...Brachylog , 8 bytes
Pruébalo en línea!
Toma la entrada a través de su variable de entrada y genera cada potencia a través de su variable de salida, en orden ascendente según sea necesario, a diferencia de la solución anterior
≥ℕ≜^↙.?∧
que tiene exactamente la misma longitud.No tengo ninguna justificación rigurosa para afirmar que cada exponente no sea mayor que la entrada, pero para que el programa realmente termine, necesita ser limitado.
ḋḅlᵛf
es una solución mucho más corta (sin generador) para todos los casos de prueba dados, pero falla si la entrada no es una potencia de un producto de primos distintos. (Ahora que lo pienso, ya que todos los casos de prueba son poderes de primos,ḋlf
también funciona ...) Lo mejor que se me ocurrió para salvar la ideaḋḅlᵐḋˢ⊇ᵛ×f
, sale a 10 bytes.fuente
Jalea , 6 bytes
Pruébalo en línea!
fuente
05AB1E , 3 bytes
Pruébalo en línea!
Respuesta de Port of Unrelated String's Jelly .
fuente
JavaScript ES7, 66 bytes
Aprovecha las comprensiones experimentales de matrices. Solo funciona en Firefox.
Posible golf. Probablemente intentaré reducir las expresiones un poco más y espero encontrar una alternativa a la
Array(n).keys()
sintaxis larga .Podría ser más corto, pero JavaScript tiene una precisión de coma flotante horrible.
fuente
CJam, 20 bytes
Para la entrada n , esto calcula el registro b n para todo b menor o igual a n y mantiene los resultados que son enteros.
Esto debería funcionar para todos los enteros entre 2 y 9,999 . El tiempo de ejecución es aproximadamente O (n) .
Pruébelo en línea en el intérprete de CJam .
Cómo funciona
fuente
Rubí, 50
Imprime a la pantalla.
Rubí, 57
Devuelve una matriz.
En programa de prueba:
Calcula cada raíz y las prueba en el módulo 1 para ver si el resto es menor que 1e-8. Debido a la precisión limitada, se calcula que algunas raíces enteras válidas tienen la forma 0.9999 ..., de ahí la necesidad de agregarles 1e-9.
Se calcula hasta la enésima raíz de n, que es una exageración total, pero parecía la forma más corta de escribir un bucle no infinito.
fuente
Stax , 6 bytes
Ejecutar y depurarlo
Todos los divisores de la mcd de exponentes en la factorización prima. Es lo mismo que el algoritmo de gelatina.
fuente
DC, 104 bytes
La entrada se toma del terminal, la salida se imprime y también en la pila.
Porque esto usa el? operador, necesita usar
dc -e "<solution>"
odc <file with solution in it>
.Nadie ve mis respuestas, y mucho menos las vota, pero realmente disfruto resolviendo problemas en DC. Es la solución menos eficiente en este hilo hasta ahora, pero pensé que lo publicaría de todos modos.
cosas de arranque
Macro para elevar una base a todas las potencias hasta que el resultado sea mayor que el objetivo o igual al objetivo
Macro para guardar un valor de exponente válido como se encuentra en las macros de exponente anteriores en otra pila
Macro para ejecutar la macro 2x anterior (macro c) a través de todas las bases desde 2 hasta nuestro número objetivo
Macro para imprimir los valores de la pila f
fuente
Ruby , 46 bytes
Pruébalo en línea!
fuente
C # (compilador interactivo de Visual C #) , 93 bytes
Pruébalo en línea!
fuente
Japt , 10 bytes
Intentalo
fuente