Последовательность целочисленных в диапазоне целых чисел


16

Рассмотрим треугольник , где N - й строки (1-индексированный) является массив из первых N положительных целых степеней N . Вот первые несколько строк:

N | Треугольник

1 | 1
2 | 2 4
3 | 3 9 27
4 | 4 16 64 256
5 | 5 25 125 625 3125
...

Теперь, если мы объединим эти полномочия в одну последовательность, мы получим OEIS A075363 :

1, 2, 4, 3, 9, 27, 4, 16, 64, 256, 5, 25, 125, 625, 3125, 6, 36, 216, 1296, 7776, 46656 ...

Если задано целое число N , ваша задача - вернуть N- й член этой последовательности. Вы можете выбрать либо 0, либо 1 индексирование.

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

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

N -> Выход

1 -> 1
2 -> 2
3 -> 4
5 -> 9
10 -> 256
12 -> 25
15 -> 3125

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

N -> Выход

0 -> 1
1 -> 2
2 -> 4
4 -> 9
9 -> 256
11 -> 25
14 -> 3125

Обратите внимание, что эти лазейки по умолчанию запрещены. Это , поэтому выигрывает самая короткая действительная подача на каждом языке!


Я думаю, что есть некоторые ошибки в тестовых случаях: в 1-индексированном 10 должно быть 256; в 0-индексированном 9 должно быть 256.
Гален Иванов

Можем ли мы иметь конечные пробелы?
Стэн Струм

@StanStrum Да.
г-н Xcoder

Ответы:



7

Шелуха , 7 байт

!ṁṠM^ḣN

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

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

Объяснение:

      N   Get the list of all natural numbers
 ṁ        Map over each n in that list and then concatenate
  Ṡ  ḣ      Create the range [1,n] then ...
   M^       raise n to the power of each
!         Index into that sequence



4

APL (Dyalog) , 15 13 10 байт

3 байта сохранены благодаря @ Adám

⊢⊃∘∊⍳*⍳¨∘⍳

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

Как?

⍳¨∘⍳ - создать диапазон для каждого числа в диапазоне ввода

⍳* - поднять каждое число в диапазоне ввода до соответствующих степеней

- расплющить

⊢⊃ - выберите n-й элемент


При онлайн-проверке код выглядит как 17 байт, и он не принимает скалярный целочисленный аргумент или выдает один целочисленный вывод
Грэм

1
@Graham Online, код присваивается переменной f(таким образом, f←это еще 2 байта, которые здесь не учитываются), и есть тестовая система, которая возвращает результаты из 1в 10.
Эрик Outgolfer

Конечно, вы должны подсчитать все байты, включая любые такие назначения, и те, которые требуются для ввода в соответствии со спецификацией вопроса и для вывода в соответствии со спецификацией. Мой ответ APL запрашивает ввод с экрана.
Грэм

@ Грэхэм, это дьялог APL DFS. Это не требует назначения, которое будет применено к любому входу, выход
Uriel

Исходя из этого, могу ли я предположить, что я могу назначить n в своем рабочем пространстве до запуска APL один вкладыш и тем самым сэкономить 7 байтов, я не уверен, что наши соучастники примут это.
Грэм

3

Желе , 7 байт

*R$€Ẏ⁸ị

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

-1 спасибо мистеру Xcoder .

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


Отличный код прямо здесь.
Джонатан Аллан

Избавившись от причудливого синтаксиса ", мое собственное решение составляет 7 байт:*R$€F⁸ị
Mr. Xcoder,

@ Mr.Xcoder Спасибо, хотя я уже удалил ", но все же. Это то, что вы получаете за то, что изучаете историю: /
Эрик Outgolfer


3

MATL , 9 байт

:t!^RXzG)

Индексирование основано на 1. Попробуйте онлайн! Или проверьте все тестовые случаи .

объяснение

Рассмотрим ввод 5в качестве примера.

:     % Implcit input n. Push range [1 2 ... n]
      % STACK: [1 2 3 4 5]
t!^   % Matrix of all pair-wise powers
      % STACK: [1    2    3    4    5;
                1    4    9   16   25;
                1    8   27   64  125;
                1   16   81  256  625;
                1   32  243 1024 3125]
R     % Upper triangular matrix
      % STACK: [1    2    3    4    5;
                0    4    9   16   25;
                0    0   27   64  125;
                0    0    0  256  625;
                0    0    0    0 3125]
Xz    % Nonzeros. Reads values in column-major order
      % STACK: [1; 2; 4; 3; 9; ...; 625; 3125]
G)    % Get n-th entry (1-based). Implcit display
      % STACK: 9

3

APL (Dyalog) , 14 12 байтов

{⍵⌷∊*∘⍳⍨¨⍳⍵}

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

Использует 1-индексацию

Сохранено 2 байта с ↑,/ → ∊, взяты из ответа Грэма

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


Очень умное использование с .
Адам

@ Adám Спасибо :-)
H.PWiz

{⍵⌷∊*∘⍳⍨¨⍳⍵}⊢⌷∘∊((*∘⍳)⍨¨⍳)⊢⌷∘∊(⍳(*∘⍳)¨⍳)⊢⌷∘∊⍳*∘⍳¨⍳
Адам

Я бы опубликовал это ... если бы я имел представление о том, как это работает
H.PWiz

это молчаливая функция, что к dfn. Между и необходимо , потому что называется monadically, поэтому индексировать зачислен . И мы меняемся f⍨⍳в ⍳ f ⍳избегать вызова F ( *∘⍳¨) monadically (всякий раз , когда и ¨являются смежными, они могут поменять положение).
Адам


2

05AB1E , 9 байт

ƒNDLm`}I@

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

объяснение

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

ƒ           # for N in range [0 ... input]
 N          # push N
  DL        # push range [1 ... N]
    m       # raise N to the power of each in [1 ... N]
     `      # flatten to stack
      }     # end loop
       I@   # get the element at index (input)

Альтернативное решение по списку вместо цикла

ÝεDLm}˜sè

1

Perl 6 , 29 байт

{({|($++X**1..$++)}...*)[$_]}

Проверь это

Expanded:

{  # bare block lambda with implicit parameter 「$_」

  (  # generate the sequence

    {  # code block used to generate each value in the sequence

      |(         # slip the values into the outer sequence

        $++      # post-incremented anonymous state value
        X**      # cross using &infix:«**»
        1 .. $++ # from 1 to post-incremented anonymous state value

      )
    }

    ...          # keep generating values until

    *            # never stop

  )[ $_ ]        # index into the sequence (0-based)
}




0

Вау, ты, должно быть, очень устал сегодня.
Эрик Outgolfer

Я на самом деле очень болен!
Джонатан Аллан

10
Сожалею! Надеюсь, ты скоро поправишься!
Эрик Outgolfer

Кроме того, вот примерно 3 байта, которые мне удалось вытащить из этого тривиально.
Эрик Outgolfer


0

APL + WIN, 23 байта

(∊n↑¨⊂[2]n∘.*n←⍳n)[n←⎕]

Объяснение:

[n←⎕] prompts for screen input and selects the nth element of the concatenated vector
see below

n←⍳n creates a vector of 1 to n

∘.* outer product with exponentiation as the operator

⊂[2] enclose each row of the resulting array as an element of a nested array

∊n↑¨ take 1 to n elements from the 1 to nth row of the matrix and concatenate into a vector

На каком диалекте APL это работает?
Эрик Outgolfer

Это написано в APL + WIN. Я буду разъяснять это в любых будущих ответах
Грэм

Я взял из вашего ответа, чтобы заменить мой ↑,/. Я не знал об этой функции. Спасибо
H.PWiz

@EriktheOutgolfer Я думаю, что это будет работать на любом современном APL.
Адам



0

Clojure 51 байт

0-индексированный, например, ввод 9возвращает 256.0.

#(nth(for[i(range)j(range i)](Math/pow i(inc j)))%)


0

Пыть , 39 37 байт

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

←000`ŕŕ⁺ĐĐř^Đ04Ș↔+⇹Ł-Đ↔3Ș0>łŕ0↔⇹+⁻⦋↔ŕ

Объяснение:

Вкратце, он рассчитывает каждую строку. Если запрошенный номер находится в этой строке, верните его; в противном случае перейдите к следующему ряду.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.