Potresti conoscere il matematico von Koch dal suo famoso fiocco di neve. Tuttavia ha problemi di informatica più interessanti. Anzi, diamo un'occhiata a questa congettura:
Dato un albero con n
nodi (quindi n-1
bordi). Trovare un modo per enumerare i nodi da 1
a n
e, di conseguenza, i bordi di 1
per n-1
in tal modo un, che, per ciascun bordo k
della differenza dei suoi numeri di nodo è uguale a k
. La congettura è che questo è sempre possibile.
Ecco un esempio per renderlo perfettamente chiaro:
IL TUO COMPITO
Il tuo codice prenderà come input un albero, puoi prendere il formato che desideri ma per i casi di test fornirò l'albero per i loro archi e l'elenco dei loro nodi.
Ad esempio, questo è l'input per l'albero nella figura:
[a,b,c,d,e,f,g]
d -> a
a -> b
a -> g
b -> c
b -> e
e -> f
Il codice deve restituire l'albero con nodi e bordi numerati. Puoi restituire un output più grafico ma fornirò questo tipo di output per i casi di 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
CASI TEST
[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
Questo è code-golf, questa è la risposta più breve in byte!
Nota: questo è più forte della congettura di Ringel-Kotzig , che afferma che ogni albero ha un'etichettatura elegante. Poiché nella congettura di Koch non è possibile saltare numeri interi per l'etichettatura contrariamente all'etichettatura aggraziata nella congettura di Ringel-Kotzig. L'etichettatura graziosa è stata richiesta prima qui .