Ваша программа должна принять входные данные ( n
для целей описания) и вывести все перестановки числа, n
состоящего из цифр длиной без повторяющихся цифр, где каждая из предшествующих цифр и включая ее индекс делятся на место в числе, на которое она падает ,
Вы можете прочитать о магических числах здесь .
Правила:
1 <= n <= 10
- Никакие цифры не могут повторяться
- Должен присутствовать начальный 0 (если применимо)
- 1 - го по
x
го разряда числа (начиная с первым символом , как 1) должна быть кратнаx
, т.е.30685
,3
делится на 1,30
делится на 2,306
делится на 3,3068
делится на 4, и30685
это divislbe к 5 , - Программа должна принимать целое число в качестве входных данных (через командную строку, аргумент функции и т. Д.) И печатать все перестановки, которые удовлетворяют правилам.
- Выходные данные должны быть разделены 1 или более пробелом
- Перестановки могут начинаться и с нуля (поэтому они не являются технически магическими числами).
- Порядок вывода не имеет значения
- Вам не нужно обрабатывать неожиданный ввод
- Наименьшие символы в байтах побеждают
Примеры
Дано 1:
0
1
2
3
4
5
6
7
8
9
Дано 2:
02
04
06
08
10
12
14
16
18
20
24
26
28
30
32
34
36
38
40
42
46
48
50
52
54
56
58
60
62
64
68
70
72
74
76
78
80
82
84
86
90
92
94
96
98
Дано 10:
3816547290
Благодарим Pizza Hut & John H. Conway за оригинальную головоломку (вариант A). Спасибо @Mego и @ sp3000 за их ссылки .
code-golf
permutations
DavisDude
источник
источник
Ответы:
Желе ,
201716 байтЭто очень медленно и требует много памяти ... Попробуйте онлайн!
Как это устроено
источник
JavaScript (Firefox 30-57), 77 байт
Редактировать: 1 байт сохранен благодаря @ edc65.
источник
...of"012...
Pyth, 19 байт
демонстрация
Решение грубой силы. Объяснение, чтобы следовать. Вдохновение благодаря FryAmTheEggman
22 байта
демонстрация
Числа строятся и хранятся в виде строк и преобразуются только в целые, чтобы проверить делимость.
Объяснение:
источник
._
и некоторыми другими вещами, но для больших входов это работает медленнее:jjLkf!s.e%ib10hk._T.PUT
MATL , 30 байт
Попробуйте онлайн!
Это очень медленно. Для
input 3
этого требуется несколько секунд в онлайн-компиляторе. Чтобы увидеть числа, появляющиеся один за другим, включитеD
в конце кода .объяснение
источник
3
я вижу, у вас есть пара признаков (например, 026). Также будет приветствоваться объяснениеРубин, 87 байт
Основное рекурсивное решение.
Если вам разрешено возвращать список перестановок вместо печати, 85 байтов:
источник
Python, 132 байта
Избавившись от 26 байтов
itertools
, спасибо Sp3000 за то, что я понял, что не должен его использовать.Удалил 2 байта, используя понимание списка, а не
filter
снова, спасибо Sp3000 за подсказку.Попробуйте онлайн: Python 2 , Python 3
источник