Leyland Numbers

37

Если задано натуральное число n, верните nномер Лейланда .

Номер лейланд

Числа Лейланда являются положительными целыми числами kвида

k = x^y + y^x

Где x,yцелые числа строго больше 1.

Они перечислены в порядке возрастания.

РЕДАКТИРОВАТЬ: @DigitalTrauma предложил включить следующее «определение»:

Представьте, что мы добавляем x^y+y^xв сумку все возможные значения xи yи избегаем дублирования. Затем мы сортируем эту сумку. Сортированная сумка - наша последовательность.

Детали

Вы можете использовать индексацию на основе 0 или 1, что вам больше подходит.

Ваша программа должна быть в состоянии вывести по крайней мере все числа Лейланда меньше, чем максимум 32-разрядных целых чисел со знаком. (Последнее число Лейланда ниже этого предела - 1996813914по индексу 82.)

Контрольные примеры

Первые несколько терминов следующие:

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

A076980 в OEIS, кроме первой записи. Обратите внимание, что из-за этой дополнительной первой записи индексы в OEIS сдвинуты на единицу.

Больше можно найти в b-файле OEIS

flawr
источник
They are enumerated in ascending orderЯ не совсем уверен, что это значит. Не могли бы вы предоставить список х и у?
DJMcMayhem
@DrGreenEggsandIronMan Это означает, 8что раньше 17, а не наоборот.
Утренняя монахиня
3
@DrGreenEggsandIronMan Представьте, что мы добавляем x^y+y^xсумку для всех возможных значений xи yи избегаем дублирования. Затем мы сортируем эту сумку. Сортированная сумка - наша последовательность.
flawr
10
Очень большая сумка у вас там
Луис Мендо
2
@LuisMendo Ask @ HenriLéonLebesgue, и он скажет вам, что эта сумка в основном ничто.
flawr

Ответы:

11

MATL , 16 15 13 байт

Q:Qt!^t!+uSG)

Выход основан на 1.

Попробуйте онлайн!

объяснение

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 uniqueсортирует элементы. Разве это не в MATL тоже?
pajonk
1
@pajonk MATL использует 'stable'флаг uniqueпо умолчанию, так как это более типичное использование.
Suever
@Suever Хорошо, спасибо за разъяснения.
pajonk
1
Я чувствую , что мы используем t!^(где ^можно заменить +, -или любое количество операторов) мотив много. Что, если мы сделали &среднее значение 1 для некоторых из тех, где для вектора он имеет такое поведение?
Suever
@Suever Это отличная идея! Я провел некоторые исследования с вашим сценарием; см. чат
Луис Мендо
5

Haskell, 52 байта

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

Действительно неэффективно. Проверяет каждое натуральное число на число Лейланда, составляя бесконечный список из них. Учитывая вход, принимает этот индексный элемент списка. Использует, чтобы только x,y32 проверяли на 32-битные целые числа.

Одинаковой длины с filter:

r=[2..31]
(filter(`elem`[x^y+y^x|x<-r,y<-r])[0..]!!)
XNOR
источник
В ретроспективе такое очевидное решение, мне оно очень нравится!
flawr
5

Ява 8, 225 221 219 216 206 204 193 192 байта

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 индексированные

-2 байт (221 → 219) , сохраненные путем замены 1996813915с (1L<<31)благодаря @LeakyNun .
-3 байта (219 → 216) благодаря @LeakyNun и @Frozn с чем - то я забыл себя ..
-10 байт (216 → 206) путем изменения Java 7 до 8.
-2 байтов (206 → 204) путем замены ArrayListс Vectorблагодаря @TAsk .
-11 байт (204 → 193) путем удаления s<(1L<<31)&, поскольку вопрос гласит: « по крайней мере, все числа Лейленда меньше максимума 32-разрядных целых чисел со знаком ».
-1 байт (193 → 192) путем изменения Vectorна Stack.

Объяснение:

Попробуй здесь

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 для использования Java
Leaky Nun
Так как вам нужно поддерживать только до 2^31-1(т.е. со знаком int), разве вы не можете поменять кучу longприведений?
AdmBorkBork
1
Быстрые игры в гольф: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);}
Дрянная Монахиня
1
Объявление переменной цикла for.
Дрянная Монахиня
1
Как насчет for (int i = 1, j; ++i < 30;)иfor (j = 1; ++j < 30;)
Frozn
4

Pyth, 17 байт

0 индексированные.

@{Sms^M_Bd^}2+2Q2

Попробуйте онлайн! (Пожалуйста, держите его на 100.)

Как это работает

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

Более медленная версия

1-индексироваться.

e.ffqZs^M_BT^}2Z2

Попробуйте онлайн! (Пожалуйста, держите это в 3.)

Дрянная Монахиня
источник
Поможет ли это создать массив сил [[4,8, ...] [9,27, ...]] и добавить его в транспонирование?
Нил
@ Нил, я так не думаю. Было бы полезно в желе, но не в Pyth. Pyth не автоматически векторизируется.
Утренняя монахиня
Также помогает в MATL, кажется.
Нил
Почему вы держите более медленную версию?
Эрик Outgolfer
4

MATLAB, 58 байт

1-индексированных

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

unique в MATLAB выравнивает и сортирует матрицу.


Спасибо за помощь @FryAmTheEggman и @flawr .

pajonk
источник
3

05AB1E, 20 19 байтов

0 индексированные

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

Разъяснения

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

Попробуйте онлайн

Сохранено 1 байт благодаря @Adnan

Emigna
источник
Очень хорошо! Один совет, ÝÌэто сокращение от >L>.
Аднан
@Adnan: Спасибо! Я не могу поверить, я не думал об этом: P
Emigna
êsorted_uniquified, если это существовало, когда об этом спрашивали.
Волшебная Урна Осьминога
@carusocomputing: боюсь, до недавнего времени он был прослушан.
Emigna
3

Mathematica, 60 48 40 байт

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

Использует индексацию по одному. Unionиспользуется путем применения его между каждой строкой 2D-матрицы, созданной Array. Там,Union будет сведена 2D матрица в список, а также удалены все дубликаты и размещены значения в отсортированном порядке.

Сохранено 8 байт благодаря @ LLlAMnYP .

использование

пример

миль
источник
{#+1,#+1}не требуется, может быть оставлено как {#,#}и {2,2}может быть заменено просто 2.
LLlAMnYP
@LLlAMnYP Спасибо! Не знал, Arrayчто расширит третий аргумент.
миль
Я тоже, но я все равно решил попробовать, и это сработало :)
LLlAMnYP
2

Желе, 14 байт

2 байта благодаря Денису.

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

Попробуйте онлайн! (У меня уходит ~ 1 с на 82) (время O (n ^ 2))

Оригинальный 16-байтовый ответ

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

Попробуйте онлайн! (Берет <1с для меня) (постоянное время)

Дрянная Монахиня
источник
R‘*€¹$+Z$FṢQị@быстрее, короче и не имеет искусственной верхней границы.
Деннис
@ Денис и бьет мой ответ :-P
Луис Мендо
@ Денис, я не понимаю. Как это происходит быстрее, чем второй.
Дрянная Монахиня
Это не быстрее, чем второй. Время выполнения слишком короткое, чтобы получить точное измерение.
Деннис
Теперь 13 байтов :-P
Луис Мендо
2

Утилиты Bash + GNU, 63

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

Индексирование на основе 1. Похоже, что это почти такой же подход, как ответ @ TimmyD . Вместо вложенных циклов расширение bash brace используется для генерации арифметических выражений, которые передаются bcдля оценки.

Ideone.

Цифровая травма
источник
2

Perl 6 ,  60 58  56 байт

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

Тест:

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

Объяснение:

{
  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
  )[$_]
}
Брэд Гилберт b2gills
источник
Разве вы не можете удалить пробелы между sort [и ] 2..31?
Эрик Outgolfer
@ EʀɪᴋᴛʜᴇGᴏʟғᴇʀ Это превратило бы его из вызова подпрограммы sort([...в доступ к массиву термина sort[.... Аналогичная вещь происходит с другим пространством.
Брэд Гилберт b2gills
2

F #, 117 , 104

Хорошо, это короче, чем мой ответ C # по крайней мере.

Сохранено 13 байтов благодаря Риду Копси в чате 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 байт

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

Сохранено 11 байтов благодаря @Neil ... сохранены дополнительные 5 байтов путем реорганизации способа iexвычисления выражения.

Наивный метод, мы просто дважды за цикл от x=2..30и y=2..x. Каждый цикл мы ставим x^y + y^xна конвейер. Это 30было выбрано экспериментально, чтобы гарантировать, что мы охватили все случаи меньше, чем 2^31-1;-). Мы доставим их по трубам, Sort-Objectчтобы они по возрастанию. Выход индексируется с нуля на основе ввода $args[0].

Да, здесь генерируется много посторонних записей - этот алгоритм на самом деле генерирует 435 чисел Лейланда - но вещи выше индекса 81не гарантируют быть точными и в порядке (могут быть некоторые, которые пропускаются).

Примеры

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
источник
2

R, 58 54 байта

1-индексироваться. Исключено 4 байта при использовании pryr::rвместо function.

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

объяснение

Для всех чисел от 2 до 99 и от 2 до 9,

                  2:99,2:9

применить функцию x^y+y^x. Это создает матрицу 98x8.

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

Отсортируйте эту матрицу (приведя ее к вектору):

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

Удалите все неуникальные значения:

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

Прочитайте nиз stdin и получите nномер из списка:

unique(sort(outer(2:99,2:9,pryr::f(x^y+y^x))))[scan()]
rturnbull
источник
2

JavaScript (Firefox 42-57), 94 байта

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, потому что он использует как массивы, так и возведения в степень ( [for(..of..)]и **).

Нил
источник
Разве вы не должны просто пометить его как ES7?
mbomb007
@ mbomb007 Не думаю, что [for...of]добрался до ES7.
Нил
Нет, это for(..of..)не так [for(..of..)].
Нил
1

Haskell, 99 98 96 95 94 байта

Вероятно, это легко превзойти, но это было лучшее, что я смог придумать.

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
источник
import Data.List fn | w <- [2..toEnum $ n + 3] = (сортировка $ nub [x ^ y + y ^ x | x <-w, y <-w]) !! n Знаете ли вы зачем нужен toInteger / toEnum?
Дэмиен
Вау, это безумие =) Не стесняйтесь добавлять его как свой собственный ответ, так как он довольно отличается от моего! Если мы опускаем toIntegerв моем решении, у нас будет переполнение, используя int, потому что мы работаем намного выше ( n+3вместо n) при работе со списком. В противном случае нам нужно было бы жестко закодировать первые четыре условия или около того. Что именно делает toEnumв вашем решении?
flawr
Хорошо, это из-за (!!) оператора, который связывает n с Int. Поскольку предполагается, что n меньше 82, w можно заменить на [2..99], например, и f=(sort(nub[x^y+y^x|x<-[2..99],y<-[2..x]])!!). toEnumпреобразует Int в Enum, а Integer является экземпляром класса Enum, поэтому toEnum здесь преобразует n + 3 в Integer.
Дэмиен
1

Python 3, 76 69 байт

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

0 индексированные.

https://repl.it/C2SA

atlasologist
источник
2
Это нормально, просто написать свой ответ какr=range(2,32) lambda n:sorted(…)[n]
Линн
1

C #, 141 , 127 байтов.

Ох, с #, ты такой длинный язык.

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

Это лямбда, которую нужно назначить для delegate double del(int n);запуска, как таковой:

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
Все еще короче, чем Java .
flawr
@ flawr Wooooooo?
Морган Трепп
Я ничего не знаю о C #, но не могли бы вы сохранить Enumerable.Range(в переменную / функцию / итератор / что-либо с более коротким именем для reuisng?
flawr
Я мог бы, но тогда мне нужно было бы включить определение класса и типа, которое в итоге стоило бы мне тонну.
Морган Трепп
1

SQL (PostgreSQL 9.4), 171 байт

Сделано как подготовленное заявление. Создайте пару рядов 2 - 99, скрестите их и выполните уравнение. Плотно ранжируйте результаты, чтобы проиндексировать их и выбрать первый результат, который имеет ранг целочисленного ввода.

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

Выполнено следующим образом

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

Это оказалось намного быстрее, чем я ожидал

MickyT
источник
1

J, 29 байт

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

Использует индексирование на основе одного. Конверсия из моего решения Mathematica .

Истинный секрет здесь в том, что у меня есть :(^+^~) на моей стороне.

использование

   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

объяснение

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

Более серьезно,

<:{[:/:~@~.@,[:(^+^~)"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
миль
источник
... Прибыль : D
flawr
1

Swift 3, 138 байт

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

Код без правил

Попробуй здесь

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
источник
1
Добро пожаловать в программирование головоломок и Code Golf! Хороший первый ответ, но было бы лучше, если бы вы могли объяснить, что происходит.
clismique
1

Аксиома 148 байт

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)

какой-то пример

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]

Тип: список целых

RosLuP
источник
0

J, 38 31 байт

0 индексированные.

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

использование

>> f =: ((#~~:)/:~,/(+|:)^/~2+i.29x){~[
>> f 81
<< 1996813914
Дрянная Монахиня
источник
0

Ява, 200 197 байт

0 индексированные

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 могут на самом деле сохранить байты! Кто бы мог подумать ?!

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

  }
}

Редактирование:

  1. 200 -> 197: убрал пробел после long[]и удалил круглые скобки n.
Оливье Грегуар
источник
0

Python 3, 129-> 116 байт

Я знаю, что есть более короткий ответ по Python 3, но я все еще хотел предложить свое решение.

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

Это был лучший способ, который я мог придумать для обработки всех значений для x и всех значений для y. Если кто-то может поиграть в гольф мой подход был бы оценен

Джордж
источник
Сделать вместо списка, и заменить последние заявления с равниной . tsetfort.add(q)
Кристиан Чиупиту
0

Japt -g, 15 байт

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

Попытайся

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
мохнатый
источник