Leyland Numbers

37

É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 kde la forme

k = x^y + y^x

x,ysont 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^xdans un sac pour toutes les valeurs possibles de xet y, 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

flawr
la source
They are enumerated in ascending orderJe ne suis pas vraiment sûr de ce que cela signifie. Pourriez-vous fournir une liste de x et y?
DJMcMayhem
@DrGreenEggsandIronMan Cela signifie que 8c'est avant 17, pas l'inverse.
Leaky Nun
3
@DrGreenEggsandIronMan Imaginez que nous jetons x^y+y^xun sac pour toutes les valeurs possibles de xet y, et évitons de doubler. Ensuite, nous trions ce sac. Le sac trié est notre séquence.
Flawr
10
Très grand sac que vous avez là
Luis Mendo
2
@LuisMendo Ask @ HenriLéonLebesgue et il va vous dire que ce sac n'est fondamentalement rien.
dimanche

Réponses:

11

MATL , 16 15 13 octets

Q:Qt!^t!+uSG)

La sortie est basée sur 1.

Essayez-le en ligne!

Explication

Q    % Take input n. Add 1
:Q   % Range [2 ... n+1]. This is enough to be used as x and y
t!   % Duplicate and transpose
^    % Power, element-wise with broadcast. Gives 2D, square array with x^y
     % for all pairs of x and y
t!   % Duplicate and transpose. Gives square array with y^x
+    % Add, element-wise
u    % Keep unique elements. This linearizes (flattens) the 2D array
S    % Sort
G)   % Get the n-th entry. Implicitly display
Luis Mendo
la source
Dans Matlab uniquetrie les éléments. N'est-ce pas aussi dans MATL?
lundi
1
@pajonk MATL utilise l' 'stable'indicateur uniquepar défaut, car il s'agit de l'utilisation la plus typique.
Suever
@Suever Ok, merci de clarifier.
mardi
1
Je me sens comme nous utilisons le 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?
Suever
@Suever C'est une bonne idée! J'ai fait des recherches avec votre script; voir le chat
Luis Mendo
5

Haskell, 52 octets

r=[2..31]
([k|k<-[0..],elem k[x^y+y^x|x<-r,y<-r]]!!)

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,y31 au maximum doivent être vérifiées pour les entiers 32 bits.

Même longueur avec filter:

r=[2..31]
(filter(`elem`[x^y+y^x|x<-r,y<-r])[0..]!!)
Xnor
la source
Avec le recul, une solution aussi évidente, je l’aime beaucoup!
mardi
5

Java 8, 225 221 219 216 206 204 204 193 192 octets

import java.util.*;n->{List<Long>t=new Stack();for(long i=1,j,s;++i<30;)for(j=1;++j<30;){s=(int)(Math.pow(i,j)+Math.pow(j,i));if(!t.contains(s))t.add(s);}Collections.sort(t);return t.get(n);}

0 indexé

-2 octets (221 → 219) sauvegardés en les remplaçant 1996813915par (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 ArrayListpar Vectormerci @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 Vectorpar Stack.

Explication:

Essayez-le ici

import java.util.*;            // Required import for Stack
n->{                           // Method with integer parameter and long return-type
  List<Long>t=new Stack();     //  Temp list
  for(long i=1,j,s;++i<30;)    //  Loop (1) from 2 to 30 (exclusive)
    for(j=1;++j<30;){          //   Inner loop (2) from 2 to 30 (exclusive)
      s=(int)(                 //    `s` is:
         Math.pow(i,j)+Math.pow(j,i)); // i^j + j^i
      if(!t.contains(s))       //     If `s` is not already part of the List
        t.add(s);              //      Add it to the List
    }                          //   End of inner loop (2)
                               //  End of loop (1) (implicit / single-line body)
  Collections.sort(t);         //  Order the List
  return t.get(n);             //  Return the item at the given index
}                              // End of method
Kevin Cruijssen
la source
2
10/10 pour l'utilisation de java
Leaky Nun
Etant donné que vous n’avez besoin que de supporter jusqu’à 2^31-1(c’est- à -dire, signé en int), ne pouvez-vous échanger un tas de longrôles?
AdmBorkBork
1
Quick golfs: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);}
Leaky Nun
1
La déclaration de la variable for loop.
Leaky Nun
1
Que diriez-vous for (int i = 1, j; ++i < 30;)etfor (j = 1; ++j < 30;)
Frozn
4

Pyth, 17 octets

0 indexé.

@{Sms^M_Bd^}2+2Q2

Essayez-le en ligne! (S'il vous plaît, gardez-le à 100.)

Comment ça marche

@{Sms^M_Bd^}2+2Q2
@{Sms^M_Bd^}2+2Q2Q  implicit filling. Input:Q

           }2+2Q    Yield the array [2,3,4,...,Q+2]
          ^     2   Cartesian square: yield all the
                    pairs formed by the above array.
   m     d          Map the following to all of those pairs (e.g. [2,3]):
       _B               Create [[2,3],[3,2]]
     ^M                 Reduce by exponent to each array:
                        create [8,9]
    s                   Sum:   17     (Leyland number generated)
  S                 Sort the generated numbers
 {                  Remove duplicate
@                Q  Find the Q-th element.

Version plus lente

1 indexé.

e.ffqZs^M_BT^}2Z2

Essayez-le en ligne! (S'il vous plaît, gardez-le à 3.)

Fuite Nun
la source
Cela aiderait-il à créer un ensemble de pouvoirs [[4,8, ...] [9,27, ...]] et à l'ajouter à sa transposition?
Neil
@ Neil je ne pense pas. Cela serait utile en Jelly, mais pas en Pyth. Pyth ne se vectorise pas automatiquement.
Leaky Nun
Cela aide aussi dans MATL, semble-t-il.
Neil
Pourquoi gardez-vous la version plus lente?
Erik the Outgolfer
4

MATLAB, 58 octets

1 indexé

n=input('');[A B]=ndgrid(2:n+9);k=A.^B;x=unique(k'+k);x(n)

unique dans MATLAB aplatit et trie la matrice.


Merci pour l'aide à @FryAmTheEggman et @flawr .

pajonk
la source
3

05AB1E, 20 19 octets

0 indexé

ÝÌ2ãvyÂ`ms`m+}){Ù¹è

A expliqué

ÝÌ                     # range(2,N+2)
  2ã                   # get all pairs of numbers in the range
    v                  # for each pair
     yÂ`ms`m+          # push x^y+y^x
             }         # end loop
              ){Ù      # wrap to list, sort and remove duplicates
                 ¹è    # get Nth element of list

Essayez-le en ligne

Enregistré 1 octet grâce à @Adnan

Emigna
la source
Très agréable! Un conseil, ÝÌc'est court pour >L>.
Adnan
@Adnan: Merci! Je ne peux pas croire que je n'y ai pas pensé: P
Emigna
êest Sorted_uniquified, si cela existait quand cela a été demandé.
Urne magique Octopus
@carusocomputing: J'ai eu peur qu'il y ait eu un bug jusqu'à tout récemment.
Emigna
3

Mathematica, 60 48 40 octets

(Union@@Array[#^#2+#2^#&,{#,#},2])[[#]]&

Utilise une indexation unique. Unionest utilisé en l’appliquant entre chaque ligne de la matrice 2D créée par le fichier Array. Là, Unionla 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

Exemple

milles
la source
{#+1,#+1}n'est pas nécessaire, peut être laissé comme {#,#}et {2,2}peut être remplacé par simplement 2.
LLlAMnYP
@LLlAMnYP Merci! Je ne savais pas que Arraycela élargirait le troisième argument.
miles
Moi non plus, mais j'ai quand même décidé de l'essayer et cela a fonctionné :)
LLlAMnYP
2

Gelée, 14 octets

2 octets grâce à Dennis.

R‘*€¹$+Z$FṢQị@

Essayez-le en ligne! (Prend ~ 1s pour 82 pour moi) (temps O (n ^ 2))

Réponse originale de 16 octets

2r30*€¹$+Z$FṢQị@

Essayez-le en ligne! (Prend <1s pour moi) (temps constant)

Fuite Nun
la source
R‘*€¹$+Z$FṢQị@est plus rapide, plus court et n'a pas de limite supérieure artificielle.
Dennis
@Dennis et bat ma réponse :-P
Luis Mendo
@ Dennis je ne comprends pas. Comment se fait il est plus rapide que le second.
Leaky Nun
Ce n'est pas plus rapide que le second. Le temps d'exécution est trop court pour obtenir une mesure précise.
Dennis
Maintenant 13 octets :-P
Luis Mendo
2

Utilitaires Bash + GNU, 63

printf %s\\n x={2..32}\;y={2..32}\;x^y+y^x|bc|sort -nu|sed $1!d

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 bcfins d’évaluation.

Idéone.

Trauma numérique
la source
2

Perl 6 ,  60 58  56 octets

{sort(keys bag [X[&({$^a**$^b+$b**$a})]] (2..$_+2)xx 2)[$_]}
{sort(keys set [X[&({$^a**$^b+$b**$a})]] (2..$_+2)xx 2)[$_]}
{sort(unique [X[&({$^a**$^b+$b**$a})]] (2..$_+2)xx 2)[$_]}
{squish(sort [X[&({$^a**$^b+$b**$a})]] (2..$_+2)xx 2)[$_]}
{squish(sort [X[&({$^a**$^b+$b**$a})]] (2..31)xx 2)[$_]}
{squish(sort [X[&({$^a**$^b+$b**$a})]] 2..31,2..31)[$_]}

Tester:

#! /usr/bin/env perl6
use v6.c;

my &Leyland = {squish(sort [X[&({$^a**$^b+$b**$a})]] 2..31,2..31)[$_]}

say ^14 .map: &Leyland;
time-this {Leyland 81};

sub time-this (&code) {
  my $start = now;
  my $value = code();
  printf "takes %.3f seconds to come up with $value\n", now - $start;
}
(8 17 32 54 57 100 145 177 320 368 512 593 945 1124)
takes 0.107 seconds to come up with 1996813914

Explication:

{
  squish( # remove repeated values
    sort
      [X[&( # cross reduce with:
        { $^a ** $^b + $b ** $a }
      )]]
        ( 2 .. $_+2 ) # 「Range.new(2,$_+2)」 (inclusive range)
        xx 2          # repeat list
  )[$_]
}
Brad Gilbert b2gills
la source
Ne pouvez-vous pas supprimer les espaces entre sort [et ] 2..31?
Erik the Outgolfer
@ EʀɪᴋᴛʜᴇGᴏʟғᴇʀ Cela passerait d'un appel de sous-routine sort([...à un accès réseau d'un terme sort[.... Une chose similaire se produit avec l'autre espace.
Brad Gilbert b2gills
2

F #, 117 , 104

Welp, c'est plus court que ma réponse C # au moins.

Enregistrement de 13 octets grâce à Reed Copsey dans le salon F #.

let f n=[for x in 2I..32I do for y in 2I..32I->x**(int y)+y**(int x)]|>Seq.sort|>Seq.distinct|>Seq.nth n
Morgan Thrapp
la source
2

PowerShell v2 +, 84 73 68 octets

(2..30|%{2..($x=$_)|%{"$x*"*$_+'1+'+"$_*"*$x+1|iex}}|sort)[$args[0]]

Enregistrement de 11 octets grâce à @Neil ... enregistré 5 octets supplémentaires en réorganisant la manière dont l' iexexpression est évaluée.

Méthode naïve, nous doublons simplement la boucle de x=2..30et y=2..x. Chaque boucle que nous mettons x^y + y^xsur le pipeline. Le a 30été choisi à titre expérimental pour s'assurer que nous couvrions tous les cas moins que 2^31-1;-). Nous canalisons ceux-ci pour Sort-Objectleur 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 81ne sont pas garanties d'être exactes et dans l'ordre (certaines peuvent être ignorées).

Exemples

PS C:\Tools\Scripts\golfing> .\leyland-numbers.ps1 54
14352282

PS C:\Tools\Scripts\golfing> .\leyland-numbers.ps1 33
178478

PS C:\Tools\Scripts\golfing> .\leyland-numbers.ps1 77
1073792449
AdmBorkBork
la source
2

R, 58 54 octets

1 indexé. Éliminé 4 octets en utilisant pryr::rau lieu de function.

unique(sort(outer(2:99,2:9,pryr::f(x^y+y^x))))[scan()]

Explication

Pour tous les nombres de 2 à 99 et de 2 à 9,

                  2:99,2:9

appliquer la fonction x^y+y^x. Cela génère une matrice 98x8.

            outer(2:99,2:9,pryr::f(x^y+y^x))

Triez cette matrice (en la contraignant à un vecteur):

       sort(outer(2:99,2:9,pryr::f(x^y+y^x)))

Supprimez toutes les valeurs non uniques:

unique(sort(outer(2:99,2:9,pryr::f(x^y+y^x))))

Lisez à npartir de stdin et récupérez le ne numéro de la liste:

unique(sort(outer(2:99,2:9,pryr::f(x^y+y^x))))[scan()]
tourbull
la source
2

JavaScript (Firefox 42-57), 94 octets

n=>[for(x of Array(32).keys())for(y of Array(x+1).keys())if(y>1)x**y+y**x].sort((x,y)=>x-y)[n]

Nécessite Firefox 42 car il utilise à la fois la compréhension des tableaux et l’exponentiation ( [for(..of..)]et **).

Neil
la source
Ne devriez-vous pas simplement le marquer comme ES7?
mbomb007
@ mbomb007 Je ne pense pas être arrivé [for...of]à ES7.
Neil
Non, c'est for(..of..)pas [for(..of..)].
Neil
Ah ok. (Non standard. Ne pas utiliser.) Lol
mbomb007
1

Haskell, 99 98 96 95 94 octets

C’est probablement facile à sur-golfer, mais c’est le meilleur que j’ai pu trouver.

import Data.List
f n|n<2=[]|n>1=sort.nub$f(n-1)++[x^n+n^x|x<-[2..n]]
g n=(f.toInteger$n+3)!!n
flawr
la source
importer Data.List fn | w <- [2..toEnum $ n + 3] = (trier $ nub [x ^ y + y ^ x | x <-w, y <-w]) !! n Savez-vous pourquoi toInteger / toEnum est nécessaire?
Damien
Wow, c'est fou =) N'hésitez pas à l'ajouter en tant que votre propre réponse, car elle est très différente de la mienne! Si nous omettons toIntegerdans ma solution, nous aurons un dépassement de intcapacité car nous itérons beaucoup plus haut (au n+3lieu de n) lorsque nous travaillons avec la liste. Sinon, nous aurions besoin de coder en dur les quatre premiers termes. Que fait exactement toEnumdans votre solution?
Flawr
OK, c’est à cause de l’opérateur (!!) qui lie n à un Int. Puisque n est supposé être inférieur à 82, w peut être remplacé par [2..99] par exemple et f=(sort(nub[x^y+y^x|x<-[2..99],y<-[2..x]])!!). toEnumconvertit un Int en un Enum, et Integer étant une instance de la classe Enum, toEnum convertit ici n + 3 en un Integer.
Damien
1

Python 3, 76 69 octets

r=range(2,32);f=lambda n:sorted({x**y+y**x for x in r for y in r})[n]

0 indexé.

https://repl.it/C2SA

atlasologue
la source
2
C'est correct d'écrire ta réponse en tant quer=range(2,32) lambda n:sorted(…)[n]
Lynn
1

C #, 141 , 127 octets.

Oh c #, tu es une langue si longue.

n=>(from x in Enumerable.Range(2,32)from y in Enumerable.Range(2,32)select Math.Pow(x,y)+Math.Pow(y,x)).Distinct().ToList()[n];

C'est un lambda qui doit être assigné delegate double del(int n);pour être exécuté, en tant que tel:

delegate double del(int n);
del f=n=>(from x in Enumerable.Range(2,32)from y in Enumerable.Range(2,32)select Math.Pow(x,y)+Math.Pow(y,x)).OrderBy(q=>q).Distinct().ToList()[n];
Morgan Thrapp
la source
1
Encore plus court que Java .
mardi
@flawr Wooooooo?
Morgan Thrapp
Je ne connais rien au C #, mais ne pourriez-vous pas sauvegarder Enumerable.Range(dans une variable / fonction / itérateur / quoi que ce soit avec un nom plus court pour reuisng?
mardi
Je pourrais le faire, mais il faudrait alors inclure une définition de classe et de type, ce qui finit par me coûter une tonne.
Morgan Thrapp
1

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.

prepare l(int)as select s from(select dense_rank()over(order by s)r,s from(select x^y+y^x from generate_series(2,99)x(x),generate_series(2,99)y(y))c(s))d where r=$1limit 1

Exécuté comme suit

execute l(82)
s
-----------------
1996813914

Cela a fini par courir beaucoup plus vite que prévu

MickyT
la source
1

J, 29 octets

<:{[:/:~@~.@,[:(^+^~)"0/~2+i.

Utilise une indexation unique. Conversion de ma solution Mathematica .

Le vrai secret ici est que j'ai :(^+^~)de mon côté.

Usage

   f =: <:{[:/:~@~.@,[:(^+^~)"0/~2+i.
   f 7
145
   (,.f"0) >: i. 10  NB. Extra commands for formatting
 1   8
 2  17
 3  32
 4  54
 5  57
 6 100
 7 145
 8 177
 9 320
10 368

Explication

<:{[:/:~@~.@,[:(^+^~)"0/~2+i.  Input: n
                         2+i.  Step one
                     "0/~      Step two
              :(^+^~)          ???
<:{[:/:~@~.@,[                 Profit

Plus sérieusement,

<:{[:/:~@~.@,[:(^+^~)"0/~2+i.  Input: n
                           i.  Create the range [0, 1, ..., n-1]
                         2+    Add 2 to each
               (^+^~)"0        Create a dyad (2 argument function) with inputs x, y
                               and returns x^y + y^x
             [:        /~      Use that function to create a table using the previous range
   [:       ,                  Flatten the table into a list
         ~.@                   Take its distinct values only
     /:~@                      Sort it in ascending order
<:                             Decrement n (since J is zero-indexed)
  {                            Select the value at index n-1 from the list and return
milles
la source
... Bénéfice : D
flawr
1

Rapide 3, 138 octets

import Glibc;func l(n:Int)->Int{let r=stride(from:2.0,to:50,by:1);return Int(Set(r.flatMap{x in r.map{pow(x,$0)+pow($0,x)}}).sorted()[n])}

Code non-liquéfié

Essayez-le ici

import Glibc
func l(n: Int) -> Int {
    // Create a Double sequence from 2 to 50 (because pow requires Double)
    let r = stride(from: 2.0, to: 50.0, by: 1.0)

    return Int(Set(r.flatMap {
        x in r.map {
            pow(x, $0) + pow($0, x)
        }
    }).sorted()[n])
Valentin
la source
1
Bienvenue dans Programmation Puzzles et Code Golf! Bonne première réponse, mais ce serait mieux si vous pouviez expliquer ce qui se passe.
Clismique
1

Axiome 148 octets

w(n)==(v:List INT:=[];for i in 2..31 repeat for j in i..31 repeat(a:=i^j+j^i;if a>1996813914 then break;v:=cons(a,v));v:=sort v;~index?(n,v)=>0;v.n)

des exemples

w(n)==
 v:List INT:=[];for i in 2..31 repeat for j in i..31 repeat
        (a:=i^j+j^i;if a>1996813914 then break;v:=cons(a,v));v:=sort v;~index?(n,v)=>0
 v.n
 (2) -> [w(i)  for i in 0..85]
    Compiling function w with type NonNegativeInteger -> Integer

    (2)
    [0, 8, 17, 32, 54, 57, 100, 145, 177, 320, 368, 512, 593, 945, 1124, 1649,
     2169, 2530, 4240, 5392, 6250, 7073, 8361, 16580, 18785, 20412, 23401,
     32993, 60049, 65792, 69632, 93312, 94932, 131361, 178478, 262468, 268705,
     397585, 423393, 524649, 533169, 1048976, 1058576, 1596520, 1647086,
     1941760, 2012174, 2097593, 4194788, 4208945, 4785713, 7861953, 8389137,
     9865625, 10609137, 14352282, 16777792, 16797952, 33554432, 33555057,
     43050817, 45136576, 48989176, 61466176, 67109540, 67137425, 129145076,
     134218457, 177264449, 244389457, 268436240, 268473872, 292475249,
     364568617, 387426321, 536871753, 774840978, 1073742724, 1073792449,
     1162268326, 1173741824, 1221074418, 1996813914, 0, 0, 0]

Type: Liste Entier

RosLuP
la source
1

Perl 5 , 70 + 1 (-p) = 71 octets

for$x(2..32){$r{$x**$_+$_**$x}++for$x..32}$_=(sort{$a<=>$b}keys%r)[$_]

Essayez-le en ligne!

Xcali
la source
0

J, 38 31 octets

0 indexé.

[{[: (# ~~:) @ /: ~ @, / [: (+::) [: ^ / ~ 2 + i. @>: @]
((# ~~:) /: ~, / (+ |:) ^ / ~ 2 + i.29x) {~ [

Usage

>> f =: ((#~~:)/:~,/(+|:)^/~2+i.29x){~[
>> f 81
<< 1996813914
Fuite Nun
la source
0

Java, 200 197 octets

0 indexé

n->{long[]t=new long[999];for(int i=1,j;++i<31;)for(j=1;j++<i;)t[i*31+j]=(long)(Math.pow(i,j)+Math.pow(j,i));return java.util.Arrays.stream(t).sorted().distinct().skip(n+1).findAny().getAsLong();};

On dirait que les flux de java peuvent réellement sauver des octets! Qui aurait pensé?!

Ungolfed:

package pcg;

import java.util.function.IntToLongFunction;

public class Pcg82981 {

  public static void main(String[] args) {
    IntToLongFunction f = (n) -> {
      long[] t = new long[999];
      for (int i = 1; ++i < 31; ) {
        for (int j = 1; j++ < i; ) {
          t[i * 31 + j] = (long) (Math.pow(i, j) + Math.pow(j, i));
        }
      }
      return java.util.Arrays.stream(t)
          .sorted()
          .distinct()
          .skip(n + 1) // We don't care about 0.
          .findAny()   // equivalent to `findFirst`
          .getAsLong();
    };

    for (int i = 0; i < 82; i++) {
      System.out.println(f.applyAsLong(i));
    }

  }
}

Modifications:

  1. 200 -> 197: espace supprimé après long[]et parenthèses supprimées n.
Olivier Grégoire
la source
0

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.

t=[]
for k in range(100):a,b,q=k//10,k%10,a**b+b**a;f=lambda q:0if q in t else t.append(q);f(q)
print(sorted(t)[7:])

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é

George
la source
Faites tune setliste au lieu d’une liste et remplacez les dernières fordéclarations par une simple t.add(q).
Cristian Ciupitu
0

Japt -g, 15 octets

g2ôU ïÈ**Y+pXÃü

L'essayer

g2ôU ïÈ**Y+pXÃü
                    :Implicit input of integer U
g                   :Index into the following array
 2ôU                :  Range [2,U+2]
     ï              :  Cartesian product with itself
      È             :  Reduce each pair [X,Y]
       **Y          :    Raise X to the power of Y
          +pX       :    Add Y raised to the power of X
             Ã      :  End reduce
              ü     :  Sort & partition by value
                    :Implicit output of first element
Hirsute
la source