Root-Sensei P33143


Statement
 

pdf   zip

thehtml

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.

Entrada

En una línea, el número N de miembros del clan que han sido sensei de alguien. A continuación, 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.

Salida

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.

Puntuación

  • TestA:  ‍ Entradas de tipo ROOT.  ‍25 Puntos ‍
  • TestB:  ‍ Entradas de tipo SORT.  ‍25 Puntos ‍
  • TestC:  ‍ Entradas de tipo TREE.  ‍25 Puntos ‍
  • TestD:  ‍ Entradas de tipo XML.  ‍25 Puntos ‍
Public test cases
  • 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>
    
  • Information
    Author
    Omer Giménez
    Language
    Spanish
    Official solutions
    C++
    User solutions
    C++