Когда вам дан список значений и положительное целое число n
, ваш код должен вывести декартово произведение списка вместе с его n
временами.
Например, в псевдокоде ваша функция может быть похожа на:
for x1 in list:
for x2 in list:
for x3 in list:
...
for xn in list:
print x1, x2, x3, ... , xn
Пример:
repeated_cart([1,2,3], 3)
1 1 1
1 1 2
1 1 3
1 2 1
1 2 2
1 2 3
1 3 1
1 3 2
1 3 3
2 1 1
2 1 2
2 1 3
2 2 1
2 2 2
2 2 3
2 3 1
2 3 2
2 3 3
3 1 1
3 1 2
3 1 3
3 2 1
3 2 2
3 2 3
3 3 1
3 3 2
3 3 3
Встроенные функции (или функции из импортированных библиотек), которые вычисляют декартово произведение (или мощность), не допускаются из-за того, что полученный код несколько скучен.
Входы и выходы должны быть разделены, но могут быть приняты любым разумным способом.
порядок вывода результатов не имеет значения, но дубликаты не допускаются.
Я впервые пишу вопрос, поэтому, если я сделал что-то ужасно неправильно, пожалуйста, сообщите мне.
Ответы:
Haskell , 21 байт
Попробуйте онлайн!
источник
Common Lisp , 146 байт
Попробуйте онлайн!
ungolfed
источник
R , 41 байт
Попробуйте онлайн!
combn
это определенно не декартово встроенное произведение, так как оно вычисляет всеn
комбинации его входных данных.R , 40 байт
Попробуйте онлайн!
expand.grid
вероятно, декартово произведение встроено.источник
Perl 6 , 16 байт
Попробуй это
Expnded:
источник
K (нгн / к) , 10 байтов
Попробуйте онлайн!
{
}
это функция с аргументамиx
иy
#x
длинаx
y##x
длинаx
повторяющихсяy
времен!y##x
все кортежи длины y более 0,1, ..., length (x) -1 в качестве транспонированной матрицы+
транспонированияx@
элементыx
по этим показателямисточник
APL (Dyalog Classic) ,
1812 байтПопробуйте онлайн!
-6 байт благодаря @ngn!
источник
⍳
с векторным аргументом для генерации индексов, а затем⍺[ ]
для получения соответствующих значенийRANK ERROR
когда я пытался это сделать.⍺[↑,⍳⍵⍴≢⍺]
Perl 5 , 33 байта
Попробуйте онлайн!
источник
Python 2 ,
6958 байтПопробуйте онлайн!
Принимает список
a
и целое числоn
; возвращает список списков.источник
Рубин , 53 байта
Попробуйте онлайн!
Рекурсивный подход, не такой короткий, но гарантированно свободный от каких-либо встроенных функций.
Заманчиво использовать методы перестановки, но это, вероятно, не считается, и документы фактически не дают никаких гарантий правильности порядка, хотя, кажется, работают на практике:
Рубин , 35 байт
Попробуйте онлайн!
источник
Пролог (SWI) , 72 байта
Попробуйте онлайн!
источник
Ракетка, 92 байта
Попробуйте онлайн
Ungolfed
источник
Желе ,
1197 байтПопробуйте онлайн!
объяснение
источник
Pure Bash (без внешних утилит), 57
Ввод дается в качестве параметров командной строки; 1-й
n
, 2-й - список через запятую.Попробуйте онлайн!
источник
Java 10, 19 + 135 = 154 байта
Попробуйте онлайн
Ungolfed
Подтверждения
источник
Object
иList
в наличии для каждых петельvar
для -4 байт. Кроме того, вы можете перейтиSet<List>f
кList<List>f
иSet o=new HashSet();
наvar o=new Stack();
дополнительный -1 байт. Попробуйте онлайн.Oracle SQL, 177 байт
Создайте тип коллекции (31 байт):
Затем используйте запрос (146 байт):
Предполагая, что входные параметры находятся в таблице
i
со столбцамиa
иb
:SQL Fiddle
Результаты :
источник
Баш , 61 байт
Попробуйте онлайн! Я нашел повторяющиеся строки и списки с запятыми на удивление трудно сделать в bash.
источник
Javascript (Node) , 75 байт
Рекурсивная функция, которая выводит список на консоль. Где
a
находится пустой массив, и онi
равен 0 (не уверен, что это все еще квалифицируется):Попробуйте онлайн!
источник
(m,n,a=[],i=0)=>
JavaScript (SpiderMonkey) , 52 байта
Попробуйте онлайн!
источник
J , 17 байт
Как это работает?
Я перечисляю все числа
n
-digit в системе счисления с основанием длины списка.Попробуйте онлайн!
источник
CJam , 26 байтов
Попробуйте онлайн!
Если бы только у CJam были односимвольные команды для декартового произведения и сплющивания.
источник
Октава , 38 байт
Анонимная функция, которая принимает вектор-строку значений и целое число.
Попробуйте онлайн!
источник
Пари / ГП , 46 байт
Попробуйте онлайн!
источник