Étant donné un nombre naturel n
, renvoyer le n
-thème nombre de Leyland .
Nombre de Leyland
Les nombres de Leyland sont des entiers positifs k
de la forme
k = x^y + y^x
Où x,y
sont des entiers strictement supérieurs à 1.
Ils sont énumérés par ordre croissant.
EDIT: @DigitalTrauma a suggéré d’inclure la "définition" suivante:
Imaginez que nous jetons
x^y+y^x
dans un sac pour toutes les valeurs possibles dex
ety
, et évitons de jeter des doublons. Ensuite, nous trions ce sac. Le sac trié est notre séquence.
Détails
Vous pouvez utiliser une indexation basée sur 0 ou 1, celle qui vous convient le mieux.
Votre programme doit pouvoir afficher au moins tous les nombres de Leyland inférieurs au nombre maximal d'entiers 32 bits signés. (Le dernier nombre Leyland en dessous de cette limite est 1996813914
, à l'index 82
.)
Cas de test
Les premiers termes sont les suivants:
8, 17, 32, 54, 57, 100, 145, 177, 320, 368, 512, 593, 945, 1124
A076980 dans OEIS, à l'exception de la première entrée. Notez qu'en raison de cette première entrée supplémentaire, les index sur OEIS sont décalés de un.
Plus d'informations peuvent être trouvées dans le fichier OEIS b
They are enumerated in ascending order
Je ne suis pas vraiment sûr de ce que cela signifie. Pourriez-vous fournir une liste de x et y?8
c'est avant17
, pas l'inverse.x^y+y^x
un sac pour toutes les valeurs possibles dex
ety
, et évitons de doubler. Ensuite, nous trions ce sac. Le sac trié est notre séquence.Réponses:
MATL ,
161513 octetsLa sortie est basée sur 1.
Essayez-le en ligne!
Explication
la source
unique
trie les éléments. N'est-ce pas aussi dans MATL?'stable'
indicateurunique
par défaut, car il s'agit de l'utilisation la plus typique.t!^
(où^
peut être remplacé par+
,-
ou un certain nombre d'opérateurs) motif beaucoup. Et si on faisait&
1 entrée moyenne pour certains de ceux où pour un vecteur il a ce comportement?Haskell, 52 octets
Vraiment inefficace. Teste chaque nombre naturel comme étant un nombre de Leyland, en créant une liste infinie de ceux qui le sont. Étant donné une entrée, prend cet élément d'index de la liste. Les utilisations dont seuls
x,y
31 au maximum doivent être vérifiées pour les entiers 32 bits.Même longueur avec
filter
:la source
Java 8,
225221219216206204 204193192 octets0 indexé
-2 octets (221 → 219) sauvegardés en les remplaçant
1996813915
par(1L<<31)
merci à @LeakyNun .-3 octets (219 → 216) grâce à @LeakyNun et @Frozn avec quelque chose que je me suis oubliée ..
-10 octets (216 → 206) en changeant Java 7 en 8.
-2 octets (206 → 204) en les remplaçant
ArrayList
parVector
merci @TAsk .-11 octets (204 → 193) en supprimant
s<(1L<<31)&
, car la question indique " au moins tous les nombres de Leyland inférieurs au maximum d'entiers 32 bits signés ".-1 octet (193 → 192) en remplaçant
Vector
parStack
.Explication:
Essayez-le ici
la source
2^31-1
(c’est- à -dire, signé en int), ne pouvez-vous échanger un tas delong
rôles?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;)
etfor (j = 1; ++j < 30;)
Pyth, 17 octets
0 indexé.
Essayez-le en ligne! (S'il vous plaît, gardez-le à 100.)
Comment ça marche
Version plus lente
1 indexé.
Essayez-le en ligne! (S'il vous plaît, gardez-le à 3.)
la source
MATLAB, 58 octets
1 indexé
unique
dans MATLAB aplatit et trie la matrice.Merci pour l'aide à @FryAmTheEggman et @flawr .
la source
05AB1E,
2019 octets0 indexé
A expliqué
Essayez-le en ligne
Enregistré 1 octet grâce à @Adnan
la source
ÝÌ
c'est court pour>L>
.ê
est Sorted_uniquified, si cela existait quand cela a été demandé.Mathematica,
604840 octetsUtilise une indexation unique.
Union
est utilisé en l’appliquant entre chaque ligne de la matrice 2D créée par le fichierArray
. Là,Union
la matrice 2D sera aplatie dans une liste tout en supprimant les doublons et en plaçant les valeurs dans un ordre trié.Sauvegardé 8 octets grâce à @ LLlAMnYP .
Usage
la source
{#+1,#+1}
n'est pas nécessaire, peut être laissé comme{#,#}
et{2,2}
peut être remplacé par simplement2
.Array
cela élargirait le troisième argument.Gelée, 14 octets
2 octets grâce à Dennis.
Essayez-le en ligne! (Prend ~ 1s pour 82 pour moi) (temps O (n ^ 2))
Réponse originale de 16 octets
Essayez-le en ligne! (Prend <1s pour moi) (temps constant)
la source
R‘*€¹$+Z$FṢQị@
est plus rapide, plus court et n'a pas de limite supérieure artificielle.Utilitaires Bash + GNU, 63
Indexation basée sur 1. Il semble que ce soit à peu près la même approche que celle de @ TimmyD . Au lieu de boucles imbriquées, le développement d’accolades bash est utilisé pour générer des expressions arithmétiques qui sont acheminées à des
bc
fins d’évaluation.Idéone.
la source
Perl 6 ,
60 5856 octetsTester:
Explication:
la source
sort [
et] 2..31
?sort([...
à un accès réseau d'un termesort[...
. Une chose similaire se produit avec l'autre espace.F #,
117, 104Welp, c'est plus court que ma réponse C # au moins.
Enregistrement de 13 octets grâce à Reed Copsey dans le salon F #.
la source
PowerShell v2 +,
847368 octetsEnregistrement de 11 octets grâce à @Neil ... enregistré 5 octets supplémentaires en réorganisant la manière dont l'
iex
expression est évaluée.Méthode naïve, nous doublons simplement la boucle de
x=2..30
ety=2..x
. Chaque boucle que nous mettonsx^y + y^x
sur le pipeline. Le a30
été choisi à titre expérimental pour s'assurer que nous couvrions tous les cas moins que2^31-1
;-). Nous canalisons ceux-ci pourSort-Object
leur ordonner de monter La sortie est indexée à zéro en fonction de l'entrée$args[0]
.Oui, il y a beaucoup d'entrées superflues générées ici - cet algorithme génère en réalité 435 nombres de Leyland - mais les choses au-dessus de l'index
81
ne sont pas garanties d'être exactes et dans l'ordre (certaines peuvent être ignorées).Exemples
la source
R,
5854 octets1 indexé. Éliminé 4 octets en utilisant
pryr::r
au lieu defunction
.Explication
Pour tous les nombres de 2 à 99 et de 2 à 9,
appliquer la fonction
x^y+y^x
. Cela génère une matrice 98x8.Triez cette matrice (en la contraignant à un vecteur):
Supprimez toutes les valeurs non uniques:
Lisez à
n
partir de stdin et récupérez len
e numéro de la liste:la source
JavaScript (Firefox 42-57), 94 octets
Nécessite Firefox 42 car il utilise à la fois la compréhension des tableaux et l’exponentiation (
[for(..of..)]
et**
).la source
[for...of]
à ES7.for(..of..)
pas[for(..of..)]
.Haskell,
9998969594 octetsC’est probablement facile à sur-golfer, mais c’est le meilleur que j’ai pu trouver.
la source
toInteger
dans ma solution, nous aurons un dépassement deint
capacité car nous itérons beaucoup plus haut (aun+3
lieu den
) lorsque nous travaillons avec la liste. Sinon, nous aurions besoin de coder en dur les quatre premiers termes. Que fait exactementtoEnum
dans votre solution?f=(sort(nub[x^y+y^x|x<-[2..99],y<-[2..x]])!!)
.toEnum
convertit un Int en un Enum, et Integer étant une instance de la classe Enum, toEnum convertit ici n + 3 en un Integer.Python 3,
7669 octets0 indexé.
https://repl.it/C2SA
la source
r=range(2,32)
lambda n:sorted(…)[n]
C #,
141, 127 octets.Oh c #, tu es une langue si longue.
C'est un lambda qui doit être assigné
delegate double del(int n);
pour être exécuté, en tant que tel:la source
Enumerable.Range(
dans une variable / fonction / itérateur / quoi que ce soit avec un nom plus court pour reuisng?SQL (PostgreSQL 9.4), 171 octets
Fait comme une déclaration préparée. Générez quelques séries 2 à 99, reliez-les et effectuez l'équation. Classer densément les résultats pour les indexer et sélectionner le premier résultat ayant le rang de l'entrée entière.
Exécuté comme suit
Cela a fini par courir beaucoup plus vite que prévu
la source
J, 29 octets
Utilise une indexation unique. Conversion de ma solution Mathematica .
Le vrai secret ici est que j'ai
:(^+^~)
de mon côté.Usage
Explication
Plus sérieusement,
la source
Rapide 3, 138 octets
Code non-liquéfié
Essayez-le ici
la source
Axiome 148 octets
des exemples
Type: Liste Entier
la source
Perl 5 , 70 + 1 (-p) = 71 octets
Essayez-le en ligne!
la source
Ruby ,
6258 octetsEssayez-le en ligne!
la source
J,
3831 octets0 indexé.
Usage
la source
Java,
200197 octets0 indexé
On dirait que les flux de java peuvent réellement sauver des octets! Qui aurait pensé?!
Ungolfed:
Modifications:
long[]
et parenthèses suppriméesn
.la source
Python 3, 129 -> 116 octets
Je sais qu'il existe une réponse plus courte à python 3, mais je voulais tout de même apporter ma solution.
C’était la meilleure façon de penser de traiter toutes les valeurs de x et toutes les valeurs de y. Si quelqu'un peut jouer au golf mon approche, ce serait apprécié
la source
t
uneset
liste au lieu d’une liste et remplacez les dernièresfor
déclarations par une simplet.add(q)
.APL (Dyalog) , 27 octets
Essayez-le en ligne!
la source
Japt
-g
, 15 octetsL'essayer
la source