From edf8a7290888977ff0bc625f02a81abbc37fb984 Mon Sep 17 00:00:00 2001 From: Andinus Date: Tue, 2 Mar 2021 23:55:59 +0530 Subject: Re-structure code These changes should make it easier to read the code. --- lib/Octans/CLI.rakumod | 35 +++++++++++++++++++---------------- lib/Octans/Neighbors.rakumod | 4 ++-- 2 files changed, 21 insertions(+), 18 deletions(-) diff --git a/lib/Octans/CLI.rakumod b/lib/Octans/CLI.rakumod index 3e15dcf..744fba8 100644 --- a/lib/Octans/CLI.rakumod +++ b/lib/Octans/CLI.rakumod @@ -30,12 +30,13 @@ multi sub MAIN ( # set-gray-squares also removes asterisks from @puzzle. @gray-squares = set-gray-squares(@puzzle); # ($y, $x) - if $verbose { + if so $verbose { # Don't print path if using the dictionary included with the # program. - say "Dictionary: ", $dict.Str - unless ($dict.Str - eq %?RESOURCES.Str); + unless $dict.Str eq %?RESOURCES.Str { + say "Dictionary: " ~ $dict.Str; + } + say "Gray squares: ", @gray-squares; say "Puzzle"; " $_".say for @puzzle; @@ -54,7 +55,7 @@ multi sub MAIN ( # gather all the words that word-search finds starting from # $pos. - for gather word-search( + word: for gather word-search( @dict, @puzzle, $pos[0], $pos[1], ) -> ( # word-search returns the word along with @visited which @@ -62,24 +63,26 @@ multi sub MAIN ( # word was found. $word, @visited ) { - # Print the word, along with the time taken (if $verbose). - say ($verbose - ?? "\n" ~ $word ~ " [" ~ DateTime.now - $initial ~ "𝑠]" - !! $word); + # If not $verbose then print the word. + unless so $verbose { + say $word; + next word; + } + + # Print the word, along with the time taken. + say "\n" ~ $word ~ " [" ~ DateTime.now - $initial ~ "𝑠]"; # Print the puzzle, highlighting the path. - if $verbose { - for ^@puzzle.elems -> $y { - print " " x 3; - for ^@puzzle[$y].elems -> $x { - print " ", ( + for ^@puzzle.elems -> $y { + print " " x 3; + for ^@puzzle[$y].elems -> $x { + print " " ~ ( @visited[$y][$x] ?? (%π’»π’Άπ“ƒπ’Έπ“Ž-π’Έπ’½π’Άπ“‡π“ˆ{@puzzle[$y][$x]} // @puzzle[$y][$x]) !! @puzzle[$y][$x] ); - } - print "\n"; } + print "\n"; } } } diff --git a/lib/Octans/Neighbors.rakumod b/lib/Octans/Neighbors.rakumod index 33dd834..0c90b0c 100644 --- a/lib/Octans/Neighbors.rakumod +++ b/lib/Octans/Neighbors.rakumod @@ -34,13 +34,13 @@ sub neighbors ( # 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 { + 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]; + next direction unless @puzzle[$pos-y][$pos-x]; # If neighbors exist in this direction then add them # to @neighbors[$y][$x] array. -- cgit 1.4.1-2-gfad0