задача
Определите mod-fold как функцию вида f (x) = x% a 1 % a 2 %…% a k , где a a i - положительные целые числа, а k ≥ 0 . (Здесь % - левоассоциативный оператор по модулю.)
Учитывая список из n целых чисел y 0 ,…, y n − 1 , определите, существует ли мод-фолд f так, чтобы каждый y i = f (i) .
Вы можете выбрать и исправить любые два выхода Y и N для вашей функции / программы. Если существует такое f , вы всегда должны возвращать / печатать точно Y ; если нет, то вы всегда должны вернуться / печатать точно N . (Это могут быть true
/ false
, или 1
/ 0
или false
/ true
и т. Д.) Упомяните это в своем ответе.
Самая короткая подача в байтах побеждает.
пример
Определить f (x) = x% 7% 3 . Его значения начинаются:
| x | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | ...
| f(x) | 0 | 1 | 2 | 0 | 1 | 2 | 0 | 0 | 1 | 2 | ...
Таким образом, в 0 1 2 0 1 2 0 0 1 2
качестве входных данных для нашего решения мы напечатали бы Y , так как этот f генерирует эту последовательность. Однако, учитывая в 0 1 0 1 2
качестве входных данных, мы напечатали бы N , так как никакой f не генерирует эту последовательность.
Контрольные примеры
Формулы, заданные, когда вывод Y , просто для справки; Вы не должны ни в коем случае печатать их.
0 1 2 3 4 5 Y (x)
1 N
0 0 0 Y (x%1)
0 1 2 0 1 2 0 0 1 2 Y (x%7%3)
0 0 1 N
0 1 2 3 4 5 6 0 0 1 2 Y (x%8%7)
0 1 2 0 1 2 0 1 2 3 N
0 2 1 0 2 1 0 2 1 N
0 1 0 0 0 1 0 0 0 0 1 Y (x%9%4%3%2)
Ответы:
Pyth, 14 байт
Возвращает
True/False
. Попробуйте онлайн: демонстрация или тестовый наборОбъяснение:
Pyth, 11 байт
Основано на идее @ ferrsum . Я действительно думал об использовании нулевых индексов для генерации подмножества, но не понимал, что все нулевые индексы уже должны быть решением.
источник
Python 3,
239218 байтАнонимная функция, которая принимает ввод списка
z
и возвращаетTrue
илиFalse
дляY
иN
.При этом используется метод , аналогичный @Jakube «s ответ , и , хотя это, по существу , грубая сила, работает очень быстро.
Попробуйте это на Ideone
источник
Python 2, 69 байт
Использует
True
/False
.Ответ на то, что характеризует серию складных модов, оказывается менее интересным, чем кажется на первый взгляд. Это серия вида 0, 1, ..., M - 1, 0, 1, ... x 1 , 0, 1, ..., x 2 , ... такая, что для всех i, 0 <= x i <M. Такая последовательность может быть получена цепочкой мод всех индексов (основанных на 0) нулей в массиве, за исключением первого.
источник
Желе ,
191514 байтВозвращает 1 для правдивых, 0 для ложных. Попробуйте онлайн!
Алгоритм O (n n ) , где n - длина списка, что делает его слишком медленным и требующим большого объема памяти для большинства тестовых случаев.
Модифицированная версия, которая заменяет вторую
L
на5
-, может использоваться для проверки всех тестовых случаев . Обратите внимание, что эта измененная версия не будет работать для произвольно длинных списков.Как это устроено
источник
JavaScript (ES6),
98байтСэкономили 48 байт, переключившись на открытие @ Feersum. Любое заданное значение
n
в массиве либо равно нулю, в этом случае следующий прогнозp
равен 1, либо равно следующему прогнозу, и в этом случаеp
увеличивается. Мы также измеряем длинуl
исходной последовательности, сравниваяp
сi
, посколькуn
всегда должно быть меньше, чемl
за все время.источник
Python 2,
10399 байтОтпечатки 1 для правдивых и 0 для ложных. Проверьте это на Ideone .
источник