Numery Leyland


37

Podając liczbę naturalną n, zwróć n-ty numer Leyland .

Numer Leylandu

Liczby Leylanda są dodatnimi liczbami całkowitymi kpostaci

k = x^y + y^x

Gdzie x,yliczby całkowite są ściśle większe niż 1.

Są one wyliczone w porządku rosnącym.

EDYCJA: @DigitalTrauma zasugerował dołączenie następującej „definicji”:

Wyobraźmy sobie, że rzucać x^y+y^xw torbie dla wszystkich możliwych wartości xa yi unikać rzucania w dwóch powtórzeniach. Następnie sortujemy tę torbę. Posortowana torba to nasza sekwencja.

Detale

Możesz użyć indeksowania opartego na 0 lub 1, cokolwiek najbardziej ci odpowiada.

Twój program musi mieć możliwość wypisania co najmniej wszystkich liczb Leyland mniejszych niż maksymalna liczba 32-bitowa ze znakiem. (Ostatni numer Leyland poniżej tego limitu to 1996813914indeks 82).

Przypadki testowe

Pierwsze kilka warunków jest następujące:

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

A076980 w OEIS, z wyjątkiem pierwszego wpisu. Zauważ, że z powodu tego dodatkowego pierwszego wpisu wskaźniki OEIS są przesunięte o jeden.

Więcej można znaleźć w pliku b OEIS


They are enumerated in ascending orderNie jestem pewien, co to znaczy. Czy możesz podać listę xiy?
DJMcMayhem

@DrGreenEggsandIronMan Oznacza to, że 8jest wcześniej 17, a nie na odwrót.
Leaky Nun

3
@DrGreenEggsandIronMan Wyobraźmy sobie, że wrzucamy x^y+y^xdo torby wszystkie możliwe wartości xi y, i unikamy twworzenia w duplikatach. Następnie sortujemy tę torbę. Posortowana torba to nasza sekwencja.
flawr

10
Masz tam bardzo dużą torbę
Luis Mendo,

2
@LuisMendo Zapytaj @ HenriLéonLebesgue, a on powie ci, że ta torba jest w zasadzie niczym.
flawr

Odpowiedzi:


11

MATL , 16 15 13 bajtów

Q:Qt!^t!+uSG)

Wyjście jest oparte na 1.

Wypróbuj online!

Wyjaśnienie

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

W Matlab uniquesortuje elementy. Czy to też nie jest w MATL?
pajonk

1
@pajonk MATL domyślnie używa 'stable'flagi, uniqueponieważ jest to bardziej typowe użycie.
Suever

@ Suver Ok, dziękuję za wyjaśnienie.
pajonk

1
Czuję się jak używamy t!^(gdzie ^mogą być zastąpione +, -lub dowolną liczbę operatorów) motywem dużo. Co jeśli zrobimy &średnią 1 dla niektórych z tych, dla których wektor ma takie zachowanie?
Suever

@Suever To świetny pomysł! Przeprowadziłem pewne badania z twoim skryptem; zobacz czat
Luis Mendo

5

Haskell, 52 bajty

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

Naprawdę nieefektywny. Sprawdza każdą liczbę naturalną pod kątem liczby Leylanda, tworząc nieskończoną listę tych, które są. Biorąc pod uwagę dane wejściowe, pobiera ten element indeksu z listy. Używa, że ​​tylko x,y32 liczby muszą być sprawdzone dla 32-bitowych liczb całkowitych.

Ta sama długość z filter:

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

Z perspektywy czasu takie oczywiste rozwiązanie bardzo mi się podoba!
flawr

5

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

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-indeksowane

-2 bajtów (221 → 219) zastępując zapisane 1996813915ze (1L<<31)dzięki @LeakyNun .
-3 bajtów (219 → 216) dzięki @LeakyNun i @Frozn z czegoś, co zapomniał się ..
-10 bajtów (216 → 206) poprzez zmianę Java 7 do 8.
-2 bajtów (206 → 204), zastępując ArrayListprzy Vectordzięki @TAsk .
-11 bajtów (204 → 193) przez usunięcie s<(1L<<31)&, ponieważ pytanie zawiera „ co najmniej wszystkie liczby Leyland mniejsze niż maksymalna liczba 32-bitowa ze znakiem ”.
-1 bajt (193 → 192), zmieniając Vectorna Stack.

Wyjaśnienie:

Wypróbuj tutaj

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
10/10 za korzystanie z java
Leaky Nun

Ponieważ musisz obsługiwać tylko 2^31-1( do podpisu int), czy nie możesz zamienić kilku longobsad?
AdmBorkBork

1
Szybkie gry w golfa: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
Deklaracja zmiennej pętli for.
Leaky Nun

1
Jak o for (int i = 1, j; ++i < 30;)ifor (j = 1; ++j < 30;)
Frozn

4

Pyth, 17 bajtów

0-indeksowane.

@{Sms^M_Bd^}2+2Q2

Wypróbuj online! (Proszę, trzymaj to na 100.)

Jak to działa

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

Wolniejsza wersja

1-indeksowany.

e.ffqZs^M_BT^}2Z2

Wypróbuj online! (Proszę zachować 3).


Czy pomógłby stworzyć szereg mocy [[4,8, ...] [9,27, ...]] i dodać go do transpozycji?
Neil

@Neil Nie sądzę. Byłoby to pomocne w galaretce, ale nie w Pyth. Pyth nie jest automatycznie wektoryzowany.
Leaky Nun

Wydaje się również, że pomaga w MATL.
Neil

Dlaczego utrzymujesz wolniejszą wersję?
Erik the Outgolfer,

4

MATLAB, 58 bajtów

1-indeksowany

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

unique w MATLAB spłaszcza i sortuje macierz.


Dzięki za pomoc dla @FryAmTheEggman i @flawr .


3

05AB1E, 20 19 bajtów

0-indeksowane

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

Wyjaśnił

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

Wypróbuj online

Zapisano 1 bajt dzięki @Adnan


Bardzo dobrze! Jedna wskazówka ÝÌjest krótka >L>.
Adnan

@Adnan: Dzięki! Nie mogę uwierzyć, że o tym nie pomyślałem: P
Emigna,

êjest posortowane_jednoznaczne, jeśli istniało, gdy zostało o to poproszone.
Magic Octopus Urn

@carusocomputing: Obawiam się, że do niedawna był to problem.
Emigna,

3

Mathematica, 60 48 40 bajtów

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

Używa indeksowania opartego na jednym. Unionjest stosowany przez zastosowanie go między każdym rzędem matrycy 2D utworzonej przez Array. Tam Unionspłaszczy macierz 2D do listy, usuwając jednocześnie duplikaty i ustawiając wartości w posortowanej kolejności.

Zaoszczędzono 8 bajtów dzięki @ LLlAMnYP .

Stosowanie

Przykład


{#+1,#+1}nie jest konieczne, można je pozostawić {#,#}i {2,2}można je po prostu zastąpić 2.
LLlAMnYP

@LLlAMnYP Dzięki! Nie wiedziałem, Arrayże rozwinie trzeci argument.
mile

Ja też nie, ale postanowiłem spróbować mimo to i zadziałało :)
LLlAMnYP,

2

Galaretka, 14 bajtów

2 bajty dzięki Dennisowi.

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

Wypróbuj online! (Zajmuje mi około 1 s za 82) (czas O (n ^ 2))

Oryginalna 16-bajtowa odpowiedź

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

Wypróbuj online! (Trwa dla mnie <1s) (Stały czas)


R‘*€¹$+Z$FṢQị@jest szybszy, krótszy i nie ma sztucznej górnej granicy.
Dennis

@Dennis i bije moją odpowiedź :-P
Luis Mendo

@Dennis Nie rozumiem. Dlaczego jest szybszy niż drugi.
Leaky Nun

Nie jest szybszy niż drugi. Czas wykonania jest zbyt krótki, aby uzyskać dokładny pomiar.
Dennis

Teraz 13 bajtów :-P
Luis Mendo

2

Narzędzia Bash + GNU, 63

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

Indeksowanie 1. Wygląda na to, że jest to prawie to samo podejście, co odpowiedź @ TimmyD . Zamiast zagnieżdżonych pętli, rozwinięcie nawiasu klamrowego jest używane do generowania wyrażeń arytmetycznych, które są przesyłane potokowo do bcoceny.

Ideone.


2

Perl 6 ,  60 58  56 bajtów

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

Test:

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

Wyjaśnienie:

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

Nie możesz usunąć spacji między sort [i ] 2..31?
Erik the Outgolfer,

@ EʀɪᴋᴛʜᴇGᴏʟғᴇʀ To zmieniłoby go z wywołania podprogramu sort([...w dostęp do tablicy dla terminu sort[.... Podobnie dzieje się z drugą przestrzenią.
Brad Gilbert b2gills

2

F #, 117 , 104

Welp, jest on krótszy niż przynajmniej moja odpowiedź w języku C #.

Zaoszczędź 13 bajtów dzięki Reedowi Copseyowi na czacie 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

2

PowerShell v2 +, 84 73 68 bajtów

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

Zapisano 11 bajtów dzięki @Neil ... zaoszczędzono dodatkowe 5 bajtów, reorganizując sposób oceny iexwyrażenia.

Naiwna metoda, po prostu podwajamy pętlę od x=2..30i y=2..x. Każda pętla, którą umieszczamy x^y + y^xw rurociągu. 30Został wybrany eksperymentalnie w celu zapewnienia, że omówiliśmy wszystkie przypadki mniej niż 2^31-1;-). Rurujemy je, Sort-Objectaby zamówić je rosnąco. Dane wyjściowe są zerowane na podstawie danych wejściowych $args[0].

Tak, generowanych jest tutaj wiele obcych wpisów - ten algorytm faktycznie generuje 435 liczb Leylandu - ale rzeczy powyżej indeksu 81nie są gwarantowane, aby były dokładne i uporządkowane (niektóre mogą zostać pominięte).

Przykłady

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 58 bajtów

1-indeksowany. Wyeliminowano 4 bajty za pomocą pryr::rzamiast function.

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

Wyjaśnienie

Dla wszystkich liczb od 2 do 99 i od 2 do 9

                  2:99,2:9

zastosować funkcję x^y+y^x. Generuje to macierz 98x8.

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

Posortuj tę macierz (zmuszając ją do wektora):

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

Usuń wszystkie nieunikalne wartości:

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

Odczytaj nze standardowego wejścia i pobierz nnumer th z listy:

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

2

JavaScript (Firefox 42-57), 94 bajty

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]

Potrzebuje przeglądarki Firefox 42, ponieważ wykorzystuje zarówno wyrażenia tablicowe, jak i potęgowanie ( [for(..of..)]i **).


Nie powinieneś po prostu oznaczyć go jako ES7?
mbomb007

@ mbomb007 Nie sądzę, że [for...of]trafił do ES7.
Neil


Nie, to for(..of..)nie tak [for(..of..)].
Neil


1

Haskell, 99 98 96 95 94 bajtów

Prawdopodobnie łatwo go obezwładnić, ale to było najlepsze, co mogłem wymyślić.

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

import Data.List fn | w <- [2..toEnum $ n + 3] = (sort $ nub [x ^ y + y ^ x | x <-w, y <-w]) !! n Czy wiesz dlaczego toInteger / toEnum jest potrzebne?
Damien

Wow, to szalone =) Możesz dodać ją jako własną odpowiedź, ponieważ różni się ona od mojej! Jeśli pominiemy toIntegerw moim rozwiązaniu, będziemy mieli przepełnienie int, ponieważ iterujemy znacznie wyżej (do n+3zamiast n) podczas pracy z listą. W przeciwnym razie musielibyśmy zakodować pierwsze cztery warunki. Co dokładnie robi toEnumw twoim rozwiązaniu?
flawr

OK, to z powodu operatora (!!), który wiąże n z int. Ponieważ n ma być poniżej 82, w można zastąpić przez [2..99] na przykład i f=(sort(nub[x^y+y^x|x<-[2..99],y<-[2..x]])!!). toEnumkonwertuje Int na Enum, a Integer jest instancją klasy Enum, więc tutaj toEnum konwertuje n + 3 na Integer.
Damien

1

Python 3, 76 69 bajtów

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

0-indeksowane.

https://repl.it/C2SA


2
Możesz napisać swoją odpowiedź jakor=range(2,32) lambda n:sorted(…)[n]
Lynn,

1

C #, 141 , 127 bajtów.

Oh c #, jesteś takim długim językiem.

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

Jest to lambda, którą należy przypisać do delegate double del(int n);uruchomienia, jako taką:

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
Wciąż krótszy niż Java .
flawr

@flawr Wooooooo?
Morgan Thrapp,

Nic nie wiem o C #, ale czy nie mógłbyś zapisać Enumerable.Range(do zmiennej / funkcji / iteratora / czegokolwiek o krótszej nazwie dla odwołania?
flawr

Mógłbym, ale wtedy musiałbym podać definicje klas i typów, co ostatecznie kosztuje mnie tonę.
Morgan Thrapp,

1

SQL (PostgreSQL 9.4), 171 bajtów

Sporządzono jako przygotowane oświadczenie. Wygeneruj kilka serii 2 - 99, połącz krzyżowo i wykonaj równanie. Gęsto uszereguj wyniki, aby je zindeksować i wybierz pierwszy wynik o randze liczby całkowitej.

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

Wykonano w następujący sposób

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

Skończyło się to dużo szybciej niż się spodziewałem


1

J, 29 bajtów

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

Używa indeksowania opartego na jednym. Konwersja z mojego rozwiązania Mathematica .

Tajemnicą jest to, że mam :(^+^~)po swojej stronie.

Stosowanie

   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

Wyjaśnienie

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

Poważniej,

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

... Zysk : D
wada

1

Swift 3, 138 bajtów

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

Nieskluczony kod

Wypróbuj tutaj

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
Witamy w Programowaniu zagadek i Code Golf! Dobra pierwsza odpowiedź, ale byłoby lepiej, gdybyś mógł wyjaśnić, co się dzieje.
clismique

1

Axiom 148 bajtów

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)

jakiś przykład

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]

Wpisz: List Integer




0

J, 38 31 bajtów

0-indeksowane.

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

Stosowanie

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

0

Java, 200 197 bajtów

0-indeksowane

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

Wygląda na to, że strumienie Java mogą faktycznie oszczędzać bajty! Kto by pomyślał?!

Nie golfowany:

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

  }
}

Edycje:

  1. 200 -> 197: usunięto spację po long[]i usunięto nawias wokół n.

0

Python 3, 129-> 116 bajtów

Wiem, że istnieje krótsza odpowiedź na pytanie 3, ale nadal chciałem wnieść swoje rozwiązanie.

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

To był najlepszy sposób, w jaki mogłem myśleć o przejściu przez wszystkie wartości x i wszystkie wartości y. Byłoby to mile widziane, gdyby ktoś mógł zagrać w golfa w moim podejściu


Dokonaj zamiast listy, a zastąpią ostatnie sprawozdanie z prostym . tsetfort.add(q)
Cristian Ciupitu,


0

Japt -g, 15 bajtów

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

Spróbuj

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
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.