Учитывая некоторое положительное целое число генерируют все нарушения объектов.
Детали
- Нарушение - это перестановка без фиксированной точки. (Это означает, что в каждом номере расстройства не могу быть в записи).
- Вывод должен состоять из отклонений чисел (или альтернативно ).
- Вы можете альтернативно всегда печатать из расстройств (или ( п - 1 , п - 2 , ... , 1 , 0 ) , соответственно) , но вы должны указать так.
- Выходные данные должны быть детерминированными, то есть всякий раз, когда программа вызывается с некоторым заданным качестве входных данных, выходные данные должны быть одинаковыми (что подразумевает, что порядок неисправностей должен оставаться неизменным), и полный вывод должен быть выполнен в течение ограниченное количество времени каждый раз (этого недостаточно для вероятности 1).
- Для некоторого заданного вы можете сгенерировать все отклонения или, альтернативно, вы можете взять другое целое число которое служит индексом, и вывести отклонение (в выбранном вами порядке).
Примеры
Обратите внимание, что порядок неисправностей не должен быть таким, как указано здесь:
n=2: (2,1)
n=3: (2,3,1),(3,1,2)
n=4: (2,1,4,3),(2,3,4,1),(2,4,1,3), (3,1,4,2),(3,4,1,2),(3,4,2,1), (4,1,2,3),(4,3,1,2),(4,3,2,1)
OEIS A000166 подсчитывает количество неисправностей.
Ответы:
Желе , 6 байт
Монадическая ссылка, принимающая положительное целое число, которое выдает список списков целых чисел.
Попробуйте онлайн!
Как?
источник
Брахилог , 9 байт
Попробуйте онлайн!
Это генератор, который выводит одно расстройство
[0, …, n-1]
данныхn
.Если мы завернем это в
ᶠ - findall
обернем метапредикат, мы получим все возможные поколения расстройств от генератора.объяснение
источник
JavaScript (V8) , 85 байт
Рекурсивная функция, печатающая все неисправности на основе 0.
Попробуйте онлайн!
комментарии
источник
Рубин , 55 байт
Попробуйте онлайн!
Генерирует все 0 основанные неисправности
источник
05AB1E , 9 байтов
Попробуйте онлайн!
объяснение
источник
Wolfram Language (Mathematica) , 55 байтов
Попробуйте онлайн!
источник
Japt , 8 байт
0 на основе
Попробуйте (нижний колонтитул увеличивает все элементы для упрощения сравнения с контрольными примерами)
источник
Python 2 , 102 байта
Попробуйте онлайн!
Индексирование на основе 0, список кортежей.
Non-
itertools
основанное решение:Python 2 , 107 байт
Попробуйте онлайн!
Индексирование на основе 0, строки списков, полная программа.
Примечание. Это решение, даже несмотря на то, что оно не импортирует
itertools
библиотеку, не намного дольше, чем другое, которое импортирует ее, потому что большая часть этого объема строит перестановки. Проверка неисправности действительно составляет около 7 дополнительных байтов! Причина в том, что проверка выполняется на лету как часть построения каждой перестановки. Это не верно для другого решения, где вы должны проверить, является ли каждая перестановка, возвращаемаяitertools.permutations
функцией, на самом деле отклонением, и, конечно, само отображение занимает много байтов.источник
MATL , 11 байт
Это создает все нарушения в лексикографическом порядке.
Попробуйте онлайн!
Пояснение с примером
Рассмотрим ввод
3
.источник
Perl 5
-MList::Util=none -n
,10089 байтПопробуйте онлайн!
источник
Haskell , 58 байт
Попробуйте онлайн!
60 байт
Попробуйте онлайн!
источник
Gaia , 10 байт
Попробуйте онлайн!
источник
J , 26 байт
Попробуйте онлайн!
источник
R ,
8180 байтПопробуйте онлайн!
Возвращает( н2N) Возможные значения в качестве размерно
list
содержащий все неисправности. Очень неэффективно, так как генерируетn
комбинаций[1..n]
повторяющихсяn
раз, а затем фильтры для перестановок1:n%in%x
и расстройств,1:n-x
.R + gtools , 62 байта
Попробуйте онлайн!
Гораздо эффективнее, возвращает
matrix
где каждая строка является нарушением.источник
Python 3.8 (предварительная версия) , 96 байт
Попробуйте онлайн!
источник
C ++ (gcc) ,
207196 байт-5 байт от потолочного кота -6 байт от Романа Одайского
Попробуйте онлайн!
источник
std::copy
аналогично, поручают вызывающей стороне предоставлять достаточное пространство для вывода.C ++ (gcc) , 133 байта
Я думаю, что это достаточно сильно отличается от других представлений, чтобы заслужить отдельный ответ. Наконец, использование для
index[array]
синтаксиса наизнанку!Попробуйте онлайн!
источник
Haskell, 76 байт
источник
Python 2 , 82 байта
Попробуйте онлайн!
88 байтов как программа:
Попробуйте онлайн!
93 байта, используя itertools:
Попробуйте онлайн!
источник
Perl 6 ,
4937 байтИзменить: После некоторого перемотки с Филом Н мы сократили его до 37 байт:
Попробуйте онлайн!
Используя
Whatever
в начале, мы можем избежать скобок (экономит 2 символа). Далее используйтеZ
метаоператор с-
которого берется каждый элемент перестановки (например, 2,3,1) и вычитается 0,1,2 по порядку. Если какой-либо из них равен 0 (ложно), то весь переход не выполняется.Оригинальное решение было ( Попробуйте онлайн! )
источник
Древесный уголь ,
4428 байтвычеркнул 44 все еще регулярно 44
Попробуйте онлайн! Ссылка на подробную версию кода. Свободно основанный на не-itertools @ EricTheOutgolfer ответ. Объяснение:
источник
C (gcc) ,
187180 байтПопробуйте онлайн!
источник
Pyth , 12 байт
Попробуйте онлайн!
Фильтр работает следующим образом: если какой-либо элемент находится в исходном месте, (element-index) будет равен 0, а весь продукт будет равен 0, и, следовательно, будет ложным.
источник