Ваша задача состоит в том, чтобы при заданных двух натуральных числах и вернуть первые числа в последовательности инкрементных диапазонов.
Последовательность инкрементного диапазона сначала генерирует диапазон от одного до включительно. Например, если бы было , он сгенерировал бы список . Затем он многократно добавляет последние значений, увеличенных на к существующему списку и продолжает.
Вход например:
n=3
1. Get range 1 to n. List: [1,2,3]
2. Get the last n values of the list. List: [1,2,3]. Last n=3 values: [1,2,3].
3. Increment the last n values by 1. List: [1,2,3]. Last n values: [2,3,4].
4. Append the last n values incremented to the list. List: [1,2,3,2,3,4]
5. Repeat steps 2-5. 2nd time repeat shown below.
2nd repeat:
2. Get the last n values of the list. List: [1,2,3,2,3,4]. Last n=3 values: [2,3,4]
3. Increment the last n values by 1. List: [1,2,3,2,3,4]. Last n values: [3,4,5].
4. Append the last n values incremented to the list. List: [1,2,3,2,3,4,3,4,5]
Тестовые случаи:
n, x, Output
1, 49, [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49]
2, 100, [1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,14,14,15,15,16,16,17,17,18,18,19,19,20,20,21,21,22,22,23,23,24,24,25,25,26,26,27,27,28,28,29,29,30,30,31,31,32,32,33,33,34,34,35,35,36,36,37,37,38,38,39,39,40,40,41,41,42,42,43,43,44,44,45,45,46,46,47,47,48,48,49,49,50,50,51]
3, 13, [1,2,3,2,3,4,3,4,5,4,5,6,5]
/
с//
Желе , 4 байта
Диадическая ссылка, принимающая два положительных целых числа
x
слева иn
справа, которая выдает список положительных целых чисел.Попробуйте онлайн!
Как?
источник
p
...R , 33 байта
Попробуйте онлайн!
Порты решения Джонатана Аллана Python .
R , 36 байт
Попробуйте онлайн!
Мое оригинальное решение; генерирует матрицуn×x с каждым столбцом в качестве приращений, т. е. 1…n,2…n+1,… , затем принимает первые x записей (спускаясь вниз по столбцам).
источник
05AB1E , 6 байтов
Порт @JonathanAllan 's Jelly ответ , так что обязательно проголосуйте за него!
Первый входx , второй вход n .
Попробуйте онлайн или проверьте все контрольные примеры .
Объяснение:
Мой собственный первоначальный подход был 8 байтов :
Первый входn , второй вход x .
Попробуйте онлайн или проверьте все контрольные примеры .
Объяснение:
источник
Perl 6 , 18 байт
Попробуйте онлайн!
Функция карри
f(x)(n)
.объяснение
источник
Brain-Flak , 100 байт
С комментариями и форматированием:
Попробуйте онлайн!
источник
J ,
1312 байтПопробуйте онлайн!
как
Берём
x
за левый арг,n
за правый. Давайте возьмемx = 8
иn = 3
для этого примера:+/&i.
: Преобразование обоих аргументов путем создания целочисленных диапазоновi.
, то есть левого аргумента становится,0 1 2 3 4 5 6 7
а правого аргумента становится0 1 2
. Теперь мы создаем "таблицу сложения+/
из этих двух:1 +
: Добавить 1 к каждому элементу этой таблицы:[: ,
: Свести это,
:[ $
: Сформируйте его$
так, чтобы оно имело то же количество элементов, что и исходный нетрансформированный левый аргумент[
, то естьx
:источник
Октава , 25 байт
Анонимная функция, которая вводит числа
n
иx
, и выводит вектор строки.Попробуйте онлайн!
Как это устроено
Рассмотрим
n=3
иx=13
.Код
(1:n)'
дает вектор столбцаЗатем
(0:x)
дает вектор строкиДополнение
(1:n)'+(0:x)
поэлементно с широковещательной передачей, и поэтому оно дает матрицу со всеми парами сумм:Индексирование с
(1:x)
возвращает первыеx
элементы этой матрицы в линейном порядке по главному столбцу (вниз, затем поперек) в виде вектора строки:источник
Haskell , 31 байт
Попробуйте онлайн!
Это может быть мой любимый вид рекурсии. Мы начинаем со значений от 1 до n, а затем объединяем те же самые значения (через самоссылку) +1. тогда мы просто берем первые значения х.
источник
Forth (gforth) , 34 байта
Попробуйте онлайн!
Код Объяснение
источник
MATL ,
16, 10 байтПопробуйте онлайн!
-6 байтов сэкономлено благодаря Гизеппе и Луису Мендо!
Объяснение:
источник
Gaia , 8 байт
Попробуйте онлайн!
Делает в основном то же самое, что и ответы Octave и MATL .
источник
Желе , 5 байт
Попробуйте онлайн!
источник
Рубин , 32 байта
Попробуйте онлайн!
источник
Japt
-m
,127 байтПорт Джонатана Python решение .
Принимает
x
в качестве первого входа.Попытайся
источник
JavaScript, 36 байт
Попробуйте онлайн!
источник
alert
илиprint
вместо возврата массив может уменьшить это до 34 байт:n=>g=x=>x&&print(g(--x)|1+x%n+x/n)
Perl 5
-na
, 43 байтаПопробуйте онлайн!
источник
K (ок) ,
1716 байтПопробуйте онлайн!
источник
Stax , 6 байт
Запустите и отладьте его
Распаковал и объяснил:
источник
Алхимик , 77 байт
Попробуйте онлайн!
Увеличивает и выводит счетчик n раз, затем вычитает n-1 перед повторением.
источник
Древесный уголь , 18 байт
Попробуйте онлайн! Ссылка на подробную версию кода. Я мечтал заполнить список с нулевым индексом, а затем снова обрезать его, но на самом деле это было на 2 байта длиннее. Объяснение:
источник
JS, 54 байта
Попробуйте онлайн!
источник
f=
. Вы можете сохранить один байт, каррируя параметры (n=>x=>
), а другой - распространяя и отображая массив ([...Array(x)].map()
).Haskell,
3433 байтаПопробуйте онлайн!
источник
Perl 5 , 39 байт
Попробуйте онлайн!
источник
C (gcc) ,
4944 байтаИспользование рекурсии для сохранения нескольких байтов.
Попробуйте онлайн!
источник
APL + WIN,
29 2316 байтИндекс origin = 0 и запрашивает n и x
Попробуйте онлайн! Предоставлено Dyalog Classic
источник
C (лязг), 843 байта
источник
argc
,argv
иranges
). Кроме того, нет необходимости добавлять какие-либо предупреждающие сообщения. Вы можете предполагать, что ввод действителен, если в запросе не указано иное.Значок , 48 байт
Попробуйте онлайн!
источник
C # (интерактивный компилятор Visual C #) , 41 байт
Попробуйте онлайн!
источник
Фактор , 55 байт
Попробуйте онлайн!
источник