Leyland Numaraları


37

Bir doğal sayı Verilen n, dönmek n-th Leyland numarasını .

Leyland Numarası

Leyland sayıları k, formun tam sayılarıdır .

k = x^y + y^x

Nerede x,y1'den kesinlikle büyük tam sayılardır.

Yükselen sırayla numaralandırılırlar.

EDIT: @DigitalTrauma, aşağıdaki "tanım" ı eklememi önerdi:

Biz atmak düşünün x^y+y^xtüm olası değerleri için bir torbaya xve y, ve kopyalarda önlemek atma. Sonra o çantayı sıralarız. Sıralanan çanta bizim sıralamamız.

ayrıntılar

Size en uygun olanı 0 veya 1 tabanlı indeksleme kullanabilirsiniz.

Programınız, en az tüm imzalı 32 tam sayıların altındaki Leyland numaralarını yazabilmelidir. (Bu sınırın altındaki son Leyland numarası 1996813914, endekstedir 82.)

Test durumları

İlk birkaç terim şöyle:

8, 17, 32, 54, 57, 100, 145, 177, 320, 368, 512, 593, 945, 1124

İlk giriş hariç, OEIS’de A076980 . Bu ek ilk girişten dolayı, OEIS'deki endekslerin birer birer kaydığını unutmayın.

OEIS b-dosyasında daha fazla bilgi bulabilirsiniz.


They are enumerated in ascending orderBunun ne anlama geldiğinden emin değilim. X ve y'nin bir listesini verebilir misiniz?
DJMcMayhem

@DrGreenEggsandIronMan Bu, 8tam tersi 17değil , önceden olduğu anlamına gelir .
Sızdıran Rahibe

3
Biz atmak düşünün @DrGreenEggsandIronMan x^y+y^xtüm olası değerleri için bir çanta içinde xve yyinelenenlerin ve önlemek thrwoing. Sonra o çantayı sıralarız. Sıralanan çanta bizim sıralamamız.
kusur

10
Orada çok büyük bir çanta var
Luis Mendo

2
@ LouisMendo @ HenriLéonLebesgue'e sorun ve size bu çantanın temelde hiçbir şey olmadığını söyleyecektir.
kusur

Yanıtlar:


11

MATL , 16 15 13 bayt

Q:Qt!^t!+uSG)

Çıktı 1 tabanlıdır.

Çevrimiçi deneyin!

açıklama

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

Matlab'da uniqueelemanları sıralar. MATL'de de yok mu?
pajonk

1
@pajonk MATL , daha tipik kullanım için 'stable'bayrağı uniquevarsayılan olarak kullanır .
Suever

@Suever Tamam, açıklama için teşekkürler.
pajonk

1
Kullandığımız gibi hissediyorum t!^(burada ^ile değiştirilebilir +, -veya operatörlerin herhangi sayı) çok motifi. &Bir vektör için bu davranışa sahip olanlardan bazıları için 1 girdi yapsak ne olur ?
Suever

@Suever Bu harika bir fikir! Senaryonuzla biraz araştırma yaptım; sohbeti görmek
Luis Mendo

5

Haskell, 52 bayt

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

Gerçekten verimsiz. Her bir doğal sayıyı Leyland numarası olmak için test eder, olanlar için sonsuz bir liste oluşturur. Bir giriş verildiğinde listenin o indeks öğesini alır. x,y32 bit tamsayılar için sadece 31 taneye kadar kontrol edilmesi gerektiğini kullanır .

Şununla aynı uzunluk filter:

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

Gördüğüm kadar açık bir çözüm, çok hoşuma gitti!
kusur

5

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

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 endeksli

-2 bayt (221 → 219) , @LeakyNun1996813915 ile değiştirilerek kaydedilmiştir . -3 bayt (219 → 216) sayesinde @LeakyNun ve @Frozn şey kendim unuttum .. -10 bayt (→ 206 216) 8. Java 7 değiştirerek -2 bayt (→ 204 206) değiştirerek ile sayesinde @TAsk . -11 bayt (204 → 193) kaldırarak , çünkü " En azından tüm Leyland sayıları, imzalı en fazla 32-bit tam sayıdan daha az " demiştir . Değiştirerek -1 baytı (→ 192 193) için .(1L<<31)


ArrayListVector
s<(1L<<31)&
VectorStack

Açıklama:

Burada dene

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

2
Java kullanmak için 10/10
Leaky Nun

Yalnızca 2^31-1(yani, int işaretli) kadar desteklemeniz gerektiğinden , bir sürü longparayı değiştiremez misiniz?
AdmBorkBork

1
Çabuk golf oyunları: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);}
Sızdıran Rahibe

1
For döngü değişkeni bildirimi.
Sızdıran Rahibe,

1
Nasıl hakkında for (int i = 1, j; ++i < 30;)vefor (j = 1; ++j < 30;)
Frozn

4

Pyth, 17 bayt

0 endeksli.

@{Sms^M_Bd^}2+2Q2

Çevrimiçi deneyin! (Lütfen 100’de saklayın.)

Nasıl çalışır

@{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.

Daha yavaş sürüm

1 endeksli.

e.ffqZs^M_BT^}2Z2

Çevrimiçi deneyin! (Lütfen, 3'te saklayın.)


Bir dizi güç [[4,8, ...] [9,27, ...]] oluşturup onun transpozisyonuna eklemek yardımcı olur mu?
Neil

@Neil sanmıyorum. Jelly'de yardımcı olur, ancak Pyth'te olmazdı. Pyth otomatik olarak vektörleşmiyor.
Sızdıran Rahibe,

Ayrıca MATL'de de yardımcı oluyor.
Neil

Neden daha yavaş sürümü tutuyorsun?
Outgolfer Erik,

4

MATLAB, 58 bayt

1 endeksli

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

unique MATLAB'da matrisleri düzleştirir ve sıralar.


@ FryAmTheEggman ve @ flawr'a yardım ettiğiniz için teşekkür ederiz .


3

05AB1E, 20 19 bayt

0 endeksli

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

Açıklaması

ÝÌ                     # 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

Çevrimiçi deneyin

@Adnan sayesinde 1 bayt kaydedildi


Çok hoş! Bir ipucu, ÝÌkısa >L>.
Adnan

@Adnan: Teşekkürler! Bunu düşünmediğime
inanamıyorum

êBu istendiğinde mevcutsa sıralanır.
Magic Octopus Urn,

@ carusocomputing: Korkarım ki yakın zamana kadar tıkandı.
Emigna

3

Mathematica, 60 48 40 bayt

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

Bir tabanlı endeksleme kullanır. Uniontarafından oluşturulan 2B matrisin her satırı arasına uygulanarak kullanılır Array. Orada,Union 2B matrisini bir listeye yassılaştırırken aynı zamanda yinelenenleri kaldırır ve değerleri sıralı düzende yerleştirir.

@ LLlAMnYP sayesinde 8 bayt kaydedildi .

kullanım

Example


{#+1,#+1}gerekli değildir, olduğu gibi bırakılabilir {#,#}ve {2,2}basitçe değiştirilebilir 2.
LLIAMnYP 17:16

@LLlAMnYP Teşekkürler! ArrayÜçüncü argümanı genişleteceğini bilmiyordum .
mil

Ben de yapmadım ama yine de denemeye karar verdim ve işe yaradı :)
LLlAMnYP

2

Jöle, 14 bayt

Dennis'e 2 bayt.

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

Çevrimiçi deneyin! (82 için ~ 1s alır) (O (n ^ 2) süre)

Orijinal 16 baytlık cevap

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

Çevrimiçi deneyin! (Benim için <1s alır) (Sabit süre)


R‘*€¹$+Z$FṢQị@daha hızlı, daha kısa ve yapay bir üst sınırı yoktur.
Dennis,

@Dennis ve cevabım :-P yener
Luis Mendo

@Dennis anlamadım. Nasıl olur da ikincisinden daha hızlı.
Sızdıran Rahibe

İkincisinden daha hızlı değil. Doğru bir ölçüm elde etmek için yürütme süresi çok kısa.
Dennis,

Şimdi 13 byte: - P
Luis Mendo

2

Bash + GNU yardımcı programları, 63

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

1 tabanlı indeksleme. Görünüşe göre bu @ TimmyD'nin cevabıyla aynı yaklaşım . Yuvalanmış döngüler yerine, bash ayracı genişletmesi, yönlendirilen aritmetik ifadeleri üretmek için kullanılırbc değerlendirme için .

Ideone.


2

Perl 6 ,  60 58  56 bayt

{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)[$_]}

Ölçek:

#! /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

Açıklama:

{
  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
  )[$_]
}

Eğer arasındaki boşlukları kaldırın edemez sort [ve ] 2..31?
Outgolfer Erik,

@ EʀɪᴋᴛʜᴇGᴏʟғᴇʀ Bu onu alt rutin bir çağrıdan sort([...bir terimin dizi erişimine çevirirdi sort[.... Diğer alanda da benzer bir şey olur.
Brad Gilbert,

2

F # 117 , 104

Welp, en azından benim C # cevabımdan daha kısa.

F # chatroom'undaki Reed Copsey sayesinde 13 byte kurtarıldı.

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

2

PowerShell v2 +, 84 73 68 bayt

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

@Neil sayesinde 11 bayt kaydedildi ... ek olarak 5 bayt kaydedildi. iex ifadenin değerlendirildiğini .

Naif yöntem, biz sadece x=2..30ve dan döngü için çift y=2..x. x^y + y^xBoru hattına koyduğumuz her döngü . 30Biz az bütün davaları kapsadığı sağlamak için deneysel olarak seçildi 2^31-1;-). Sort-ObjectBunları artan şekilde sıraya koymak için borularız . Çıkış, girişe bağlı olarak sıfır dizinli $args[0].

Evet, burada üretilen çok fazla yabancı girdi var - bu algoritma aslında 435 Leyland numarası üretiyor - ancak endeksin üstündeki şeylerin 81doğru ve düzenli olmaları garanti edilmiyor (atlananlar olabilir).

Örnekler

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

2

R, 58 54 bayt

1 endeksli. Kullanılarak 4 bayt elendi pryr::ryerine function.

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

açıklama

2 - 99 ve 2 - 9 arasındaki tüm sayılar için,

                  2:99,2:9

işlevi uygulayın x^y+y^x. Bu bir 98x8 matris oluşturur.

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

Bu matrisi sıralayın (bir vektöre zorlayarak):

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

Tüm benzersiz olmayan değerleri kaldır:

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

nStdin'den oku ve bu nsayıyı listeden al:

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

2

JavaScript (Firefox 42-57), 94 bayt

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]

Firefox 42'ye ihtiyaç duyuyor, çünkü hem dizi anlamalarını hem de üsteliklerini ( [for(..of..)]ve **) kullanıyor.


Sadece ES7 olarak işaretlememeli miydin?
mbomb007

@ mbomb007 ES7'ye yaptığımı sanmıyorum [for...of].
Neil


Hayır bu for(..of..)değil [for(..of..)].
Neil


1

Haskell, 99 98 96 95 94 bayt

Muhtemelen kolayca aşılabilir, ama bu benim başarabildiğim en iyisiydi .

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

Data.List'i al fn | w <- [2..toEnum $ n + 3] = (sıralama $ nub [x ^ y + y ^ x | x <-w, y <-w]) !! n Biliyor musunuz neden toeger / toEnum gerekli?
Damien

Vay canına, bu çılgınlık =) Benim cevabın olan Qutie'den farklı olduğu için kendi cevabını eklemek için çekinme! Eğer toIntegerçözümümüzü atlarsak , bir taşma intişlemine sahip olacağız , çünkü liste ile çalışırken daha yüksek ( n+3yerine n) yineliyoruz . Aksi halde ilk dört terimi ya da daha fazlasını kodlamamız gerekiyor. toEnumÇözümünüzde tam olarak ne yapar ?
kusur

Tamam, n'yi bir Int'ye bağlayan (!!) işleci yüzünden. N'nin 82'nin altında olması gerektiğinden, w, örneğin [2..99] ile değiştirilebilir f=(sort(nub[x^y+y^x|x<-[2..99],y<-[2..x]])!!). toEnumInt'i bir Enum'a dönüştürür ve Integer, Enum sınıfının bir örneğidir, bu nedenle ,Enum burada n + 3'ü bir Tamsayıya dönüştürür.
Damien

1

Python 3, 76 69 bayt

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

0 endeksli.

https://repl.it/C2SA


2
Cevabınızı sadece olarak yazmanız yeterlir=range(2,32) lambda n:sorted(…)[n]
Lynn

1

C #, 141 , 127 bayt.

Oh c #, çok uzun bir dildin.

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];

Bu, delegate double del(int n);çalıştırılması için atanması gereken bir lambda gibidir , çünkü:

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];

1
Hala Java'dan daha kısa .
kusur

@flawr Wooooooo?
Morgan Thrapp

C # ile ilgili hiçbir şey bilmiyorum, ancak Enumerable.Range(reuisng için daha kısa bir isim olan / function / iterator / değişkenine kaydedemez miydiniz?
kusur

Yapabilirdim, ama o zaman bana bir ton mal olan bir sınıf ve tip hatası eklemeliydim.
Morgan Thrapp

1

SQL (PostgreSQL 9.4), 171 bayt

Hazırlanan bir ifade olarak yapılır. Birkaç seri 2 - 99 oluşturun, onlara katılın ve denklemi yapın. Yoğun bir şekilde onları indekslemek için sonuçları sıralamak ve tamsayı girişi sıralamasında ilk sonucu seçin.

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

Aşağıdaki gibi yürütülen

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

Bu beklediğimden çok daha kısa sürede sonuçlandı


1

J, 29 bayt

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

Bir tabanlı endeksleme kullanır. Benim Mathematica Dönüşüm çözümü .

Buradaki gerçek sır benim :(^+^~) , yanımda olduğum.

kullanım

   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

açıklama

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

Daha ciddi,

<:{[:/:~@~.@,[:(^+^~)"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

... Kâr : D
kusur

1

Swift 3, 138 bayt

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])}

Ungolfed kod

Burada dene

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])

1
Programlama Bulmacaları ve Code Golf'a Hoş Geldiniz! Güzel ilk cevap, ama neler olduğunu açıklarsan daha iyi olur.
clismique

1

Aksiyom 148 bayt

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)

bazı örnek

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]

Tür: Liste Tamsayısı




0

J, 3831 bayt

0 endeksli.

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

kullanım

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

0

Java, 200 197 bayt

0 endeksli

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();};

Java'nın akışları aslında baytları kurtarabilir gibi görünüyor! Kim düşünebilirdi ki ?!

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));
    }

  }
}

Düzenlemeler:

  1. 200 -> 197: Peşinden sonra boşluk bırakıldı long[]ve etrafta parantez kaldırıldı n.

0

Python 3, 129-> 116 bayt

Daha kısa bir python 3 cevabı olduğunu biliyorum ama yine de çözümüme katkıda bulunmak istedim.

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:])

Bu, x için tüm değerleri ve y için tüm değerleri gözden geçirmeyi düşünmenin en iyi yoluydu. Birisi benim yaklaşımımı golf oynayabilirse memnun olurum


Make ta setlistesi yerine ve son değiştirme forbir ova olan ifadeleri t.add(q).
Cristian Ciupitu


0

Japt -g, 15 bayt

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

Dene

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
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.