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 java.util.stream.Collectors
import java.util.stream.IntStream
 
class NoConnection {
    // adopted from Go
    static int[][] links = [
            [2, 3, 4], // A to C,D,E
            [3, 4, 5], // B to D,E,F
            [2, 4],    // D to C, E
            [5],       // E to F
            [2, 3, 4], // G to C,D,E
            [3, 4, 5], // H to D,E,F
    ]
 
    static int[] pegs = new int[8]
 
    static void main(String[] args) {
        List<Integer> vals = IntStream.range(1, 9)
                .mapToObj({ it })
                .collect(Collectors.toList())
 
        while (true) {
            Collections.shuffle(vals)
            for (int i = 0; i < pegs.length; i++) {
                pegs[i] = vals.get(i)
            }
            if (solved()) {
                break
            }
        }
 
        printResult()
    }
 
    static boolean solved() {
        for (int i = 0; i < links.length; i++) {
            for (int peg : links[i]) {
                if (Math.abs(pegs[i] - peg) == 1) {
                    return false
                }
            }
        }
        return true
    }
 
    static void printResult() {
        println("  ${pegs[0]} ${pegs[1]}")
        println("${pegs[2]} ${pegs[3]} ${pegs[4]} ${pegs[5]}")
        println("  ${pegs[6]} ${pegs[7]}")
    }
}