freeCodeCamp/curriculum/challenges/spanish/08-coding-interview-prep/rosetta-code/topological-sort.spanish.md

4.0 KiB

title id challengeType videoUrl localeTitle
Topological sort 594fa2746886f41f7d8bf225 5 Género topologico

Description

Dada una asignación entre elementos y elementos de los que dependen, una ordenación topológica ordena elementos para que ningún elemento preceda a un elemento del que depende.

La compilación de una biblioteca en el lenguaje VHDL tiene la restricción de que una biblioteca debe compilarse después de cualquier biblioteca de la que dependa.

Tarea:

Escriba una función que devolverá un orden de compilación válido de las bibliotecas VHDL desde sus dependencias.

Supongamos que los nombres de las bibliotecas son palabras simples. Los elementos mencionados como solo dependientes no tienen dependientes propios, pero se debe dar su orden de compilación. Cualquier auto dependencia debe ser ignorada. Cualquier dependencia no ordenable debe ser ignorada.

Usa los siguientes datos como ejemplo:

 BIBLIOTECA DEPENDENCIAS DE LA BIBLIOTECA
======= ====================
des_system_lib std synopsys std_cell_lib des_system_lib dw02 dw01 ramlib ieee
dw01 ieee dw01 dware gtech
dw02 ieee dw02 dware
dw03 std synopsys dware dw03 dw02 dw01 ieee gtech
dw04 dw04 ieee dw01 dware gtech
dw05 dw05 ieee dware
dw06 dw06 ieee dware
dw07 ieee dware
dware ieee dware
gtech ieee gtech
ramlib std ieee
std_cell_lib ieee std_cell_lib
sinopsis

Nota: los datos anteriores no se podrían ordenar si, por ejemplo, se agrega dw04 a la lista de dependencias de dw01 .

Cf:
 <a href="http://rosettacode.org/wiki/Topological sort/Extracted top item" title="Topological sort/Extracted top item">Topological sort/Extracted top item</a>. 

Hay dos algoritmos populares para la clasificación topológica:

El orden topológico de Kahn en 1962 y la búsqueda en profundidad: ordenamiento topológico

Jason Sachs: "Diez algoritmos pequeños, parte 4: ordenamiento topológico" .

Instructions

Tests

tests:
  - text: <code>topologicalSort</code> es una función.
    testString: 'assert(typeof topologicalSort === "function", "<code>topologicalSort</code> is a function.");'
  - text: <code>topologicalSort</code> debe devolver el orden correcto de la biblioteca ..
    testString: 'assert.deepEqual(topologicalSort(libsSimple), ["bbb", "aaa"], "<code>topologicalSort</code> must return correct library order..");'
  - text: <code>topologicalSort</code> debe devolver el orden correcto de la biblioteca ..
    testString: 'assert.deepEqual(topologicalSort(libsVHDL), solutionVHDL, "<code>topologicalSort</code> must return correct library order..");'
  - text: <code>topologicalSort</code> debe devolver el orden correcto de la biblioteca ..
    testString: 'assert.deepEqual(topologicalSort(libsCustom), solutionCustom, "<code>topologicalSort</code> must return correct library order..");'
  - text: <code>topologicalSort</code> debe ignorar dependencias desordenadas ..
    testString: 'assert.deepEqual(topologicalSort(libsUnorderable), solutionUnorderable, "<code>topologicalSort</code> must ignore unorderable dependencies..");'

Challenge Seed

function topologicalSort(libs) {
  // Good luck!
  return true;
}

After Test

console.info('after the test');

Solution

// solution required