Es posible que conozca al matemático von Koch por su famoso copo de nieve. Sin embargo, tiene problemas de ciencias de la computación más interesantes bajo la manga. De hecho, echemos un vistazo a esta conjetura:
Dado un árbol con n
nodos (por lo tanto, n-1
bordes). Encuentre una manera de enumerar los nodos de 1
a n
y, en consecuencia, los bordes de 1
a n-1
de tal manera que para cada borde k
la diferencia de sus números de nodo sea igual a k
. La conjetura es que esto siempre es posible.
Aquí hay un ejemplo para dejarlo perfectamente claro:
TU TAREA
Su código tomará como entrada un árbol, puede tomar el formato que desee, pero para los casos de prueba, proporcionaré el árbol por sus arcos y la lista de sus nodos.
Por ejemplo, esta es la entrada para el árbol en la imagen:
[a,b,c,d,e,f,g]
d -> a
a -> b
a -> g
b -> c
b -> e
e -> f
Su código debe devolver el árbol con nodos y bordes numerados. Puede devolver una salida más gráfica, pero proporcionaré este tipo de salida para los casos de prueba:
[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
CASOS DE PRUEBA
[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
Este es el código de golf, ¡ esta es la respuesta más corta en bytes!
Nota: Esto es más fuerte que la conjetura de Ringel-Kotzig , que establece que cada árbol tiene un etiquetado elegante. Dado que en la conjetura de Koch no es posible omitir números enteros para el etiquetado contrario al etiquetado elegante en la conjetura de Ringel-Kotzig. Se ha pedido un etiquetado elegante antes aquí .
fuente
Respuestas:
Jalea , 30 bytes
Pruébalo en línea! (Use
GṄ³çG
como pie de página para hacer que la salida sea más bonita).Entradas similares al ejemplo, por ejemplo,
abcdef
y[d,a],[a,b],[a,g],[b,c],[b,e],[e,f]
Emite la lista, por ejemplo,
a,b,c,d,e,f
en orden.Nota: Mi programa produce valores diferentes a los casos de prueba ya que hay varias posibilidades que son todas válidas.
Explicación
Ahorre 1 byte mostrando todas las soluciones posibles:
Pruébalo en línea! (Úselo
GṄ³çG⁷³G
como pie de página para que la salida sea más bonita)Use el convertidor para copiar y pegar el caso de prueba en una lista de entrada.
fuente
Ruby, 108 bytes
función lamba, acepta una matriz de matrices de 2 elementos que contienen los bordes (donde cada borde se expresa como un par de números correspondientes a las notas relevantes).
Sin golf en el programa de prueba
Salida
La salida es una matriz de 2 elementos que contiene:
la nueva numeración de nodos
La numeración del borde.
Por ejemplo, el primer borde del primer ejemplo
[4,1]
está entre los nodos 6 y 1 bajo la nueva numeración de nodos y, por lo tanto, es el borde 6-1 = 5.De hecho, hay múltiples soluciones para cada caso de prueba. la
return
detiene la función una vez que se encuentra la primera.fuente