Se sabe que todos los miembros de un clan ninja han sido alumnos de un único ninja de su mismo clan de mayor edad (su “sensei”), con la única excepción del miembro de más edad y fundador del clan (el “root-sensei”), que no ha tenido ningún sensei.
Se te pide que hagas un programa que, a partir de un listado con los ninjas del clan que han sido senseis de alguien y los nombres de sus alumnos, reescriba dicha información en varios formatos distintos.
En una línea, el número de miembros del clan que han sido sensei de alguien. A continuación, líneas con uno o más nombres por línea. El primer nombre de cada línea es el nombre del sensei; a continuación, los nombres de sus alumnos.
La última línea de la entrada es la palabra ROOT,
SORT, TREE o XML, con el tipo de
salida que se espera que tu programa produzca.
Mira los ejemplos para saber cómo debes escribir la salida en cada uno de los casos.
Si se te pide ROOT, deberás escribir una línea con el
nombre del root-sensei (el único miembro del clan que no ha tenido
ningún sensei), como en el Ejemplo 1.
Si se te pide SORT, deberás escribir los listados que
recibiste, pero ordenados alfabéticamente, tanto por sensei como por
alumno. Usa comas, espacios y puntos exactamente como en el
Ejemplo 2.
Si se te pide TREE, deberás escribir el árbol de
relaciones alumno-sensei, como en el Ejemplo 3. En este formato hay
tantas líneas como ninjas. Deja cuatro espacios de indentado entre
niveles, y no escribas más espacios de los estrictamente necesarios.
Escribe los alumnos de un sensei en el mismo orden en el que aparecieron
en la entrada.
Si se te pide XML, deberás escribir el árbol de
alumno-sensei en formato XML, como en el Ejemplo 4. Al igual que antes,
deja cuatro espacios de indentado, no escribas más espacios de la
cuenta, y escribe los alumnos en el mismo orden en el que
aparecieron.
TestA: Entradas de tipo
ROOT.
TestB: Entradas de tipo
SORT.
TestC: Entradas de tipo
TREE.
TestD: Entradas de tipo
XML.
Input
5 Jiraiya Minato Minato Kakashi Obito Rin Hiruzen Jiraiya Tsunade Orochimaru Naruto Konohamaru Kakashi Naruto Sasuke Sakura ROOT
Output
Hiruzen
Input
5 Jiraiya Minato Minato Kakashi Obito Rin Hiruzen Jiraiya Tsunade Orochimaru Naruto Konohamaru Kakashi Naruto Sasuke Sakura SORT
Output
Hiruzen: Jiraiya, Orochimaru, Tsunade. Jiraiya: Minato. Kakashi: Naruto, Sakura, Sasuke. Minato: Kakashi, Obito, Rin. Naruto: Konohamaru.
Input
5 Jiraiya Minato Minato Kakashi Obito Rin Hiruzen Jiraiya Tsunade Orochimaru Naruto Konohamaru Kakashi Naruto Sasuke Sakura TREE
Output
---Hiruzen |---Jiraiya | \---Minato | |---Kakashi | | |---Naruto | | | \---Konohamaru | | |---Sasuke | | \---Sakura | |---Obito | \---Rin |---Tsunade \---Orochimaru
Input
5 Jiraiya Minato Minato Kakashi Obito Rin Hiruzen Jiraiya Tsunade Orochimaru Naruto Konohamaru Kakashi Naruto Sasuke Sakura XML
Output
<sensei name=Hiruzen>
<sensei name=Jiraiya>
<sensei name=Minato>
<sensei name=Kakashi>
<sensei name=Naruto>
<student name=Konohamaru />
</sensei>
<student name=Sasuke />
<student name=Sakura />
</sensei>
<student name=Obito />
<student name=Rin />
</sensei>
</sensei>
<student name=Tsunade />
<student name=Orochimaru />
</sensei>