{- |
Description: Examples of regular graphs
Copyright: Copyright (C) 2021 Yoo Chung
License: GPL-3.0-or-later
Maintainer: dev@chungyc.org

Examples of \(k\)-regular graphs with \(n\) vertexes.
-}
module Problems.P94.Examples where

import Problems.Graphs

-- | Examples of k-regular graphs with n vertexes.
-- Inspect the source code to view the examples.
regularGraphExamples :: [Paths]
regularGraphExamples :: [Paths]
regularGraphExamples = [

  -- (n,k) = (3,2) with 1 solution
  [[Vertex]] -> Paths
Paths [[Vertex
1,Vertex
3,Vertex
2,Vertex
1]],

  -- (n,k) = (4,2) with 1 solution
  [[Vertex]] -> Paths
Paths [[Vertex
1,Vertex
4,Vertex
2,Vertex
3,Vertex
1]],

  -- (n,k) = (4,3) with 1 solution
  [[Vertex]] -> Paths
Paths [[Vertex
4,Vertex
3],[Vertex
2,Vertex
4,Vertex
1,Vertex
3,Vertex
2,Vertex
1]],

  -- (n,k) = (5,2) with 1 solution
  [[Vertex]] -> Paths
Paths [[Vertex
1,Vertex
5,Vertex
2,Vertex
3,Vertex
4,Vertex
1]],

  -- (n,k) = (5,3) with 0 solutions

  -- (n,k) = (5,4) with 1 solution
  [[Vertex]] -> Paths
Paths [[Vertex
3,Vertex
5,Vertex
4,Vertex
3],[Vertex
1,Vertex
5,Vertex
2,Vertex
4,Vertex
1,Vertex
3,Vertex
2,Vertex
1]],

  -- (n,k) = (6,2) with 2 solutions
  [[Vertex]] -> Paths
Paths [[Vertex
1,Vertex
6,Vertex
2,Vertex
4,Vertex
3,Vertex
5,Vertex
1]],
  [[Vertex]] -> Paths
Paths [[Vertex
2,Vertex
4,Vertex
3,Vertex
2],[Vertex
1,Vertex
6,Vertex
5,Vertex
1]],

  -- (n,k) = (6,3) with 2 solutions
  [[Vertex]] -> Paths
Paths [[Vertex
6,Vertex
3],[Vertex
5,Vertex
3,Vertex
4],[Vertex
2,Vertex
6,Vertex
1,Vertex
5,Vertex
2,Vertex
4,Vertex
1]],
  [[Vertex]] -> Paths
Paths [[Vertex
5,Vertex
4],[Vertex
6,Vertex
3],[Vertex
2,Vertex
6,Vertex
1,Vertex
5,Vertex
2,Vertex
3,Vertex
4,Vertex
1]],

  -- (n,k) = (6,4) with 1 solution
  [[Vertex]] -> Paths
Paths [[Vertex
3,Vertex
6,Vertex
4,Vertex
5,Vertex
3],[Vertex
1,Vertex
6,Vertex
2,Vertex
5,Vertex
1,Vertex
4,Vertex
2,Vertex
3,Vertex
1]],

  -- (n,k) = (6,5) with 1 solution
  [[Vertex]] -> Paths
Paths [[Vertex
6,Vertex
5],[Vertex
4,Vertex
6,Vertex
3,Vertex
5,Vertex
4,Vertex
3],[Vertex
2,Vertex
6,Vertex
1,Vertex
5,Vertex
2,Vertex
4,Vertex
1,Vertex
3,Vertex
2,Vertex
1]],

  -- (n,k) = (7,2) with 2 solutions
  [[Vertex]] -> Paths
Paths [[Vertex
3,Vertex
5,Vertex
4,Vertex
3],[Vertex
1,Vertex
7,Vertex
2,Vertex
6,Vertex
1]],
  [[Vertex]] -> Paths
Paths [[Vertex
1,Vertex
7,Vertex
2,Vertex
5,Vertex
4,Vertex
3,Vertex
6,Vertex
1]],

  -- (n,k) = (7,3) with 0 solutions

  -- (n,k) = (7,4) with 2 solutions
  [[Vertex]] -> Paths
Paths [[Vertex
3,Vertex
6,Vertex
5,Vertex
3,Vertex
7,Vertex
4,Vertex
3],[Vertex
1,Vertex
7,Vertex
2,Vertex
6,Vertex
1,Vertex
5,Vertex
2,Vertex
4,Vertex
1]],
  [[Vertex]] -> Paths
Paths [[Vertex
3,Vertex
7,Vertex
4,Vertex
5,Vertex
6,Vertex
3],[Vertex
1,Vertex
7,Vertex
2,Vertex
6,Vertex
1,Vertex
5,Vertex
2,Vertex
3,Vertex
4,Vertex
1]],

  -- (n,k) = (7,5) with 0 solutions

  -- (n,k) = (7,6) with 1 solution
  [[Vertex]] -> Paths
Paths [[Vertex
5,Vertex
7,Vertex
6,Vertex
5],[Vertex
3,Vertex
7,Vertex
4,Vertex
6,Vertex
3,Vertex
5,Vertex
4,Vertex
3],[Vertex
1,Vertex
7,Vertex
2,Vertex
6,Vertex
1,Vertex
5,Vertex
2,Vertex
4,Vertex
1,Vertex
3,Vertex
2,Vertex
1]],

  -- (n,k) = (8,2) with 3 solutions
  [[Vertex]] -> Paths
Paths [[Vertex
3,Vertex
6,Vertex
4,Vertex
5,Vertex
3],[Vertex
1,Vertex
8,Vertex
2,Vertex
7,Vertex
1]],
  [[Vertex]] -> Paths
Paths [[Vertex
1,Vertex
8,Vertex
2,Vertex
6,Vertex
4,Vertex
5,Vertex
3,Vertex
7,Vertex
1]],
  [[Vertex]] -> Paths
Paths [[Vertex
3,Vertex
5,Vertex
4,Vertex
3],[Vertex
1,Vertex
8,Vertex
2,Vertex
6,Vertex
7,Vertex
1]],

  -- (n,k) = (8,3) with 6 solutions
  [[Vertex]] -> Paths
Paths [[Vertex
7,Vertex
4],[Vertex
8,Vertex
3],[Vertex
5,Vertex
4,Vertex
3,Vertex
5,Vertex
6],[Vertex
2,Vertex
8,Vertex
1,Vertex
7,Vertex
2,Vertex
6,Vertex
1]],
  [[Vertex]] -> Paths
Paths [[Vertex
7,Vertex
4],[Vertex
6,Vertex
4,Vertex
5],[Vertex
8,Vertex
3],[Vertex
2,Vertex
8,Vertex
1,Vertex
7,Vertex
2,Vertex
5,Vertex
3,Vertex
6,Vertex
1]],
  [[Vertex]] -> Paths
Paths [[Vertex
6,Vertex
5],[Vertex
7,Vertex
4],[Vertex
8,Vertex
3],[Vertex
2,Vertex
8,Vertex
1,Vertex
7,Vertex
2,Vertex
5,Vertex
4,Vertex
3,Vertex
6,Vertex
1]],
  [[Vertex]] -> Paths
Paths [[Vertex
7,Vertex
5],[Vertex
6,Vertex
4],[Vertex
8,Vertex
3],[Vertex
2,Vertex
8,Vertex
1,Vertex
7,Vertex
2,Vertex
5,Vertex
4,Vertex
3,Vertex
6,Vertex
1]],
  [[Vertex]] -> Paths
Paths [[Vertex
8,Vertex
7],[Vertex
6,Vertex
4],[Vertex
5,Vertex
3],[Vertex
2,Vertex
8,Vertex
1,Vertex
7,Vertex
2,Vertex
5,Vertex
4,Vertex
3,Vertex
6,Vertex
1]],
  [[Vertex]] -> Paths
Paths [[Vertex
5,Vertex
4],[Vertex
3,Vertex
5,Vertex
2,Vertex
4,Vertex
3,Vertex
2],[Vertex
8,Vertex
7],[Vertex
6,Vertex
8,Vertex
1,Vertex
7,Vertex
6,Vertex
1]],

  -- (n,k) = (8,4) with 6 solutions
  [[Vertex]] -> Paths
Paths [[Vertex
3,Vertex
8,Vertex
4,Vertex
7,Vertex
3,Vertex
6,Vertex
4,Vertex
5,Vertex
3],[Vertex
1,Vertex
8,Vertex
2,Vertex
7,Vertex
1,Vertex
6,Vertex
2,Vertex
5,Vertex
1]],
  [[Vertex]] -> Paths
Paths [[Vertex
3,Vertex
8,Vertex
4,Vertex
7,Vertex
3,Vertex
6,Vertex
5,Vertex
4,Vertex
3],[Vertex
1,Vertex
8,Vertex
2,Vertex
7,Vertex
1,Vertex
6,Vertex
2,Vertex
5,Vertex
1]],
  [[Vertex]] -> Paths
Paths [[Vertex
3,Vertex
8,Vertex
4,Vertex
6,Vertex
5,Vertex
7,Vertex
3],[Vertex
1,Vertex
8,Vertex
2,Vertex
7,Vertex
1,Vertex
6,Vertex
2,Vertex
4,Vertex
3,Vertex
5,Vertex
1]],
  [[Vertex]] -> Paths
Paths [[Vertex
4,Vertex
6,Vertex
5,Vertex
4],[Vertex
3,Vertex
8,Vertex
7,Vertex
3],[Vertex
1,Vertex
8,Vertex
2,Vertex
7,Vertex
1,Vertex
6,Vertex
2,Vertex
4,Vertex
3,Vertex
5,Vertex
1]],
  [[Vertex]] -> Paths
Paths [[Vertex
5,Vertex
7,Vertex
6,Vertex
5],[Vertex
1,Vertex
7,Vertex
2,Vertex
8,Vertex
3,Vertex
6,Vertex
1,Vertex
8,Vertex
4,Vertex
3,Vertex
2,Vertex
4,Vertex
5,Vertex
1]],
  [[Vertex]] -> Paths
Paths [[Vertex
2,Vertex
8,Vertex
6,Vertex
5,Vertex
7,Vertex
2],[Vertex
1,Vertex
8,Vertex
3,Vertex
6,Vertex
1,Vertex
7,Vertex
4,Vertex
3,Vertex
2,Vertex
4,Vertex
5,Vertex
1]],

  -- (n,k) = (8,5) with 3 solutions
  [[Vertex]] -> Paths
Paths [[Vertex
7,Vertex
6],[Vertex
8,Vertex
5],[Vertex
4,Vertex
8,Vertex
3,Vertex
6,Vertex
5,Vertex
3,Vertex
7,Vertex
4,Vertex
3],[Vertex
2,Vertex
8,Vertex
1,Vertex
7,Vertex
2,Vertex
6,Vertex
1,Vertex
5,Vertex
2,Vertex
4,Vertex
1]],
  [[Vertex]] -> Paths
Paths [[Vertex
7,Vertex
6],[Vertex
8,Vertex
4],[Vertex
3,Vertex
7,Vertex
4,Vertex
6,Vertex
3,Vertex
8,Vertex
5],[Vertex
2,Vertex
8,Vertex
1,Vertex
7,Vertex
2,Vertex
5,Vertex
3,Vertex
2,Vertex
6,Vertex
1,Vertex
5,Vertex
4,Vertex
1]],
  [[Vertex]] -> Paths
Paths [[Vertex
7,Vertex
6],[Vertex
8,Vertex
5],[Vertex
4,Vertex
8,Vertex
3,Vertex
7,Vertex
4,Vertex
5,Vertex
6,Vertex
3],[Vertex
2,Vertex
8,Vertex
1,Vertex
7,Vertex
2,Vertex
6,Vertex
1,Vertex
5,Vertex
2,Vertex
3,Vertex
4,Vertex
1]],

  -- (n,k) = (8,6) with 1 solution
  [[Vertex]] -> Paths
Paths [[Vertex
5,Vertex
8,Vertex
6,Vertex
7,Vertex
5],[Vertex
3,Vertex
8,Vertex
4,Vertex
7,Vertex
3,Vertex
6,Vertex
4,Vertex
5,Vertex
3],[Vertex
1,Vertex
8,Vertex
2,Vertex
7,Vertex
1,Vertex
6,Vertex
2,Vertex
5,Vertex
1,Vertex
4,Vertex
2,Vertex
3,Vertex
1]],

  -- (n,k) = (8,7) with 1 solution
  [[Vertex]] -> Paths
Paths [[Vertex
8,Vertex
7],[Vertex
6,Vertex
8,Vertex
5,Vertex
7,Vertex
6,Vertex
5],[Vertex
4,Vertex
8,Vertex
3,Vertex
7,Vertex
4,Vertex
6,Vertex
3,Vertex
5,Vertex
4,Vertex
3],[Vertex
2,Vertex
8,Vertex
1,Vertex
7,Vertex
2,Vertex
6,Vertex
1,Vertex
5,Vertex
2,Vertex
4,Vertex
1,Vertex
3,Vertex
2,Vertex
1]],

  -- (n,k) = (9,2) with 4 solutions
  [[Vertex]] -> Paths
Paths [[Vertex
3,Vertex
7,Vertex
4,Vertex
5,Vertex
6,Vertex
3],[Vertex
1,Vertex
9,Vertex
2,Vertex
8,Vertex
1]],
  [[Vertex]] -> Paths
Paths [[Vertex
4,Vertex
6,Vertex
5,Vertex
4],[Vertex
1,Vertex
9,Vertex
2,Vertex
7,Vertex
3,Vertex
8,Vertex
1]],
  [[Vertex]] -> Paths
Paths [[Vertex
1,Vertex
9,Vertex
2,Vertex
7,Vertex
4,Vertex
5,Vertex
6,Vertex
3,Vertex
8,Vertex
1]],
  [[Vertex]] -> Paths
Paths [[Vertex
3,Vertex
5,Vertex
4,Vertex
3],[Vertex
2,Vertex
7,Vertex
6,Vertex
2],[Vertex
1,Vertex
9,Vertex
8,Vertex
1]]

  ]