Иногда, чтобы заснуть, я буду считать настолько высоко, насколько смогу, пропуская числа, которые не являются квадратными . Я получаю немного острых ощущений, когда пропускаю несколько чисел подряд - например, 48,49,50
все они НЕ квадратичные (48 делится на 2 ^ 2, 49 на 7 ^ 2 и 50 на 5 ^ 2).
Это заставило меня задуматься о самом раннем примере смежных чисел, которые делятся на произвольную последовательность делителей.
вход
Ввод - это упорядоченный список a = [a_0, a_1, ...]
строго положительных целых чисел, содержащий как минимум 1 элемент.
Выход
Выход - это наименьшее положительное целое число n
со свойством, которое a_0
делит n
, a_1
делит n+1
и, в общем, a_k
делит n+k
. Если такого не n
существует, поведение функции / программы не определено.
Тестовые случаи
[15] -> 15
[3,4,5] -> 3
[5,4,3] -> 55
[2,3,5,7] -> 158
[4,9,25,49] -> 29348
[11,7,5,3,2] -> 1518
счет
Это код-гольф ; самый короткий результат (для каждого языка) выигрывает право хвастаться. Обычные лазейки исключены.
Ответы:
Wolfram Language (Mathematica) , 51 байт
Попробуйте онлайн!
источник
Шелуха , 7 байт
Попробуйте онлайн!
объяснение
источник
MATL , 11 байт
Попробуйте онлайн!
Не совсем оптимизирован по скорости ... самый большой тестовый цикл занимает целую минуту с использованием MATL и примерно 0,03 с на MATLAB. Существует небольшая вероятность того, что у MATL немного больше накладных расходов.
источник
n:q`QtG\a]1)
12 байт, ноn:
, очевидно, так же, какf
здесь. Я всегда об этом забываю, поэтому вы можете добавить его в качестве альтернативы 11 байтов.fq`QtG\a}@
возвращает постороннюю копию ввода.JavaScript,
4240 байтВыдает ошибку рекурсии, если нет решения (или решение слишком большое).
Сохранено 2 байта с указателем от Рика Хичкока
Попытайся
Введите список номеров через запятую.
источник
[4,9,25,49]
.(a,y=n=0)=>a.some(x=>y++%x)?f(a,++n):n
f=
, хотя.Python 3 , 62 байта
Попробуйте онлайн!
источник
05AB1E , 9 байтов
Попробуйте онлайн!
объяснение
источник
Haskell ,
4544 байтаПопробуйте онлайн!
Редактировать: -1 байт благодаря Ними!
источник
sum(zipWith mod[n..]a)<1
,Чисто , 61 байт
Попробуйте онлайн!
источник
[1..]
вместо того,[0..]
чтобы избегать вывода0
неположительного целого числа для одноэлементных списков.Pyth , 11 байт
Попробуйте онлайн!
источник
2
в конце? Я уверен, что здесь можно сохранить еще кое-что, но я не знаю Пита.2
решает проблемуJ , 23 байта
Попробуйте онлайн!
источник
I.
вернется только 1 результат? Разве не возможно, что есть несколько?R , 51 байт
Попробуйте онлайн!
Использование
any
throwsk
предупреждений о неявном преобразовании вlogical
, гдеk
это возвращаемое значение.источник
l=c(15)
, потомуseq(l)==1:l
что в этом случае.seq
так раздражает!seq_along
слишком длинное.sum
вместо того,any
чтобы избавиться от этих предупреждений, к вашему сведению.Perl 6 , 34 байта
Попробуйте онлайн!
источник
APL (Dyalog Unicode) ,
24 2322 байтаПопробуйте онлайн!
Технически, это молчаливая функция. Я должен был сделать это так, поскольку единственный вход разрешен - это список целых чисел. Использует
⎕IO←0
(0-индексация)Стоит отметить, что функция отключается, если
n
ее не существует.Спасибо @ngn и @ H.PWiz за 1 байт каждый.
Как?
источник
Perl 5 , 49 + 2 (
-pa
) = 51 байтПопробуйте онлайн!
источник
Japt, 10 байт
В конечном итоге будет выводиться,
undefined
если решения не существует, если сначала не произойдет сбой вашего браузера.Попытайся
объяснение
источник
Рубин , 48 байтов
Попробуйте онлайн!
источник
Python 2 , 80 байт
Попробуйте онлайн!
источник
Стандартный ML (MLton) , 96 байт
Попробуйте онлайн!
Ungolfed:
Попробуйте онлайн! Начиная с
n=1
, функцияf
увеличиваетсяn
до тех пор, пока неall
будет выполнено условиеn
возвращается.tabulate(m,g)
с некоторым целым числомm
и функциейg
строит список[g 0, g 1, ..., g m]
. В наших условияхtabulate
вызывается длина входного спискаl
и функция, которая проверяет, делится лиi
элемент th . Это дает список логических значений, поэтому с помощью функции identity проверяется, являются ли все элементы истинными.l
n+i
all
fn x=>x
Я нашел хороший гольф трюк , чтобы сократить тождественную функцию в этом случае четыре байта: Вместо лямбда
(fn x=>x)
, сборка-функцииhd
используются, которая возвращает первый элемент списка, и в результате Bools вtabulate
обернут[
и]
к создавать одиночные списки.источник
PowerShell ,
6562 байтаПопробуйте онлайн!
PowerShell не имеет эквивалента
any
илиsome
подобного, поэтому нам нужен немного другой подход.Это принимает входные данные
$args[0]
в виде массива, а затем входит в бесконечныйfor
цикл. Каждую итерацию мы устанавливаем,$o
чтобы быть1
(объясненный позже), и устанавливаем,$i
чтобы быть++$j
. Инкремент$j
сохраняет вкладки о том, что является первым номером предложенного решения, в то время как$i
будет увеличиваться по сравнению с остальной частью предложенного решения.Затем мы отправляем каждый элемент ввода
$args[0]
вForEach-Object
цикл. Внутри внутреннего цикла мы логически умножаем$o
результат вычисления. Это сделает так, что если вычисление не удастся для значения,$o
переключится на0
. Вычисление!($i++%$_)
, или Булево-нет операции по модулю. Поскольку любое значение, отличное от нуля, является правдивым в PowerShell, это превращает любые остатки в ложное значение, превращаясь, таким образом,$o
в0
.Вне внутреннего цикла,
if
$o
отличного от нуля, мы нашли инкрементное решение, которое работает, поэтому мы выводим$j
иexit
.источник
тинилисп , 108 байт
Последняя строка - это безымянная лямбда-функция, которая принимает список и возвращает целое число. Попробуйте онлайн!
Ungolfed
источник
Юлия 0,6 , 79 байт
Попробуйте онлайн!
Входы без действительного решения вызовут бесконечное зацикливание ... :)
источник
Python 2, 78 байт
РЕДАКТИРОВАТЬ: -26 благодаря @Chas Brown
источник
Желе , 10 байт
Попробуйте онлайн!
источник
APL NARS, 140 байтов, 70 символов
тест
источник
Java 8,
8275 байтОбъяснение:
Попробуйте онлайн.
источник
Рубин ,
47 46 4342 байтаПопробуйте онлайн!
Примечание:
(1..)
синтаксис поддерживается только в ruby 2.6, на данный момент TIO поддерживает только 2.5, поэтому ссылка на более старую версию (43 байта).источник