aboutsummaryrefslogtreecommitdiffstats
path: root/lib/Octans/CLI.rakumod
diff options
context:
space:
mode:
authorAndinus <andinus@nand.sh>2021-02-28 20:14:32 +0530
committerAndinus <andinus@nand.sh>2021-02-28 20:14:32 +0530
commit07d3e5bc170b84471144649216f42686e3ef2b43 (patch)
treed36b6e35e21be18eff73f4a6b686de753268d55e /lib/Octans/CLI.rakumod
parentc029e07dd1fea194a674fe9dfee35e3c7a63be06 (diff)
downloadoctans-07d3e5bc170b84471144649216f42686e3ef2b43.tar.gz
Remove sample puzzle
Diffstat (limited to 'lib/Octans/CLI.rakumod')
-rw-r--r--lib/Octans/CLI.rakumod55
1 files changed, 19 insertions, 36 deletions
diff --git a/lib/Octans/CLI.rakumod b/lib/Octans/CLI.rakumod
index 4522571..1c1f0cc 100644
--- a/lib/Octans/CLI.rakumod
+++ b/lib/Octans/CLI.rakumod
@@ -1,28 +1,15 @@
use Octans::Puzzle;
use Octans::WordSearch;
-# If no arguments are passed then run USAGE & exit.
proto MAIN (|) is export {unless so @*ARGS {USAGE(); exit;}; {*}}
-multi sub MAIN (Bool :$version) is hidden-from-USAGE {
- say "Octans v" ~ $?DISTRIBUTION.meta<version>;
-}
-
multi sub MAIN (
- Str $path?, #= path to the crossword (file or url)
+ Str $path, #= path to the crossword (file or url)
Str :$dict = (%?RESOURCES<mwords/354984si.ngl> //
"/usr/share/dict/words").Str, #= dictionary file
Int :$length = 7, #= minimum word length (default: 7)
- Bool :s($sample), #= run the sample puzzle
Bool :v($verbose), #= increase verbosity
- Bool :$version, #= print version
) {
- # Print usage & exit if both sample & path are not passed.
- unless ($sample or $path) {
- USAGE();
- exit;
- }
-
# @dict holds the sorted dictionary. Only consider words >= 7
# chars by default.
my Str @dict = $dict.IO.lines.grep(*.chars >= $length);
@@ -33,23 +20,11 @@ multi sub MAIN (
# positions in the puzzle.
my (@puzzle, @gray-squares);
- # Set the sample puzzle if requested.
- if $sample {
- @puzzle = [
- [<n a t k>],
- [<i m e c>],
- [<a* r d e>],
- [<t* e c h>],
- ];
- }
-
- # Get the puzzle from $path if it's passed.
- with $path {
- if $path.IO.f {
- @puzzle = $path.IO.lines.map(*.words.cache.Array);
- } else {
- @puzzle = get-puzzle($path);
- }
+ # Get the puzzle from $path.
+ if $path.IO.f {
+ @puzzle = $path.IO.lines.map(*.words.cache.Array);
+ } else {
+ @puzzle = get-puzzle($path);
}
# set-gray-squares also removes asterisks from @puzzle.
@@ -69,8 +44,8 @@ multi sub MAIN (
# 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̶>;
+ 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 {
@@ -87,9 +62,9 @@ multi sub MAIN (
$word, @visited
) {
# Print the word, along with the time taken (if $verbose).
- say ($verbose ??
- "\n" ~ $word ~ " [" ~ DateTime.now - $initial ~ "𝑠]" !!
- $word);
+ say ($verbose
+ ?? "\n" ~ $word ~ " [" ~ DateTime.now - $initial ~ "𝑠]"
+ !! $word);
# Print the puzzle, highlighting the path.
if $verbose {
@@ -119,3 +94,11 @@ sub USAGE {
a* r d e
t* e c h";
}
+
+multi sub MAIN (
+ Bool :$version #= print version
+) { say "Octans v" ~ $?DISTRIBUTION.meta<version>; }
+
+multi sub MAIN (
+ Bool :$help #= print help
+) { USAGE(); exit; }