Если задано натуральное число 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
They are enumerated in ascending order
Я не совсем уверен, что это значит. Не могли бы вы предоставить список х и у?8
что раньше17
, а не наоборот.x^y+y^x
сумку для всех возможных значенийx
иy
и избегаем дублирования. Затем мы сортируем эту сумку. Сортированная сумка - наша последовательность.Ответы:
MATL ,
161513 байтВыход основан на 1.
Попробуйте онлайн!
объяснение
источник
unique
сортирует элементы. Разве это не в MATL тоже?'stable'
флагunique
по умолчанию, так как это более типичное использование.t!^
(где^
можно заменить+
,-
или любое количество операторов) мотив много. Что, если мы сделали&
среднее значение 1 для некоторых из тех, где для вектора он имеет такое поведение?Haskell, 52 байта
Действительно неэффективно. Проверяет каждое натуральное число на число Лейланда, составляя бесконечный список из них. Учитывая вход, принимает этот индексный элемент списка. Использует, чтобы только
x,y
32 проверяли на 32-битные целые числа.Одинаковой длины с
filter
:источник
Ява 8,
225221219216206204193192 байта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
.Объяснение:
Попробуй здесь
источник
2^31-1
(т.е. со знаком int), разве вы не можете поменять кучуlong
приведений?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;)
иfor (j = 1; ++j < 30;)
Pyth, 17 байт
0 индексированные.
Попробуйте онлайн! (Пожалуйста, держите его на 100.)
Как это работает
Более медленная версия
1-индексироваться.
Попробуйте онлайн! (Пожалуйста, держите это в 3.)
источник
MATLAB, 58 байт
1-индексированных
unique
в MATLAB выравнивает и сортирует матрицу.Спасибо за помощь @FryAmTheEggman и @flawr .
источник
05AB1E,
2019 байтов0 индексированные
Разъяснения
Попробуйте онлайн
Сохранено 1 байт благодаря @Adnan
источник
ÝÌ
это сокращение от>L>
.ê
sorted_uniquified, если это существовало, когда об этом спрашивали.Mathematica,
604840 байтИспользует индексацию по одному.
Union
используется путем применения его между каждой строкой 2D-матрицы, созданнойArray
. Там,Union
будет сведена 2D матрица в список, а также удалены все дубликаты и размещены значения в отсортированном порядке.Сохранено 8 байт благодаря @ LLlAMnYP .
использование
источник
{#+1,#+1}
не требуется, может быть оставлено как{#,#}
и{2,2}
может быть заменено просто2
.Array
что расширит третий аргумент.Желе, 14 байт
2 байта благодаря Денису.
Попробуйте онлайн! (У меня уходит ~ 1 с на 82) (время O (n ^ 2))
Оригинальный 16-байтовый ответ
Попробуйте онлайн! (Берет <1с для меня) (постоянное время)
источник
R‘*€¹$+Z$FṢQị@
быстрее, короче и не имеет искусственной верхней границы.Утилиты Bash + GNU, 63
Индексирование на основе 1. Похоже, что это почти такой же подход, как ответ @ TimmyD . Вместо вложенных циклов расширение bash brace используется для генерации арифметических выражений, которые передаются
bc
для оценки.Ideone.
источник
Perl 6 ,
60 5856 байтТест:
Объяснение:
источник
sort [
и] 2..31
?sort([...
в доступ к массиву терминаsort[...
. Аналогичная вещь происходит с другим пространством.F #,
117, 104Хорошо, это короче, чем мой ответ C # по крайней мере.
Сохранено 13 байтов благодаря Риду Копси в чате F #.
источник
PowerShell v2 +,
847368 байтСохранено 11 байтов благодаря @Neil ... сохранены дополнительные 5 байтов путем реорганизации способа
iex
вычисления выражения.Наивный метод, мы просто дважды за цикл от
x=2..30
иy=2..x
. Каждый цикл мы ставимx^y + y^x
на конвейер. Это30
было выбрано экспериментально, чтобы гарантировать, что мы охватили все случаи меньше, чем2^31-1
;-). Мы доставим их по трубам,Sort-Object
чтобы они по возрастанию. Выход индексируется с нуля на основе ввода$args[0]
.Да, здесь генерируется много посторонних записей - этот алгоритм на самом деле генерирует 435 чисел Лейланда - но вещи выше индекса
81
не гарантируют быть точными и в порядке (могут быть некоторые, которые пропускаются).Примеры
источник
R,
5854 байта1-индексироваться. Исключено 4 байта при использовании
pryr::r
вместоfunction
.объяснение
Для всех чисел от 2 до 99 и от 2 до 9,
применить функцию
x^y+y^x
. Это создает матрицу 98x8.Отсортируйте эту матрицу (приведя ее к вектору):
Удалите все неуникальные значения:
Прочитайте
n
из stdin и получитеn
номер из списка:источник
JavaScript (Firefox 42-57), 94 байта
Требуется Firefox 42, потому что он использует как массивы, так и возведения в степень (
[for(..of..)]
и**
).источник
[for...of]
добрался до ES7.for(..of..)
не так[for(..of..)]
.Haskell,
9998969594 байтаВероятно, это легко превзойти, но это было лучшее, что я смог придумать.
источник
toInteger
в моем решении, у нас будет переполнение, используяint
, потому что мы работаем намного выше (n+3
вместоn
) при работе со списком. В противном случае нам нужно было бы жестко закодировать первые четыре условия или около того. Что именно делаетtoEnum
в вашем решении?f=(sort(nub[x^y+y^x|x<-[2..99],y<-[2..x]])!!)
.toEnum
преобразует Int в Enum, а Integer является экземпляром класса Enum, поэтому toEnum здесь преобразует n + 3 в Integer.Python 3,
7669 байт0 индексированные.
https://repl.it/C2SA
источник
r=range(2,32)
lambda n:sorted(…)[n]
C #,
141, 127 байтов.Ох, с #, ты такой длинный язык.
Это лямбда, которую нужно назначить для
delegate double del(int n);
запуска, как таковой:источник
Enumerable.Range(
в переменную / функцию / итератор / что-либо с более коротким именем для reuisng?SQL (PostgreSQL 9.4), 171 байт
Сделано как подготовленное заявление. Создайте пару рядов 2 - 99, скрестите их и выполните уравнение. Плотно ранжируйте результаты, чтобы проиндексировать их и выбрать первый результат, который имеет ранг целочисленного ввода.
Выполнено следующим образом
Это оказалось намного быстрее, чем я ожидал
источник
J, 29 байт
Использует индексирование на основе одного. Конверсия из моего решения Mathematica .
Истинный секрет здесь в том, что у меня есть
:(^+^~)
на моей стороне.использование
объяснение
Более серьезно,
источник
Swift 3, 138 байт
Код без правил
Попробуй здесь
источник
Аксиома 148 байт
какой-то пример
Тип: список целых
источник
Perl 5 , 70 + 1 (-p) = 71 байт
Попробуйте онлайн!
источник
Рубин ,
6258 байтПопробуйте онлайн!
источник
J,
3831 байт0 индексированные.
использование
источник
Ява,
200197 байт0 индексированные
Похоже, потоки Java могут на самом деле сохранить байты! Кто бы мог подумать ?!
Ungolfed:
Редактирование:
long[]
и удалил круглые скобкиn
.источник
Python 3, 129-> 116 байт
Я знаю, что есть более короткий ответ по Python 3, но я все еще хотел предложить свое решение.
Это был лучший способ, который я мог придумать для обработки всех значений для x и всех значений для y. Если кто-то может поиграть в гольф мой подход был бы оценен
источник
t
set
for
t.add(q)
APL (Дьялог) , 27 байт
Попробуйте онлайн!
источник
Japt
-g
, 15 байтПопытайся
источник