diff options
author | Andinus <andinus@nand.sh> | 2021-01-19 21:53:16 +0530 |
---|---|---|
committer | Andinus <andinus@nand.sh> | 2021-01-19 21:53:16 +0530 |
commit | a5c540608c469a2797262facb766e175b932f0e2 (patch) | |
tree | 1e0eb79678d66f5ba657c63003592029757aefe7 /octans.raku | |
parent | 5bb0f224483fbc1d57fd1c5a2f4a22dd7263ecd6 (diff) | |
download | octans-a5c540608c469a2797262facb766e175b932f0e2.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 'octans.raku')
-rwxr-xr-x | octans.raku | 76 |
1 files changed, 0 insertions, 76 deletions
diff --git a/octans.raku b/octans.raku deleted file mode 100755 index e65613e..0000000 --- a/octans.raku +++ /dev/null @@ -1,76 +0,0 @@ -#!/usr/bin/env raku - -use v6.d; -use lib 'lib'; -use Puzzle; -use WordSearch; - -unit sub MAIN ( - Str $url?, #= url for Algot's crossword - Str :$dict = "/usr/share/dict/words", #= dictionary file - Bool :v($verbose), #= increase verbosity -); - -# @dict holds the sorted dictionary. Only consider words >= 7 chars. -my Str @dict = $dict.IO.lines.grep(*.chars >= 7); - -# @puzzle holds the puzzle. -# -# @gray-squares holds the list of indexes of valid starting positions -# in the puzzle. -my (@puzzle, @gray-squares); -@puzzle = [ - [<n a t k>], - [<i m e c>], - [<a r d e>], - [<t e c h>] -]; -@gray-squares = [3, 0], [2, 0]; # $y, $x - -# Get the puzzle from $url if it's passed. -get-puzzle($url, @puzzle, @gray-squares) with $url; - -if $verbose { - say "Gray squares: ", @gray-squares; - say "Puzzle"; - " $_".say for @puzzle; -} - -# After the solution is found, the path is printed with these fancy chars. -my %𝒻𝒶𝓃𝒸𝓎-𝒸𝒽𝒶𝓇𝓈 = <a a̶ b b̶ c c̶ d d̶ e e̶ f f̶ g g̶ h h̶ i i̶ j j̶ k k̶ l l̶ m m̶ - n n̶ o o̶ p p̶ q q̶ r r̶ s s̶ t t̶ u u̶ v v̶ w w̶ x x̶ y y̶ z z̶>; - -# start-pos block loops over each starting position. -start-pos: for @gray-squares -> $pos { - my DateTime $initial = DateTime.now; - - # gather all the words that word-search finds starting from $pos. - for gather word-search( - @dict, @puzzle, $pos[0], $pos[1], - ) -> ( - # word-search returns the word along with @visited which holds - # the list of all grids that were visited when the word was - # found. - $word, @visited - ) { - # Print the word, along with the time taken (if $verbose). - say ($verbose ?? - "\n" ~ $word ~ " [" ~ DateTime.now - $initial ~ "𝑠]" !! - $word); - - # Print the puzzle, highlighting the path. - if $verbose { - 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"; - } - } - } -} |