1 3 6 19 30 34 2 7 18 31 33 16 9 27 22 14 11 25 24 12 13 23 26 10 15 21 28 8 17 32 4 5 20 29 35

Son los enteros del 1 al 35 ordenados de forma que dos consecutivos en la serie suman un cuadrado perfecto. Los he obtenido así:

library(adagio)

foo <- function(n){
    desde <- 1:n
    hasta <- 1:n
    todos <- expand.grid(desde, hasta)
    todos <- todos[todos$Var1 < todos$Var2,]
    todos$sqrt <- sqrt(todos$Var1 + todos$Var2)
    todos <- todos[todos$sqrt == round(todos$sqrt),]
    todos$sqrt <- NULL
    vertices <- as.vector(t(todos))
    hamiltonian(vertices)
}

foo(35)

Notas:

  • Esta entrada está inspirada en algo que he visto en Twitter (pero cuya referencia he olvidado guardar).
  • Puedes probar con otros números, aunque no siempre existe un ciclo hamiltoniano.

Un comentario sobre “1 3 6 19 30 34 2 7 18 31 33 16 9 27 22 14 11 25 24 12 13 23 26 10 15 21 28 8 17 32 4 5 20 29 35

  1. Santiago 27 mayo, 2019 12:56

    Muy bonito!

    Un par de cosillas:

    1. Le has añadido la restricción adicional que el último forme un cuadrado sumado al primero. Si quitas esa restricción, hamiltonian(,,, , cycle = F), es más fácil encontrar soluciones. Por ejemplo, todos los número del 25 al 48 tienen.

    2. Además, para algunos valores se puede considerar empezar por otro número que no sea el 1 (argumento start de hamiltonian()). Eso solamente tiene sentido si no haces un ciclo cerrado. Eso hace que puedas encontrar para el 15, 16, 17, 23, 25 y 26.

    (Generado con tu código con los argumentos start = start y cycle = F.)

    10 | 🙁
    11 | 🙁
    12 | 🙁
    13 | 🙁
    14 | 🙁
    15 | 8 1 15 10 6 3 13 12 4 5 11 14 2 7 9
    16 | 8 1 15 10 6 3 13 12 4 5 11 14 2 7 9 16
    17 | 16 9 7 2 14 11 5 4 12 13 3 6 10 15 1 8 17
    18 | 🙁
    19 | 🙁
    20 | 🙁
    21 | 🙁
    22 | 🙁
    23 | 2 23 13 12 4 21 15 10 6 19 17 8 1 3 22 14 11 5 20 16 9 7 18
    24 | 🙁
    25 | 2 23 13 12 24 25 11 14 22 3 1 8 17 19 6 10 15 21 4 5 20 16 9 7 18
    26 | 2 14 22 3 13 23 26 10 6 19 17 8 1 15 21 4 12 24 25 11 5 20 16 9 7 18
    27 | 1 8 17 19 6 3 13 12 24 25 11 14 22 27 9 16 20 5 4 21 15 10 26 23 2 7 18
    28 | 1 15 10 26 23 13 3 6 19 17 8 28 21 4 12 24 25 11 5 20 16 9 27 22 14 2 7 18
    29 | 1 24 25 11 5 4 12 13 3 6 19 17 8 28 21 15 10 26 23 2 14 22 27 9 16 20 29 7 18
    30 | 1 24 25 11 5 4 12 13 3 6 30 19 17 8 28 21 15 10 26 23 2 14 22 27 9 16 20 29 7 18
    31 | 1 15 10 6 30 19 17 8 28 21 4 5 31 18 7 29 20 16 9 27 22 3 13 12 24 25 11 14 2 23 26
    32 | 1 8 28 21 4 32 17 19 30 6 3 13 12 24 25 11 5 31 18 7 29 20 16 9 27 22 14 2 23 26 10 15
    33 | 1 8 28 21 4 32 17 19 30 6 3 13 12 24 25 11 5 20 29 7 18 31 33 16 9 27 22 14 2 23 26 10 15
    34 | 1 3 6 19 30 34 2 7 18 31 33 16 9 27 22 14 11 25 24 12 13 23 26 10 15 21 28 8 17 32 4 5 20 29
    35 | 1 3 6 19 30 34 2 7 18 31 33 16 9 27 22 14 11 25 24 12 13 23 26 10 15 21 28 8 17 32 4 5 20 29 35
    36 | 1 3 6 10 26 23 2 7 18 31 33 16 9 27 22 14 35 29 20 5 11 25 24 12 13 36 28 8 17 19 30 34 15 21 4 32
    37 | 1 3 13 36 28 8 17 32 4 21 15 34 30 19 6 10 26 23 2 7 18 31 33 16 9 27 22 14 35 29 20 5 11 25 24 12 37
    38 | 1 3 6 19 30 34 2 23 13 36 28 8 17 32 4 21 15 10 26 38 11 25 24 12 37 27 22 14 35 29 20 5 31 18 7 9 16 33
    39 | 1 3 6 19 30 34 2 7 18 31 33 16 9 27 22 14 35 29 20 5 11 38 26 23 13 36 28 8 17 32 4 21 15 10 39 25 24 12 37
    40 | 1 3 6 10 39 25 24 40 9 16 33 31 18 7 2 23 26 38 11 5 20 29 35 14 22 27 37 12 13 36 28 8 17 19 30 34 15 21 4 32
    41 | 1 3 6 10 15 21 4 32 17 19 30 34 2 7 18 31 33 16 9 40 41 8 28 36 13 23 26 38 11 5 20 29 35 14 22 27 37 12 24 25 39
    42 | 1 3 6 10 15 21 4 5 11 38 26 23 13 36 28 8 41 40 9 27 37 12 24 25 39 42 22 14 35 29 20 16 33 31 18 7 2 34 30 19 17 32
    43 | 1 3 6 10 15 21 43 38 11 5 4 32 17 19 30 34 2 7 18 31 33 16 20 29 35 14 22 42 39 25 24 12 37 27 9 40 41 8 28 36 13 23 26
    44 | 1 3 6 10 15 21 4 32 17 19 30 34 2 7 18 31 33 16 9 27 22 42 39 25 11 14 35 29 20 5 44 37 12 24 40 41 8 28 36 13 23 26 38 43
    45 | 1 3 6 10 15 21 28 8 17 32 4 5 11 14 35 29 20 44 37 12 13 36 45 19 30 34 2 7 18 31 33 16 9 27 22 42 39 25 24 40 41 23 26 38 43
    46 | 1 3 6 10 15 21 28 8 17 32 4 5 11 14 2 34 30 19 45 36 13 12 24 25 39 42 22 27 37 44 20 16 33 31 18 46 35 29 7 9 40 41 23 26 38 43
    47 | 1 3 6 10 15 21 4 32 17 47 2 34 30 19 45 36 28 8 41 40 9 7 29 20 16 33 31 18 46 35 14 11 5 44 37 27 22 42 39 25 24 12 13 23 26 38 43
    48 | 1 3 6 10 15 21 4 32 17 47 2 34 30 19 45 36 28 8 41 40 9 7 29 20 16 48 33 31 18 46 35 14 11 5 44 37 27 22 42 39 25 24 12 13 23 26 38 43

Comenta

Your email address will not be published.

Puedes usar estas etiquetas y atributos de HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.