Ao receber uma lista de valores e um número inteiro positivo n
, seu código deve gerar o produto cartesiano da lista com os próprios n
horários.
Por exemplo, no pseudocódigo, sua função pode ser semelhante a:
for x1 in list:
for x2 in list:
for x3 in list:
...
for xn in list:
print x1, x2, x3, ... , xn
Exemplo:
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
Funções incorporadas (ou funções de bibliotecas importadas) que computam o produto cartesiano (ou energia) não são permitidas devido ao código resultante ser um pouco chato.
Entradas e saídas devem ser delimitadas, mas podem ser obtidas de qualquer método razoável.
a ordem em que a saída é fornecida não importa, mas duplicatas não são permitidas.
Esta é a primeira vez que publico uma pergunta, por isso, se fiz algo terrivelmente errado, diga-me.
Respostas:
Haskell , 21 bytes
Experimente online!
fonte
Lisp comum , 146 bytes
Experimente online!
destroçado
fonte
R , 41 bytes
Experimente online!
combn
definitivamente não é um produto cartesiano embutido, pois calcula todas asn
combinações de sua entrada.R , 40 bytes
Experimente online!
expand.grid
provavelmente é um produto cartesiano embutido.fonte
Perl 6 , 16 bytes
Tente
Expulso:
fonte
K (ngn / k) , 10 bytes
Experimente online!
{
}
é uma função com argumentosx
ey
#x
o comprimento dox
y##x
a duração dos temposx
repetidosy
!y##x
todas as tuplas comprimento-y acima de 0,1, ..., comprimento (x) -1 como uma matriz transposta+
transporx@
elementos dex
nesses índicesfonte
APL (Dyalog Classic) ,
1812 bytesExperimente online!
-6 bytes graças a @ngn!
fonte
⍳
com um argumento vector para gerar índices e, em seguida,⍺[ ]
para obter os valores correspondentesRANK ERROR
quando tentei fazer isso.⍺[↑,⍳⍵⍴≢⍺]
Perl 5 , 33 bytes
Experimente online!
fonte
Python 2 ,
6958 bytesExperimente online!
Pega uma lista
a
e um número inteiron
; retorna uma lista de listas.fonte
Ruby , 53 bytes
Experimente online!
Abordagem recursiva, não tão curta, mas com garantia de estar livre de quaisquer embutidos.
É tentador usar métodos de permutação, mas isso provavelmente não conta, e os documentos realmente não garantem a correção da ordem, embora pareça funcionar na prática:
Ruby , 35 bytes
Experimente online!
fonte
Prolog (SWI) , 72 bytes
Experimente online!
fonte
Raquete, 92 bytes
Experimente Online
Ungolfed
fonte
Geléia ,
1197 bytesExperimente online!
Explicação
fonte
Pure Bash (sem utilitários externos), 57
A entrada é fornecida como parâmetros da linha de comando; 1 é
n
, 2 é uma lista separada por vírgula.Experimente online!
fonte
Java 10, 19 + 135 = 154 bytes
Experimente Online
Ungolfed
Agradecimentos
fonte
Object
eList
nos loops for-eachvar
para -4 bytes. Além disso, você pode então mudarSet<List>f
paraList<List>f
eSet o=new HashSet();
devar o=new Stack();
para uma -1 byte adicional. Experimente online.Oracle SQL, 177 bytes
Crie um tipo de coleção (31 bytes):
Em seguida, use a consulta (146 bytes):
Supondo que os parâmetros de entrada estejam na tabela
i
com colunasa
eb
:SQL Fiddle
Resultados :
fonte
Bash , 61 bytes
Experimente online! Achei repetidas seqüências de caracteres e juntei listas com vírgulas surpreendentemente difíceis de fazer no bash.
fonte
Javascript (Nó) , 75 bytes
Função recursiva que envia a lista para o console. Onde
a
está uma matriz vazia ei
é 0 (não tenho certeza se isso ainda está qualificado):Experimente online!
fonte
(m,n,a=[],i=0)=>
JavaScript (SpiderMonkey) , 52 bytes
Experimente online!
fonte
J , 17 bytes
Como funciona?
n
Enumero todos os números de dígitos em um sistema numérico com base no comprimento da lista.Experimente online!
fonte
CJam , 26 bytes
Experimente online!
Se apenas o CJam tivesse comandos de um caractere para produto cartesiano e achatamento.
fonte
Oitava , 38 bytes
Função anônima que recebe um vetor de linha de valores e um número inteiro.
Experimente online!
fonte
Pari / GP , 46 bytes
Experimente online!
fonte