From bbdac08ea25982065f41f4cd3467ee0e808c52a9 Mon Sep 17 00:00:00 2001
From: Xuan Trinh <xuan.trinh@student.unimelb.edu.au>
Date: Sat, 20 Mar 2021 15:48:20 +1100
Subject: [PATCH] Add the test case. function to calculate distance, some basic
 movement logic + read file into dict

---
 Test_case/level_1/1.json  |  17 +++++
 Test_case/level_1/2.json  |  17 +++++
 Test_case/level_1/3.json  |  17 +++++
 Test_case/level_1/4.json  |  17 +++++
 Test_case/level_1/5.json  |  17 +++++
 Test_case/level_1/6.json  |  17 +++++
 Test_case/level_2/1.json  |  22 ++++++
 Test_case/level_2/10.json |  22 ++++++
 Test_case/level_2/11.json |  27 +++++++
 Test_case/level_2/12.json |  32 +++++++++
 Test_case/level_2/13.json | 148 ++++++++++++++++++++++++++++++++++++++
 Test_case/level_2/2.json  |  27 +++++++
 Test_case/level_2/3.json  |  57 +++++++++++++++
 Test_case/level_2/4.json  |  57 +++++++++++++++
 Test_case/level_2/5.json  |  68 ++++++++++++++++++
 Test_case/level_2/6.json  |  78 ++++++++++++++++++++
 Test_case/level_2/7.json  |  63 ++++++++++++++++
 Test_case/level_2/8.json  |  58 +++++++++++++++
 Test_case/level_2/9.json  |  63 ++++++++++++++++
 Test_case/level_3/1.json  |  27 +++++++
 Test_case/level_3/10.json |  63 ++++++++++++++++
 Test_case/level_3/11.json |  68 ++++++++++++++++++
 Test_case/level_3/2.json  |  32 +++++++++
 Test_case/level_3/3.json  |  22 ++++++
 Test_case/level_3/4.json  |  32 +++++++++
 Test_case/level_3/5.json  |  32 +++++++++
 Test_case/level_3/6.json  |  32 +++++++++
 Test_case/level_3/7.json  |  33 +++++++++
 Test_case/level_3/8.json  |  48 +++++++++++++
 Test_case/level_3/9.json  |  58 +++++++++++++++
 Test_case/level_4/1.json  |  27 +++++++
 Test_case/level_4/2.json  |  33 +++++++++
 Test_case/level_4/3.json  |  37 ++++++++++
 Test_case/level_4/4.json  |  37 ++++++++++
 Test_case/level_4/5.json  |  68 ++++++++++++++++++
 search/method.py          |  92 ++++++++++++++++++++++++
 36 files changed, 1565 insertions(+)
 create mode 100644 Test_case/level_1/1.json
 create mode 100644 Test_case/level_1/2.json
 create mode 100644 Test_case/level_1/3.json
 create mode 100644 Test_case/level_1/4.json
 create mode 100644 Test_case/level_1/5.json
 create mode 100644 Test_case/level_1/6.json
 create mode 100644 Test_case/level_2/1.json
 create mode 100644 Test_case/level_2/10.json
 create mode 100644 Test_case/level_2/11.json
 create mode 100644 Test_case/level_2/12.json
 create mode 100644 Test_case/level_2/13.json
 create mode 100644 Test_case/level_2/2.json
 create mode 100644 Test_case/level_2/3.json
 create mode 100644 Test_case/level_2/4.json
 create mode 100644 Test_case/level_2/5.json
 create mode 100644 Test_case/level_2/6.json
 create mode 100644 Test_case/level_2/7.json
 create mode 100644 Test_case/level_2/8.json
 create mode 100644 Test_case/level_2/9.json
 create mode 100644 Test_case/level_3/1.json
 create mode 100644 Test_case/level_3/10.json
 create mode 100644 Test_case/level_3/11.json
 create mode 100644 Test_case/level_3/2.json
 create mode 100644 Test_case/level_3/3.json
 create mode 100644 Test_case/level_3/4.json
 create mode 100644 Test_case/level_3/5.json
 create mode 100644 Test_case/level_3/6.json
 create mode 100644 Test_case/level_3/7.json
 create mode 100644 Test_case/level_3/8.json
 create mode 100644 Test_case/level_3/9.json
 create mode 100644 Test_case/level_4/1.json
 create mode 100644 Test_case/level_4/2.json
 create mode 100644 Test_case/level_4/3.json
 create mode 100644 Test_case/level_4/4.json
 create mode 100644 Test_case/level_4/5.json
 create mode 100644 search/method.py

diff --git a/Test_case/level_1/1.json b/Test_case/level_1/1.json
new file mode 100644
index 0000000..c5e2781
--- /dev/null
+++ b/Test_case/level_1/1.json
@@ -0,0 +1,17 @@
+{
+  "upper": [
+    [
+      "r",
+      4,
+      -4
+    ]
+  ],
+  "lower": [
+    [
+      "s",
+      -4,
+      4
+    ]
+  ],
+  "block": []
+}
\ No newline at end of file
diff --git a/Test_case/level_1/2.json b/Test_case/level_1/2.json
new file mode 100644
index 0000000..a6cffab
--- /dev/null
+++ b/Test_case/level_1/2.json
@@ -0,0 +1,17 @@
+{
+  "upper": [
+    [
+      "p",
+      4,
+      -3
+    ]
+  ],
+  "lower": [
+    [
+      "r",
+      -4,
+      4
+    ]
+  ],
+  "block": []
+}
\ No newline at end of file
diff --git a/Test_case/level_1/3.json b/Test_case/level_1/3.json
new file mode 100644
index 0000000..ee99f90
--- /dev/null
+++ b/Test_case/level_1/3.json
@@ -0,0 +1,17 @@
+{
+  "upper": [
+    [
+      "s",
+      4,
+      -3
+    ]
+  ],
+  "lower": [
+    [
+      "p",
+      -4,
+      4
+    ]
+  ],
+  "block": []
+}
\ No newline at end of file
diff --git a/Test_case/level_1/4.json b/Test_case/level_1/4.json
new file mode 100644
index 0000000..e9110b1
--- /dev/null
+++ b/Test_case/level_1/4.json
@@ -0,0 +1,17 @@
+{
+  "upper": [
+    [
+      "p",
+      -4,
+      4
+    ]
+  ],
+  "lower": [
+    [
+      "r",
+      4,
+      -3
+    ]
+  ],
+  "block": []
+}
\ No newline at end of file
diff --git a/Test_case/level_1/5.json b/Test_case/level_1/5.json
new file mode 100644
index 0000000..33fe4a0
--- /dev/null
+++ b/Test_case/level_1/5.json
@@ -0,0 +1,17 @@
+{
+  "upper": [
+    [
+      "s",
+      -4,
+      4
+    ]
+  ],
+  "lower": [
+    [
+      "p",
+      4,
+      -3
+    ]
+  ],
+  "block": []
+}
\ No newline at end of file
diff --git a/Test_case/level_1/6.json b/Test_case/level_1/6.json
new file mode 100644
index 0000000..5178988
--- /dev/null
+++ b/Test_case/level_1/6.json
@@ -0,0 +1,17 @@
+{
+  "upper": [
+    [
+      "r",
+      -4,
+      4
+    ]
+  ],
+  "lower": [
+    [
+      "s",
+      4,
+      -3
+    ]
+  ],
+  "block": []
+}
\ No newline at end of file
diff --git a/Test_case/level_2/1.json b/Test_case/level_2/1.json
new file mode 100644
index 0000000..a944e46
--- /dev/null
+++ b/Test_case/level_2/1.json
@@ -0,0 +1,22 @@
+{
+  "upper": [
+    [
+      "r",
+      4,
+      -4
+    ]
+  ],
+  "lower": [
+    [
+      "s",
+      -4,
+      0
+    ],
+    [
+      "s",
+      -4,
+      1
+    ]
+  ],
+  "block": []
+}
\ No newline at end of file
diff --git a/Test_case/level_2/10.json b/Test_case/level_2/10.json
new file mode 100644
index 0000000..f604638
--- /dev/null
+++ b/Test_case/level_2/10.json
@@ -0,0 +1,22 @@
+{
+  "upper": [
+    [
+      "p",
+      -1,
+      1
+    ]
+  ],
+  "lower": [
+    [
+      "s",
+      -4,
+      4
+    ],
+    [
+      "r",
+      4,
+      -4
+    ]
+  ],
+  "block": []
+}
\ No newline at end of file
diff --git a/Test_case/level_2/11.json b/Test_case/level_2/11.json
new file mode 100644
index 0000000..f30b6e1
--- /dev/null
+++ b/Test_case/level_2/11.json
@@ -0,0 +1,27 @@
+{
+  "upper": [
+    [
+      "p",
+      -1,
+      1
+    ]
+  ],
+  "lower": [
+    [
+      "p",
+      -4,
+      0
+    ],
+    [
+      "s",
+      -4,
+      4
+    ],
+    [
+      "r",
+      4,
+      -4
+    ]
+  ],
+  "block": []
+}
\ No newline at end of file
diff --git a/Test_case/level_2/12.json b/Test_case/level_2/12.json
new file mode 100644
index 0000000..e1723e3
--- /dev/null
+++ b/Test_case/level_2/12.json
@@ -0,0 +1,32 @@
+{
+  "upper": [
+    [
+      "p",
+      -1,
+      1
+    ]
+  ],
+  "lower": [
+    [
+      "p",
+      -4,
+      0
+    ],
+    [
+      "s",
+      -4,
+      4
+    ],
+    [
+      "r",
+      4,
+      -4
+    ],
+    [
+      "s",
+      4,
+      -3
+    ]
+  ],
+  "block": []
+}
\ No newline at end of file
diff --git a/Test_case/level_2/13.json b/Test_case/level_2/13.json
new file mode 100644
index 0000000..db2db60
--- /dev/null
+++ b/Test_case/level_2/13.json
@@ -0,0 +1,148 @@
+{
+  "upper": [
+    [
+      "s",
+      0,
+      0
+    ]
+  ],
+  "lower": [
+    [
+      "s",
+      -4,
+      0
+    ],
+    [
+      "s",
+      -4,
+      4
+    ],
+    [
+      "s",
+      0,
+      -4
+    ],
+    [
+      "s",
+      0,
+      4
+    ],
+    [
+      "s",
+      4,
+      -4
+    ],
+    [
+      "s",
+      4,
+      0
+    ]
+  ],
+  "block": [
+    [
+      "",
+      -4,
+      1
+    ],
+    [
+      "",
+      -4,
+      2
+    ],
+    [
+      "",
+      -4,
+      3
+    ],
+    [
+      "",
+      -3,
+      -1
+    ],
+    [
+      "",
+      -3,
+      4
+    ],
+    [
+      "",
+      -2,
+      -2
+    ],
+    [
+      "",
+      -2,
+      4
+    ],
+    [
+      "",
+      -1,
+      -3
+    ],
+    [
+      "",
+      -1,
+      -2
+    ],
+    [
+      "",
+      -1,
+      -1
+    ],
+    [
+      "",
+      -1,
+      4
+    ],
+    [
+      "",
+      0,
+      -1
+    ],
+    [
+      "",
+      1,
+      -4
+    ],
+    [
+      "",
+      1,
+      3
+    ],
+    [
+      "",
+      2,
+      -4
+    ],
+    [
+      "",
+      2,
+      2
+    ],
+    [
+      "",
+      3,
+      -4
+    ],
+    [
+      "",
+      3,
+      1
+    ],
+    [
+      "",
+      4,
+      -3
+    ],
+    [
+      "",
+      4,
+      -2
+    ],
+    [
+      "",
+      4,
+      -1
+    ]
+  ]
+}
\ No newline at end of file
diff --git a/Test_case/level_2/2.json b/Test_case/level_2/2.json
new file mode 100644
index 0000000..5e97769
--- /dev/null
+++ b/Test_case/level_2/2.json
@@ -0,0 +1,27 @@
+{
+  "upper": [
+    [
+      "r",
+      4,
+      -4
+    ]
+  ],
+  "lower": [
+    [
+      "s",
+      -4,
+      0
+    ],
+    [
+      "s",
+      -4,
+      1
+    ],
+    [
+      "s",
+      -4,
+      2
+    ]
+  ],
+  "block": []
+}
\ No newline at end of file
diff --git a/Test_case/level_2/3.json b/Test_case/level_2/3.json
new file mode 100644
index 0000000..7426e92
--- /dev/null
+++ b/Test_case/level_2/3.json
@@ -0,0 +1,57 @@
+{
+  "upper": [
+    [
+      "r",
+      4,
+      -4
+    ]
+  ],
+  "lower": [
+    [
+      "s",
+      -4,
+      0
+    ],
+    [
+      "s",
+      -4,
+      1
+    ],
+    [
+      "s",
+      -4,
+      2
+    ],
+    [
+      "s",
+      -4,
+      3
+    ],
+    [
+      "s",
+      -4,
+      4
+    ],
+    [
+      "s",
+      -1,
+      2
+    ],
+    [
+      "s",
+      0,
+      -2
+    ],
+    [
+      "s",
+      1,
+      -4
+    ],
+    [
+      "s",
+      2,
+      0
+    ]
+  ],
+  "block": []
+}
\ No newline at end of file
diff --git a/Test_case/level_2/4.json b/Test_case/level_2/4.json
new file mode 100644
index 0000000..ef4ed18
--- /dev/null
+++ b/Test_case/level_2/4.json
@@ -0,0 +1,57 @@
+{
+  "upper": [
+    [
+      "p",
+      4,
+      -4
+    ]
+  ],
+  "lower": [
+    [
+      "s",
+      -4,
+      0
+    ],
+    [
+      "s",
+      -4,
+      1
+    ],
+    [
+      "s",
+      -4,
+      2
+    ],
+    [
+      "s",
+      -4,
+      3
+    ],
+    [
+      "s",
+      -4,
+      4
+    ],
+    [
+      "s",
+      -1,
+      2
+    ],
+    [
+      "s",
+      0,
+      -2
+    ],
+    [
+      "s",
+      1,
+      -4
+    ],
+    [
+      "s",
+      2,
+      0
+    ]
+  ],
+  "block": []
+}
\ No newline at end of file
diff --git a/Test_case/level_2/5.json b/Test_case/level_2/5.json
new file mode 100644
index 0000000..eeb596f
--- /dev/null
+++ b/Test_case/level_2/5.json
@@ -0,0 +1,68 @@
+{
+  "upper": [
+    [
+      "r",
+      4,
+      -4
+    ]
+  ],
+  "lower": [
+    [
+      "s",
+      -4,
+      0
+    ],
+    [
+      "s",
+      -4,
+      1
+    ],
+    [
+      "s",
+      -4,
+      2
+    ],
+    [
+      "s",
+      -4,
+      3
+    ],
+    [
+      "s",
+      -4,
+      4
+    ],
+    [
+      "s",
+      -1,
+      2
+    ],
+    [
+      "s",
+      1,
+      -4
+    ],
+    [
+      "s",
+      2,
+      0
+    ]
+  ],
+  "block": [
+    [
+      "",
+      0,
+      -2
+    ],
+    [
+      "",
+      0,
+      -1
+    ],
+    [
+      "",
+      0,
+      0
+    ]
+  ]
+}
\ No newline at end of file
diff --git a/Test_case/level_2/6.json b/Test_case/level_2/6.json
new file mode 100644
index 0000000..fb05a7d
--- /dev/null
+++ b/Test_case/level_2/6.json
@@ -0,0 +1,78 @@
+{
+  "upper": [
+    [
+      "r",
+      4,
+      -4
+    ]
+  ],
+  "lower": [
+    [
+      "s",
+      -4,
+      0
+    ],
+    [
+      "s",
+      -4,
+      2
+    ],
+    [
+      "s",
+      -4,
+      3
+    ],
+    [
+      "s",
+      -4,
+      4
+    ],
+    [
+      "s",
+      -1,
+      2
+    ],
+    [
+      "s",
+      1,
+      -4
+    ],
+    [
+      "s",
+      2,
+      0
+    ]
+  ],
+  "block": [
+    [
+      "",
+      -4,
+      1
+    ],
+    [
+      "",
+      -3,
+      -1
+    ],
+    [
+      "",
+      -3,
+      0
+    ],
+    [
+      "",
+      0,
+      -2
+    ],
+    [
+      "",
+      0,
+      -1
+    ],
+    [
+      "",
+      0,
+      0
+    ]
+  ]
+}
\ No newline at end of file
diff --git a/Test_case/level_2/7.json b/Test_case/level_2/7.json
new file mode 100644
index 0000000..14abc47
--- /dev/null
+++ b/Test_case/level_2/7.json
@@ -0,0 +1,63 @@
+{
+  "upper": [
+    [
+      "r",
+      4,
+      -4
+    ]
+  ],
+  "lower": [
+    [
+      "s",
+      -4,
+      0
+    ],
+    [
+      "s",
+      -4,
+      4
+    ],
+    [
+      "s",
+      -1,
+      2
+    ],
+    [
+      "s",
+      2,
+      0
+    ]
+  ],
+  "block": [
+    [
+      "",
+      -4,
+      2
+    ],
+    [
+      "",
+      -3,
+      -1
+    ],
+    [
+      "",
+      -3,
+      0
+    ],
+    [
+      "",
+      0,
+      -2
+    ],
+    [
+      "",
+      0,
+      -1
+    ],
+    [
+      "",
+      0,
+      0
+    ]
+  ]
+}
\ No newline at end of file
diff --git a/Test_case/level_2/8.json b/Test_case/level_2/8.json
new file mode 100644
index 0000000..32e5aed
--- /dev/null
+++ b/Test_case/level_2/8.json
@@ -0,0 +1,58 @@
+{
+  "upper": [
+    [
+      "p",
+      4,
+      -4
+    ]
+  ],
+  "lower": [
+    [
+      "r",
+      -4,
+      4
+    ],
+    [
+      "r",
+      2,
+      0
+    ]
+  ],
+  "block": [
+    [
+      "",
+      -4,
+      2
+    ],
+    [
+      "",
+      -3,
+      -1
+    ],
+    [
+      "",
+      -3,
+      0
+    ],
+    [
+      "",
+      -1,
+      2
+    ],
+    [
+      "",
+      0,
+      -2
+    ],
+    [
+      "",
+      0,
+      -1
+    ],
+    [
+      "",
+      0,
+      0
+    ]
+  ]
+}
\ No newline at end of file
diff --git a/Test_case/level_2/9.json b/Test_case/level_2/9.json
new file mode 100644
index 0000000..4415cea
--- /dev/null
+++ b/Test_case/level_2/9.json
@@ -0,0 +1,63 @@
+{
+  "upper": [
+    [
+      "p",
+      -1,
+      1
+    ]
+  ],
+  "lower": [
+    [
+      "r",
+      -4,
+      4
+    ],
+    [
+      "r",
+      4,
+      -4
+    ]
+  ],
+  "block": [
+    [
+      "",
+      -4,
+      2
+    ],
+    [
+      "",
+      -3,
+      -1
+    ],
+    [
+      "",
+      -3,
+      0
+    ],
+    [
+      "",
+      -1,
+      2
+    ],
+    [
+      "",
+      0,
+      -2
+    ],
+    [
+      "",
+      0,
+      -1
+    ],
+    [
+      "",
+      0,
+      0
+    ],
+    [
+      "",
+      2,
+      0
+    ]
+  ]
+}
\ No newline at end of file
diff --git a/Test_case/level_3/1.json b/Test_case/level_3/1.json
new file mode 100644
index 0000000..c09dda2
--- /dev/null
+++ b/Test_case/level_3/1.json
@@ -0,0 +1,27 @@
+{
+  "upper": [
+    [
+      "p",
+      -3,
+      3
+    ],
+    [
+      "p",
+      -1,
+      1
+    ]
+  ],
+  "lower": [
+    [
+      "r",
+      -4,
+      0
+    ],
+    [
+      "r",
+      4,
+      0
+    ]
+  ],
+  "block": []
+}
\ No newline at end of file
diff --git a/Test_case/level_3/10.json b/Test_case/level_3/10.json
new file mode 100644
index 0000000..273cde4
--- /dev/null
+++ b/Test_case/level_3/10.json
@@ -0,0 +1,63 @@
+{
+  "upper": [
+    [
+      "p",
+      2,
+      -3
+    ],
+    [
+      "s",
+      2,
+      1
+    ]
+  ],
+  "lower": [
+    [
+      "r",
+      -2,
+      4
+    ],
+    [
+      "r",
+      4,
+      0
+    ]
+  ],
+  "block": [
+    [
+      "",
+      -4,
+      1
+    ],
+    [
+      "",
+      -3,
+      1
+    ],
+    [
+      "",
+      -2,
+      1
+    ],
+    [
+      "",
+      -1,
+      1
+    ],
+    [
+      "",
+      0,
+      1
+    ],
+    [
+      "",
+      1,
+      1
+    ],
+    [
+      "",
+      3,
+      1
+    ]
+  ]
+}
\ No newline at end of file
diff --git a/Test_case/level_3/11.json b/Test_case/level_3/11.json
new file mode 100644
index 0000000..4208779
--- /dev/null
+++ b/Test_case/level_3/11.json
@@ -0,0 +1,68 @@
+{
+  "upper": [
+    [
+      "r",
+      -1,
+      3
+    ],
+    [
+      "p",
+      2,
+      -3
+    ]
+  ],
+  "lower": [
+    [
+      "r",
+      -2,
+      4
+    ],
+    [
+      "r",
+      4,
+      0
+    ]
+  ],
+  "block": [
+    [
+      "",
+      -4,
+      1
+    ],
+    [
+      "",
+      -3,
+      1
+    ],
+    [
+      "",
+      -2,
+      1
+    ],
+    [
+      "",
+      -1,
+      1
+    ],
+    [
+      "",
+      0,
+      1
+    ],
+    [
+      "",
+      0,
+      3
+    ],
+    [
+      "",
+      1,
+      1
+    ],
+    [
+      "",
+      3,
+      1
+    ]
+  ]
+}
\ No newline at end of file
diff --git a/Test_case/level_3/2.json b/Test_case/level_3/2.json
new file mode 100644
index 0000000..8e24fb4
--- /dev/null
+++ b/Test_case/level_3/2.json
@@ -0,0 +1,32 @@
+{
+  "upper": [
+    [
+      "p",
+      -3,
+      3
+    ],
+    [
+      "p",
+      -1,
+      1
+    ]
+  ],
+  "lower": [
+    [
+      "r",
+      -4,
+      0
+    ],
+    [
+      "r",
+      -4,
+      4
+    ],
+    [
+      "r",
+      4,
+      0
+    ]
+  ],
+  "block": []
+}
\ No newline at end of file
diff --git a/Test_case/level_3/3.json b/Test_case/level_3/3.json
new file mode 100644
index 0000000..497dcd5
--- /dev/null
+++ b/Test_case/level_3/3.json
@@ -0,0 +1,22 @@
+{
+  "upper": [
+    [
+      "p",
+      -3,
+      3
+    ],
+    [
+      "p",
+      -1,
+      1
+    ]
+  ],
+  "lower": [
+    [
+      "r",
+      4,
+      0
+    ]
+  ],
+  "block": []
+}
\ No newline at end of file
diff --git a/Test_case/level_3/4.json b/Test_case/level_3/4.json
new file mode 100644
index 0000000..c8aa28f
--- /dev/null
+++ b/Test_case/level_3/4.json
@@ -0,0 +1,32 @@
+{
+  "upper": [
+    [
+      "p",
+      -3,
+      3
+    ],
+    [
+      "p",
+      -1,
+      1
+    ]
+  ],
+  "lower": [
+    [
+      "r",
+      2,
+      2
+    ],
+    [
+      "r",
+      3,
+      1
+    ],
+    [
+      "r",
+      4,
+      0
+    ]
+  ],
+  "block": []
+}
\ No newline at end of file
diff --git a/Test_case/level_3/5.json b/Test_case/level_3/5.json
new file mode 100644
index 0000000..88ad985
--- /dev/null
+++ b/Test_case/level_3/5.json
@@ -0,0 +1,32 @@
+{
+  "upper": [
+    [
+      "p",
+      -1,
+      1
+    ],
+    [
+      "r",
+      0,
+      1
+    ]
+  ],
+  "lower": [
+    [
+      "r",
+      2,
+      2
+    ],
+    [
+      "r",
+      3,
+      1
+    ],
+    [
+      "r",
+      4,
+      0
+    ]
+  ],
+  "block": []
+}
\ No newline at end of file
diff --git a/Test_case/level_3/6.json b/Test_case/level_3/6.json
new file mode 100644
index 0000000..26a7232
--- /dev/null
+++ b/Test_case/level_3/6.json
@@ -0,0 +1,32 @@
+{
+  "upper": [
+    [
+      "p",
+      -1,
+      1
+    ],
+    [
+      "s",
+      2,
+      1
+    ]
+  ],
+  "lower": [
+    [
+      "r",
+      2,
+      2
+    ],
+    [
+      "r",
+      3,
+      1
+    ],
+    [
+      "r",
+      4,
+      0
+    ]
+  ],
+  "block": []
+}
\ No newline at end of file
diff --git a/Test_case/level_3/7.json b/Test_case/level_3/7.json
new file mode 100644
index 0000000..b3ff22f
--- /dev/null
+++ b/Test_case/level_3/7.json
@@ -0,0 +1,33 @@
+{
+  "upper": [
+    [
+      "p",
+      -1,
+      1
+    ],
+    [
+      "s",
+      2,
+      1
+    ]
+  ],
+  "lower": [
+    [
+      "r",
+      2,
+      2
+    ],
+    [
+      "r",
+      4,
+      0
+    ]
+  ],
+  "block": [
+    [
+      "",
+      3,
+      1
+    ]
+  ]
+}
\ No newline at end of file
diff --git a/Test_case/level_3/8.json b/Test_case/level_3/8.json
new file mode 100644
index 0000000..0b5b5e0
--- /dev/null
+++ b/Test_case/level_3/8.json
@@ -0,0 +1,48 @@
+{
+  "upper": [
+    [
+      "s",
+      2,
+      1
+    ],
+    [
+      "p",
+      4,
+      -4
+    ]
+  ],
+  "lower": [
+    [
+      "r",
+      -2,
+      4
+    ],
+    [
+      "r",
+      4,
+      0
+    ]
+  ],
+  "block": [
+    [
+      "",
+      -1,
+      1
+    ],
+    [
+      "",
+      0,
+      1
+    ],
+    [
+      "",
+      1,
+      1
+    ],
+    [
+      "",
+      3,
+      1
+    ]
+  ]
+}
\ No newline at end of file
diff --git a/Test_case/level_3/9.json b/Test_case/level_3/9.json
new file mode 100644
index 0000000..905b587
--- /dev/null
+++ b/Test_case/level_3/9.json
@@ -0,0 +1,58 @@
+{
+  "upper": [
+    [
+      "p",
+      2,
+      -3
+    ],
+    [
+      "s",
+      2,
+      1
+    ]
+  ],
+  "lower": [
+    [
+      "r",
+      -2,
+      4
+    ],
+    [
+      "r",
+      4,
+      0
+    ]
+  ],
+  "block": [
+    [
+      "",
+      -3,
+      1
+    ],
+    [
+      "",
+      -2,
+      1
+    ],
+    [
+      "",
+      -1,
+      1
+    ],
+    [
+      "",
+      0,
+      1
+    ],
+    [
+      "",
+      1,
+      1
+    ],
+    [
+      "",
+      3,
+      1
+    ]
+  ]
+}
\ No newline at end of file
diff --git a/Test_case/level_4/1.json b/Test_case/level_4/1.json
new file mode 100644
index 0000000..7863e69
--- /dev/null
+++ b/Test_case/level_4/1.json
@@ -0,0 +1,27 @@
+{
+  "upper": [
+    [
+      "r",
+      2,
+      -4
+    ],
+    [
+      "p",
+      2,
+      -3
+    ],
+    [
+      "p",
+      3,
+      -4
+    ]
+  ],
+  "lower": [
+    [
+      "s",
+      4,
+      0
+    ]
+  ],
+  "block": []
+}
\ No newline at end of file
diff --git a/Test_case/level_4/2.json b/Test_case/level_4/2.json
new file mode 100644
index 0000000..6899b9b
--- /dev/null
+++ b/Test_case/level_4/2.json
@@ -0,0 +1,33 @@
+{
+  "upper": [
+    [
+      "r",
+      2,
+      -4
+    ],
+    [
+      "s",
+      2,
+      -3
+    ],
+    [
+      "p",
+      3,
+      -4
+    ]
+  ],
+  "lower": [
+    [
+      "s",
+      4,
+      0
+    ]
+  ],
+  "block": [
+    [
+      "",
+      3,
+      -3
+    ]
+  ]
+}
\ No newline at end of file
diff --git a/Test_case/level_4/3.json b/Test_case/level_4/3.json
new file mode 100644
index 0000000..838eb34
--- /dev/null
+++ b/Test_case/level_4/3.json
@@ -0,0 +1,37 @@
+{
+  "upper": [
+    [
+      "s",
+      0,
+      -1
+    ],
+    [
+      "r",
+      0,
+      0
+    ],
+    [
+      "p",
+      0,
+      1
+    ]
+  ],
+  "lower": [
+    [
+      "s",
+      -4,
+      0
+    ],
+    [
+      "p",
+      -4,
+      2
+    ],
+    [
+      "r",
+      -4,
+      4
+    ]
+  ],
+  "block": []
+}
\ No newline at end of file
diff --git a/Test_case/level_4/4.json b/Test_case/level_4/4.json
new file mode 100644
index 0000000..862f4f8
--- /dev/null
+++ b/Test_case/level_4/4.json
@@ -0,0 +1,37 @@
+{
+  "upper": [
+    [
+      "s",
+      -4,
+      2
+    ],
+    [
+      "p",
+      0,
+      0
+    ],
+    [
+      "p",
+      4,
+      0
+    ]
+  ],
+  "lower": [
+    [
+      "s",
+      -4,
+      0
+    ],
+    [
+      "p",
+      -4,
+      1
+    ],
+    [
+      "r",
+      -4,
+      4
+    ]
+  ],
+  "block": []
+}
\ No newline at end of file
diff --git a/Test_case/level_4/5.json b/Test_case/level_4/5.json
new file mode 100644
index 0000000..3fbb437
--- /dev/null
+++ b/Test_case/level_4/5.json
@@ -0,0 +1,68 @@
+{
+  "upper": [
+    [
+      "s",
+      -4,
+      2
+    ],
+    [
+      "s",
+      0,
+      0
+    ],
+    [
+      "p",
+      4,
+      0
+    ]
+  ],
+  "lower": [
+    [
+      "s",
+      -4,
+      0
+    ],
+    [
+      "p",
+      -4,
+      1
+    ],
+    [
+      "r",
+      -4,
+      4
+    ],
+    [
+      "s",
+      -3,
+      4
+    ],
+    [
+      "s",
+      0,
+      -4
+    ],
+    [
+      "s",
+      0,
+      4
+    ],
+    [
+      "s",
+      4,
+      -4
+    ],
+    [
+      "s",
+      4,
+      -1
+    ]
+  ],
+  "block": [
+    [
+      "",
+      0,
+      -1
+    ]
+  ]
+}
\ No newline at end of file
diff --git a/search/method.py b/search/method.py
new file mode 100644
index 0000000..f17fa2e
--- /dev/null
+++ b/search/method.py
@@ -0,0 +1,92 @@
+
+from src.search.util import print_board
+import json
+
+"""
+Read from JSON file:
+    -> load each piece into board's dictionary.
+    -> ensure format token to distinguish between upper and lower.
+    -> handling file IO exception
+"""
+def to_board(file):
+    TYPE = 0
+    X_COORD = 1
+    Y_COORD = 2
+
+    if not isinstance(file, str):
+        print("Pass invalid argument to to_board()~!!!")
+        exit(-1)
+    try:
+        # open the file handle by json module
+        FILE = open(file)
+        game = json.load(FILE)
+
+        board = {}
+        # iterate through the entity who is not empty in order to add it type and coordinate to dictionary.
+        for entity in game.keys():
+
+            if game[entity]:
+
+                for token in game[entity]:
+                    if entity == 'upper':
+                        board[(int(token[X_COORD]), int(token[Y_COORD]))] = token[TYPE].upper()
+                    else:
+                        board[(int(token[X_COORD]), int(token[Y_COORD]))] = token[TYPE]
+
+        FILE.close()
+        return board
+
+    except IOError:
+        print("There is an issue when try to open file")
+        exit(-1)
+
+
+"""
+taken from https://www.redblobgames.com/grids/hexagons/
+under section: double coordinates for doublewidth
+->
+"""
+def distance_between(Upper_token, Lower_token):
+    dx = abs(Upper_token[0] - Lower_token[0])
+    dy = abs(Upper_token[1] - Lower_token[1])
+
+    return dx + max(0, (dy - dx) / 2)
+
+
+"""
+movement logic
+"""
+row = 1
+collumn = 2
+
+def move_left(coordinate):
+    if coordinate:
+        coordinate[collumn] -= 1
+
+def move_right(coordinate):
+    if coordinate:
+        coordinate[collumn] += 1
+
+def move_up_left(coordinate):
+    if coordinate:
+        coordinate[collumn] -= 1
+        coordinate[row] += 1
+
+def move_up_right(coordinate):
+    if coordinate:
+        coordinate[row] += 1
+
+
+def move_down_left(coordinate):
+    if coordinate:
+        coordinate[row] -= 1
+
+def move_down_right(coordinate):
+    if coordinate:
+        coordinate[row] -= 1
+        coordinate[collumn] += 1
+
+
+def transfer_move_to_board(, coordinate, new_coordinate):
+    if not board[new_coordinate]
+print(distance_between([-3, 0], [1, 0]))
-- 
GitLab