Vous connaissez peut-être le mathématicien von Koch par son célèbre flocon de neige. Cependant, il a des problèmes informatiques plus intéressants dans ses manches. En effet, jetons un œil à cette conjecture:
Étant donné un arbre avec des n
nœuds (donc des n-1
arêtes). Trouvez un moyen d'énumérer les nœuds de 1
à n
et, en conséquence, les arêtes de 1
à n-1
de telle manière que, pour chaque arête, k
la différence de ses numéros de nœuds soit égale à k
. La conjecture est que cela est toujours possible.
Voici un exemple pour le rendre parfaitement clair:
TA TÂCHE
Votre code prendra en entrée un arbre, vous pouvez prendre le format que vous souhaitez mais pour les cas de test je fournirai l'arbre par leurs arcs et la liste de leurs nœuds.
Par exemple, c'est l'entrée pour l'arbre dans l'image:
[a,b,c,d,e,f,g]
d -> a
a -> b
a -> g
b -> c
b -> e
e -> f
Votre code doit renvoyer l'arborescence avec des nœuds et des bords numérotés. Vous pouvez renvoyer une sortie plus graphique mais je fournirai ce type de sortie pour les cas de test:
[a7,b3,c6,d1,e5,f4,g2]
d -> a 6
a -> b 4
a -> g 5
b -> c 3
b -> e 2
e -> f 1
CAS D'ESSAI
[a,b,c,d,e,f,g] [a7,b3,c6,d1,e5,f4,g2]
d -> a d -> a 6
a -> b a -> b 4
a -> g => a -> g 5
b -> c b -> c 3
b -> e b -> e 2
e -> f e -> f 1
[a,b,c,d] [a4,b1,c3,d2]
a -> b a -> b 3
b -> c => b -> c 2
b -> d b -> d 1
[a,b,c,d,e] [a2,b3,c1,d4,e5]
a -> b a -> b 1
b -> c b -> c 2
c -> d => c -> d 3
c -> e c -> e 4
C'est le code-golf, c'est la réponse la plus courte en octets!
Remarque: Ceci est plus fort que la conjecture de Ringel-Kotzig , qui stipule que chaque arbre a un étiquetage gracieux. Étant donné que dans la conjecture de Koch, il n'est pas possible de sauter des entiers pour l'étiquetage contrairement à l'étiquetage gracieux dans la conjecture de Ringel-Kotzig. Un étiquetage gracieux a déjà été demandé ici .
la source
Réponses:
Gelée , 30 octets
Essayez-le en ligne! (Utilisez
GṄ³çG
comme pied de page pour rendre la sortie plus jolie.)Entrées similaires à l'exemple, par exemple
abcdef
et[d,a],[a,b],[a,g],[b,c],[b,e],[e,f]
Affiche la liste, par exemple
a,b,c,d,e,f
dans l'ordre.Remarque: Mon programme produit des valeurs différentes de celles des cas de test car il existe plusieurs possibilités qui sont toutes valides.
Explication
Économisez 1 octet en montrant toutes les solutions possibles:
Essayez-le en ligne! (Utilisez
GṄ³çG⁷³G
comme pied de page pour rendre la sortie plus jolie)Utilisez le convertisseur pour copier-coller le cas de test dans une liste d'entrée.
la source
Rubis, 108 octets
Fonction lamba, accepte un tableau de tableaux à 2 éléments contenant les arêtes (où chaque arête est exprimée comme une paire de nombres correspondant aux notes pertinentes.)
Non testé dans le programme de test
Production
la sortie est un tableau à 2 éléments, contenant:
la nouvelle numérotation des nœuds
la numérotation des bords.
Par exemple, le premier bord du premier exemple
[4,1]
est entre les nœuds 6 et 1 sous la nouvelle numérotation des nœuds et est donc le bord 6-1 = 5.Il y a en fait plusieurs solutons pour chaque cas de test. la
return
arrête la fonction une fois la première trouvée.la source