You are given a box with eight holes labelled   A-to-H,   connected by fifteen straight lines in the pattern as shown below:

             A   B
            /│\ /│\
           / │ X │ \
          /  │/ \│  \
         C───D───E───F
          \  │\ /│  /
           \ │ X │ /
            \│/ \│/
             G   H

You are also given eight pegs numbered   1-to-8.



Objective

Place the eight pegs in the holes so that the (absolute) difference between any two numbers connected by any line is greater than one.



Example

In this attempt:

             4   7
            /│\ /│\
           / │ X │ \
          /  │/ \│  \
         8───1───6───2
          \  │\ /│  /
           \ │ X │ /
            \│/ \│/
             3   5

Note that   7   and   6   are connected and have a difference of   1,   so it is   not   a solution.



Task
Produce and show here   one   solution to the puzzle.



Related tasks

   A* search algorithm
   Solve a Holy Knight's tour
   Knight's tour
   N-queens problem
   Solve a Hidato puzzle
   Solve a Holy Knight's tour
   Solve a Hopido puzzle
   Solve a Numbrix puzzle
   4-rings or 4-squares puzzle


See also
No Connection Puzzle (youtube).




import cp.
 
no_connection_puzzle(X) =>
  N = 8,
  X = new_list(N),
  X :: 1..N,
  Graph = 
    {{1,3}, {1,4}, {1,5},
     {2,4}, {2,5}, {2,6},
     {3,1}, {3,4}, {3,7},
     {4,1}, {4,2}, {4,3}, {4,5}, {4,7}, {4,8},
     {5,1}, {5,2}, {5,4}, {5,6}, {5,7}, {5,8},
     {6,2}, {6,5}, {6,8},
     {7,3}, {7,4}, {7,5},
     {8,4}, {8,5}, {8,6}},
 
  all_distinct(X),
  foreach(I in 1..Graph.length) 
     abs(X[Graph[I,1]]-X[Graph[I,2]]) #> 1 
  end,
 
  % symmetry breaking
  X[1] #< X[N],
 
  solve(X),
  println(X),
  nl,
  [A,B,C,D,E,F,G,H] = X,
  Solution = to_fstring(
  "    %d   %d       \n"++
  "   /|\\ /|\\      \n"++
  "  / | X | \\      \n"++
  " /  |/ \\|  \\    \n"++
  "%d - %d - %d - %d \n"++
  " \\  |\\ /|  /    \n"++
  "  \\ | X | /      \n"++
  "   \\|/ \\|/      \n"++
  "    %d   %d       \n",
  A,B,C,D,E,F,G,H),
  println(Solution).