Objetivo
Classifique uma lista de itens, garantindo que cada item seja listado após suas dependências especificadas.
Entrada
Uma matriz de matrizes de números inteiros, em que cada número inteiro especifica o índice com base em 0 ou em 1 de outro item que esse item deve vir depois. A entrada pode ser uma matriz ou string ou qualquer outra coisa legível por humanos.
Por exemplo, uma entrada baseada em 0:
[
[ 2 ], // item 0 comes after item 2
[ 0, 3 ], // item 1 comes after item 0 and 3
[ ], // item 2 comes anywhere
[ 2 ] // item 3 comes after item 2
]
Suponha que não haja dependências circulares, sempre há pelo menos um pedido válido.
Resultado
Os números em ordem de dependência. Uma ordem ambígua não precisa ser determinística. A saída pode ser uma matriz ou texto ou qualquer outra coisa legível por humanos.
Somente um pedido deve ser fornecido na saída, mesmo quando houver vários pedidos válidos.
As saídas possíveis para a entrada acima incluem:
[ 2, 3, 0, 1 ]
[ 2, 0, 3, 1 ]
Pontuação
Uma função ou programa que conclua isso no menor número de bytes ganha a glória da aceitação. O prazo é de 6 dias.