Dado un número natural n
, devuelve el númeron
-th Leyland .
Número de Leyland
Los números de Leyland son enteros positivos k
de la forma
k = x^y + y^x
Donde x,y
son enteros estrictamente mayores que 1.
Se enumeran en orden ascendente.
EDITAR: @DigitalTrauma sugirió que incluya la siguiente "definición":
Imagine que arrojamos
x^y+y^x
una bolsa para todos los valores posibles dex
yy
, y evitamos arrojar duplicados. Luego clasificamos esa bolsa. La bolsa ordenada es nuestra secuencia.
Detalles
Puede usar indexación basada en 0 o 1, lo que más le convenga.
Su programa debe poder generar al menos todos los números de Leyland menores que el máximo de enteros de 32 bits con signo. (El último número de Leyland por debajo de este límite es 1996813914
, en el índice 82
).
Casos de prueba
Los primeros términos son los siguientes:
8, 17, 32, 54, 57, 100, 145, 177, 320, 368, 512, 593, 945, 1124
A076980 en OEIS, excepto la primera entrada. Tenga en cuenta que debido a esa primera entrada adicional, los índices en OEIS se desplazan en uno.
Se puede encontrar más en el archivo b de OEIS
They are enumerated in ascending order
No estoy realmente seguro de lo que esto significa. ¿Podría proporcionar una lista de x e y?8
es antes17
, no al revés.x^y+y^x
una bolsa para todos los valores posibles dex
yy
, y evitamos que se doblen por duplicado. Luego clasificamos esa bolsa. La bolsa ordenada es nuestra secuencia.Respuestas:
MATL ,
161513 bytesLa salida está basada en 1.
Pruébalo en línea!
Explicación
fuente
unique
ordena los elementos. ¿No es también en MATL?'stable'
indicadorunique
por defecto, ya que ese es el uso más típico.t!^
(donde^
puede ser reemplazado por+
,-
o cualquier número de operadores) motivo mucho. ¿Qué pasaría si&
hiciéramos una entrada de 1 para algunos de los que para un vector tiene ese comportamiento?Haskell, 52 bytes
Realmente ineficiente. Prueba que cada número natural sea un número de Leyland, haciendo una lista infinita de los que lo son. Dada una entrada, toma ese elemento de índice de la lista. Utiliza que solo se
x,y
deben verificar hasta 31 para enteros de 32 bits.Misma longitud con
filter
:fuente
Java 8,
225221219216206204193192 bytes0 indexado
-2 bytes (221 → 219) guardados reemplazando
1996813915
con(1L<<31)
gracias a @LeakyNun .-3 bytes (219 → 216) gracias a @LeakyNun y @Frozn con algo que me olvidé.
-10 bytes (216 → 206) cambiando Java 7 a 8.
-2 bytes (206 → 204) reemplazando
ArrayList
conVector
gracias a @TAsk .-11 bytes (204 → 193) eliminando
s<(1L<<31)&
, ya que la pregunta establece " al menos todos los números de Leyland menores que el máximo de enteros de 32 bits con signo ".-1 byte (193 → 192) cambiando
Vector
aStack
.Explicación:
Pruébalo aquí
fuente
2^31-1
(es decir, firmado int), ¿no puede cambiar un montón de loslong
elencos?import java.util.*;long c(int n){List<Long>t=new ArrayList();for(int i=2,j;i<25;i++)for(j=2;j<25;j++){long s=(long)(Math.pow(i,j)+Math.pow(j,i));if(s<(1L<<31)&!t.contains(s))t.add(s);}Collections.sort(t);return t.get(n);}
for (int i = 1, j; ++i < 30;)
yfor (j = 1; ++j < 30;)
Pyth, 17 bytes
0 indexado.
Pruébalo en línea! (Por favor, manténgalo a 100).
Cómo funciona
Versión más lenta
1 indexado.
Pruébalo en línea! (Por favor, manténgalo en 3.)
fuente
MATLAB, 58 bytes
1 indexado
unique
en MATLAB se aplana y ordena la matriz.Gracias por la ayuda a @FryAmTheEggman y @flawr .
fuente
05AB1E,
2019 bytes0 indexado
Explicado
Pruébalo en línea
Guardado 1 byte gracias a @Adnan
fuente
ÝÌ
es la abreviatura de>L>
.ê
está ordenado_uniquificado, si eso existía cuando se le preguntó.Mathematica,
604840 bytesUses one-based indexing.
Union
is used by applying it between each row of the 2D matrix created by theArray
. There,Union
will flatten the 2D matrix into a list while also removing any duplicates and placing the values in sorted order.Saved 8 bytes thanks to @LLlAMnYP.
Usage
fuente
{#+1,#+1}
isn't necessary, can be left as{#,#}
and{2,2}
can be replaced with simply2
.Array
would expand the third argument.Jelly, 14 bytes
2 bytes thanks to Dennis.
Try it online! (Takes ~ 1s for 82 for me) (O(n^2) time)
Original 16-byte answer
Try it online! (Takes < 1s for me) (Constant time)
fuente
R‘*€¹$+Z$FṢQị@
es más rápido, más corto y no tiene límite superior artificial.Bash + utilidades GNU, 63
Indexación basada en 1. Parece que este es más o menos el mismo enfoque que la respuesta de @ TimmyD . En lugar de bucles anidados, la expansión de llaves bash se usa para generar expresiones aritméticas que se canalizan
bc
para su evaluación.Ideona
fuente
Perl 6 ,
60 5856 bytesPrueba:
Explicación:
fuente
sort [
y] 2..31
?sort([...
a un acceso de matriz de un términosort[...
. Algo similar sucede con el otro espacio.F #,
117, 104Welp, es más corto que mi respuesta de C # al menos.
Ahorró 13 bytes gracias a Reed Copsey en la sala de chat F #.
fuente
PowerShell v2 +,
847368 bytesAhorró 11 bytes gracias a @Neil ... ahorró 5 bytes adicionales al reorganizar cómo
iex
se evalúa la expresión.Método ingenuo, simplemente hacemos doble bucle desde
x=2..30
yy=2..x
. Cada ciclo que ponemosx^y + y^x
en la tubería. El30
fue elegido experimentalmente para garantizar que cubrimos todos los casos menos que2^31-1
;-). Los canalizamosSort-Object
para ordenarles que asciendan. La salida está indexada a cero en función de la entrada$args[0]
.Sí, aquí se generan muchas entradas extrañas; este algoritmo en realidad genera 435 números de Leyland, pero
81
no se garantiza que las cosas por encima del índice sean precisas y estén en orden (puede haber algunas que se omitan).Ejemplos
fuente
R,
5854 bytes1 indexado. Se eliminaron 4 bytes al usar en
pryr::r
lugar defunction
.Explicación
Para todos los números del 2 al 99 y del 2 al 9,
Aplica la función
x^y+y^x
. Esto genera una matriz de 98x8.Ordene esta matriz (coercitándola a un vector):
Eliminar todos los valores no únicos:
Lea
n
desde stdin y obtenga eln
número th de la lista:fuente
JavaScript (Firefox 42-57), 94 bytes
Necesita Firefox 42 porque usa tanto la comprensión de matriz como la exponenciación (
[for(..of..)]
y**
).fuente
[for...of]
llegado a ES7.for(..of..)
no[for(..of..)]
.Haskell,
9998969594 bytesProbablemente se supere fácilmente, pero fue lo mejor que pude encontrar.
fuente
toInteger
en mi solución, tendremos un desbordamiento usandoint
, porque iteramos mucho más alto (a enn+3
lugar den
) cuando trabajamos con la lista. De lo contrario, tendríamos que codificar los primeros cuatro términos más o menos. ¿Qué hace exactamentetoEnum
en su solución?f=(sort(nub[x^y+y^x|x<-[2..99],y<-[2..x]])!!)
.toEnum
convierte un Int en un Enum, e Integer es una instancia de la clase Enum, por lo que toEnum aquí convierte n + 3 en un Integer.Python 3,
7669 bytes0 indexado.
https://repl.it/C2SA
fuente
r=range(2,32)
lambda n:sorted(…)[n]
C #,
141, 127 bytes.Oh c #, eres un lenguaje tan largo.
Esta es una lambda que debe asignarse para
delegate double del(int n);
ejecutarse, como tal:fuente
Enumerable.Range(
en una variable / función / iterador / lo que sea con un nombre más corto para reuisng?SQL (PostgreSQL 9.4), 171 bytes
Hecho como una declaración preparada. Genere un par de series 2 - 99, unirlas y hacer la ecuación. Densamente clasifique los resultados para indexarlos y seleccione el primer resultado que tenga el rango de la entrada entera.
Ejecutado de la siguiente manera
Esto terminó corriendo mucho más rápido de lo que esperaba
fuente
J, 29 bytes
Utiliza indexación basada en uno. Conversión de mi solución de Mathematica .
El verdadero secreto aquí es que tengo
:(^+^~)
de mi lado.Uso
Explicación
Mas serio,
fuente
Swift 3, 138 bytes
Código sin golf
Pruébalo aquí
fuente
Axioma 148 bytes
algun ejemplo
Tipo: Lista Entero
fuente
Perl 5 , 70 + 1 (-p) = 71 bytes
Pruébalo en línea!
fuente
Ruby ,
6258 bytesPruébalo en línea!
fuente
J,
3831 bytes0 indexado.
Uso
fuente
Java,
200197 bytes0 indexado
¡Parece que las transmisiones de Java realmente pueden guardar bytes! ¡¿Quien lo hubiera pensado?!
Sin golf:
Ediciones:
long[]
y paréntesis eliminado alrededorn
.fuente
Python 3, 129-> 116 bytes
Sé que hay una respuesta más corta de Python 3, pero aún quería contribuir con mi solución.
Esta fue la mejor manera en la que pude pensar para pasar por todos los valores de xy todos los valores de y. Si alguien puede jugar golf mi enfoque sería apreciado
fuente
t
un enset
lugar de una lista y reemplace las últimasfor
declaraciones con un simplet.add(q)
.APL (Dyalog) , 27 bytes
Pruébalo en línea!
fuente
Japt
-g
, 15 bytesIntentalo
fuente