Écrivez une fonction ou un programme qui traite un bloc de texte et renvoie le nouveau texte. Le plus petit programme valide gagne.
Chaque ligne du bloc de texte aura le format suivant:
12:34,56
Le premier nombre est l'ID de la ligne, les deux autres nombres séparés par des virgules sont des références à d'autres lignes.
Dans le texte d'entrée, les nombres peuvent être n'importe quel entier supérieur ou égal à 0. Tous les nombres seront en décimal codé ASCII sans zéros de tête. Il n'y aura pas d'ID de ligne en double. Il n'y aura aucune référence à des ID de ligne inexistants, bien qu'il puisse y avoir des ID de ligne qui ne soient pas référencés.
Dans le texte de sortie, la ligne numérotée la plus basse sera déplacée au début du bloc de texte et renumérotée à 0. Toutes les références à cette ligne doivent également être mises à jour. La première référence sur cette ligne doit être 0 ou 1. La deuxième référence ne peut être que 2 si la première référence est 1. Sinon, elle doit être 0 ou 1.
Toutes les lignes doivent être en ordre croissant et incrémentiel (pas de nombres sautés). Vous ne pouvez avoir une référence à la ligne n que s'il y a eu une référence précédente à la ligne n-1 ou si l'ID de ligne actuel est n. Aucune ligne ne doit être référencée par des ID de ligne inférieurs, à l'exception de la ligne 0. Ces lignes doivent être supprimées avant la sortie finale.
Vous pouvez supposer que le texte saisi est toujours au format correct.
Entrée de test n ° 1:
45:73,24
78:24,78
89:24,73
73:45,3
72:3,24
3:24,24
24:3,89
Réorganisé:
3:24,24
24:3,89
89:24,73
73:45,3
45:73,24
78:24,78
72:3,24
Renuméroté:
0:1,1
1:0,2
2:1,3
3:4,0
4:3,1
78:1,78
72:0,1
Lignes non référencées supprimées pour la sortie finale:
0:1,1
1:0,2
2:1,3
3:4,0
4:3,1
Bien sûr, votre programme n'a pas à suivre cet ordre, il suffit de produire la sortie correcte. La sortie doit être un seul bloc de texte ou l'équivalent le plus proche dans votre langue, c'est-à-dire pas de sortie directe caractère par caractère. Vous pouvez soit le retourner (de préférence), soit sortir directement le bloc entier. Supposons que votre sortie sera passée à une autre fonction ou programme.
Entrée de test n ° 2
5:2,3
7:3,2
2:4,2
4:2,3
3:4,3
Production:
0:1,0
1:0,2
2:1,2
Entrée de test n ° 3
7:6,3
3:9,7
9:7,3
2:9,6
6:6,7
Production:
0:1,2
1:3,4
2:2,3
3:2,4
4:1,3