diff options
| author | chirvasitua <stuart-little@users.noreply.github.com> | 2020-11-26 09:30:17 -0500 |
|---|---|---|
| committer | chirvasitua <stuart-little@users.noreply.github.com> | 2020-11-26 09:30:17 -0500 |
| commit | d9ae8542049005ac7ff4bb40fa3e030bd0b27ae2 (patch) | |
| tree | a0e2b2545457567161c988cc3ad5e7a29285787e /challenge-007 | |
| parent | 7e12ec84ba25873bf1f0bb594bf3c9148eed8acd (diff) | |
| download | perlweeklychallenge-club-d9ae8542049005ac7ff4bb40fa3e030bd0b27ae2.tar.gz perlweeklychallenge-club-d9ae8542049005ac7ff4bb40fa3e030bd0b27ae2.tar.bz2 perlweeklychallenge-club-d9ae8542049005ac7ff4bb40fa3e030bd0b27ae2.zip | |
1st commit on 007-009,011
Diffstat (limited to 'challenge-007')
| -rw-r--r-- | challenge-007/stuart-little/README | 1 | ||||
| -rwxr-xr-x | challenge-007/stuart-little/raku/ch-1.p6 | 7 | ||||
| -rwxr-xr-x | challenge-007/stuart-little/raku/ch-2.p6 | 43 |
3 files changed, 51 insertions, 0 deletions
diff --git a/challenge-007/stuart-little/README b/challenge-007/stuart-little/README new file mode 100644 index 0000000000..78439907de --- /dev/null +++ b/challenge-007/stuart-little/README @@ -0,0 +1 @@ +Solutions by Stuart Little diff --git a/challenge-007/stuart-little/raku/ch-1.p6 b/challenge-007/stuart-little/raku/ch-1.p6 new file mode 100755 index 0000000000..5b6fd4b786 --- /dev/null +++ b/challenge-007/stuart-little/raku/ch-1.p6 @@ -0,0 +1,7 @@ +#!/usr/bin/env perl6 +use v6; + +say 0; +for (1..(@*ARGS[0] || 50).Int).grep({ $_ %% $_.comb.sum }) {.say} + +# run as <script> <upper bound> or just <script> to default to range <1..50> diff --git a/challenge-007/stuart-little/raku/ch-2.p6 b/challenge-007/stuart-little/raku/ch-2.p6 new file mode 100755 index 0000000000..5d438ce3cf --- /dev/null +++ b/challenge-007/stuart-little/raku/ch-2.p6 @@ -0,0 +1,43 @@ +#!/usr/bin/env perl6 +use v6; + +my %*SUB-MAIN-OPTS=:named-anywhere,; +sub MAIN( + $source-word, + $target-word, + Str :f(:$file), +) { + + my @words=($file) ?? ($file.IO.lines) !! ($=finish.lines); + + my %conn=mkhash(@words); my %cur=($source-word=>True); my %vis=@words.map({ $_ => () }); %vis{$source-word}=($source-word,); + + say fndpth($source-word,$target-word,%conn,%cur,%vis); + +} + +sub dist($w1,$w2) { ($w1.comb Zne $w2.comb).sum }; sub mkhash(@w) { @w.map({ $_ => @w.grep( -> $w {dist($_,$w)==1} ).Array }).Hash } + +sub fndpth($s,$t,%conn,%cur,%vis) { + while ( + (%conn.{%cur.keys}.map(|*) (-) %vis.grep({ $_.value }).Hash.keys) && (! %vis{$t}) + ) { + my %next=(%conn.{%cur.keys}.map(|*) (-) %vis.grep({ $_.value }).Hash.keys); + for %cur.keys { + %conn{$_}.map(-> $node {%vis{$node}||=(|%vis{$_},$node)}) + } + %cur=%next; + } + (%vis{$t}) && %vis{$t} || () +} + +=finish +cold +cord +core +care +card +ward +warm + + |
