about summary refs log tree commit diff stats
path: root/lib/Neighbors.rakumod
diff options
context:
space:
mode:
authorAndinus <andinus@nand.sh>2021-01-19 21:53:16 +0530
committerAndinus <andinus@nand.sh>2021-01-19 21:53:16 +0530
commita5c540608c469a2797262facb766e175b932f0e2 (patch)
tree1e0eb79678d66f5ba657c63003592029757aefe7 /lib/Neighbors.rakumod
parent5bb0f224483fbc1d57fd1c5a2f4a22dd7263ecd6 (diff)
downloadoctans-0.1.0.tar.gz
Re-structure for CPAN upload, include a dictionary file v0.1.0
bin/octans calls lib/Octans/CLI.rakumod which has the MAIN subroutine.
Diffstat (limited to 'lib/Neighbors.rakumod')
-rw-r--r--lib/Neighbors.rakumod53
1 files changed, 0 insertions, 53 deletions
diff --git a/lib/Neighbors.rakumod b/lib/Neighbors.rakumod
deleted file mode 100644
index 41cb35d..0000000
--- a/lib/Neighbors.rakumod
+++ /dev/null
@@ -1,53 +0,0 @@
-unit module Neighbors;
-
-# neighbors returns the neighbors of given index. Neighbors are cached
-# in @neighbors array. This way we don't have to compute them
-# everytime neighbors subroutine is called for the same position.
-sub neighbors (
-    @puzzle, Int $y, Int $x --> List
-) is export {
-    # @directions is holding a list of directions we can move in. It's
-    # used later for neighbors subroutine.
-    state List @directions = (
-        # $y, $x
-        ( +1, +0 ), # bottom
-        ( -1, +0 ), # top
-        ( +0, +1 ), # left
-        ( +0, -1 ), # right
-    );
-
-    # @neighbors holds the neighbors of given position.
-    state Array @neighbors;
-
-    if @puzzle[$y][$x] {
-
-        # If we've already computed the neighbors then no need to do
-        # it again.
-        unless @neighbors[$y][$x] {
-            my Int $pos-x;
-            my Int $pos-y;
-
-            # Starting from the intital position of $y, $x we move to
-            # each direction according to the values specified in
-            # @directions array. In this case we're just trying to
-            # move in 4 directions (top, bottom, left & right).
-            DIRECTION: for @directions -> $direction {
-                $pos-y = $y + $direction[0];
-                $pos-x = $x + $direction[1];
-
-                # If movement in this direction is out of puzzle grid
-                # boundary then move on to next direction.
-                next DIRECTION unless @puzzle[$pos-y][$pos-x];
-
-                # If neighbors exist in this direction then add them
-                # to @neighbors[$y][$x] array.
-                push @neighbors[$y][$x], [$pos-y, $pos-x];
-            }
-        }
-    } else {
-        # If it's out of boundary then return no neighbor.
-        @neighbors[$y][$x] = [];
-    }
-
-    return @neighbors[$y][$x];
-}