From 452297c8a0b9bf0298f62d172ccb3bd79797b3c5 Mon Sep 17 00:00:00 2001 From: "Markus \"Holli\" Holzer" Date: Wed, 2 Sep 2020 12:44:45 +0200 Subject: initial --- challenge-076/markus-holzer/raku/ch-2.board | 19 ++++++++++ challenge-076/markus-holzer/raku/ch-2.raku | 21 +++++++++++ challenge-076/markus-holzer/raku/ch-2.words | 54 +++++++++++++++++++++++++++++ 3 files changed, 94 insertions(+) create mode 100644 challenge-076/markus-holzer/raku/ch-2.board create mode 100644 challenge-076/markus-holzer/raku/ch-2.raku create mode 100644 challenge-076/markus-holzer/raku/ch-2.words diff --git a/challenge-076/markus-holzer/raku/ch-2.board b/challenge-076/markus-holzer/raku/ch-2.board new file mode 100644 index 0000000000..c5766eae93 --- /dev/null +++ b/challenge-076/markus-holzer/raku/ch-2.board @@ -0,0 +1,19 @@ +B I D E M I A T S U C C O R S T +L D E G G I W Q H O D E E H D P +U S E I R U B U T E A S L A G U +N G N I Z I L A I C O S C N U D +T G M I D S T S A R A R E I F G +S R E N M D C H A S I V E E L I +S C S H A E U E B R O A D M T E +H W O V L P E D D L A I U L S S +R Y O N L A S F C S T A O G O T +I G U S S R R U G O V A R Y O C +N R G P A T N A N G I L A M O O +E I H A C E I V I R U S E S E D +S E T S U D T T G A R L I C N H +H V R M X L W I U M S N S O T B +A E A O F I L C H T O D C A E U +Z S C D F E C A A I I R L N R F +A R I I A N Y U T O O O U T P F +R S E C I S N A B O S C N E R A +D R S M P C U U N E L T E S I L \ No newline at end of file diff --git a/challenge-076/markus-holzer/raku/ch-2.raku b/challenge-076/markus-holzer/raku/ch-2.raku new file mode 100644 index 0000000000..fd5164fd31 --- /dev/null +++ b/challenge-076/markus-holzer/raku/ch-2.raku @@ -0,0 +1,21 @@ +unit sub MAIN( $fw, $fb ); + +my @w = $fw.IO.lines.sort; +my @b = $fb.IO.lines( :chomp( False ) ).map: *.subst(' ', '', :g); +my $c = @b.first.chars; +my @c = @b.map( |*.comb ); + +.say for sort map { | f r $_ }, 0, 90, 45, -45; + +multi r( 0 ) { @c.batch( $c ) } +multi r( 90 ) { r - 1, 0 } +multi r( 45 ) { r 0, 2 } +multi r( -45 ) { r -1, -1 } +multi r( $i, $j ) { + map { @c[ $_, ( $_ + $c + $j ) ... * ] }, ^$c - $i } + +sub f( @b ) { + gather for @b>>.join -> $b { + for $b, $b.flip -> $l { + for $l ~~ m:ex:i/ @w / { + take ~$_ }}}} \ No newline at end of file diff --git a/challenge-076/markus-holzer/raku/ch-2.words b/challenge-076/markus-holzer/raku/ch-2.words new file mode 100644 index 0000000000..f566351133 --- /dev/null +++ b/challenge-076/markus-holzer/raku/ch-2.words @@ -0,0 +1,54 @@ +argos +margo +patna +traci +tracie +aimed +align +antes +arose +ashed +blunt +blunts +broad +buries +clove +cloven +constitution +constitutions +croon +depart +departed +enter +filch +garlic +goats +grieve +grieves +hazard +liens +malign +malignant +malls +midst +ought +ovary +parted +pudgiest +quash +quashed +raped +ruses +shrine +shrines +social +socializing +spasm +spasmodic +succor +succors +theorem +theorems +virus +viruses +wigged \ No newline at end of file -- cgit From 84e72f5195e64ffb1e509812df8db0e01e7bf68c Mon Sep 17 00:00:00 2001 From: "Markus \"Holli\" Holzer" Date: Wed, 2 Sep 2020 13:19:18 +0200 Subject: initial --- challenge-076/markus-holzer/raku/ch-2.raku | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/challenge-076/markus-holzer/raku/ch-2.raku b/challenge-076/markus-holzer/raku/ch-2.raku index fd5164fd31..51e37f950b 100644 --- a/challenge-076/markus-holzer/raku/ch-2.raku +++ b/challenge-076/markus-holzer/raku/ch-2.raku @@ -5,14 +5,14 @@ my @b = $fb.IO.lines( :chomp( False ) ).map: *.subst(' ', '', :g); my $c = @b.first.chars; my @c = @b.map( |*.comb ); -.say for sort map { | f r $_ }, 0, 90, 45, -45; +.say for map { | f r $_ }, 0, 90, 45, -45; multi r( 0 ) { @c.batch( $c ) } -multi r( 90 ) { r - 1, 0 } -multi r( 45 ) { r 0, 2 } -multi r( -45 ) { r -1, -1 } -multi r( $i, $j ) { - map { @c[ $_, ( $_ + $c + $j ) ... * ] }, ^$c - $i } +multi r( 90 ) { r 0, 0, 0 } +multi r( -45 ) { r 0, 1, 0 } +multi r( 45 ) { r 1, 0, 1 } +multi r( $i, $j, $o ) { + map { @c[ $_ + $o, ( $_ + $c + $j ) ... * ] }, ^$c - $i } sub f( @b ) { gather for @b>>.join -> $b { -- cgit From 727fbdf69816b094a2ed12642585a161673ec093 Mon Sep 17 00:00:00 2001 From: "Markus \"Holli\" Holzer" Date: Fri, 4 Sep 2020 00:46:40 +0200 Subject: enhanced --- challenge-076/markus-holzer/raku/ch-2.raku | 30 +++++++++++++----------------- 1 file changed, 13 insertions(+), 17 deletions(-) diff --git a/challenge-076/markus-holzer/raku/ch-2.raku b/challenge-076/markus-holzer/raku/ch-2.raku index 51e37f950b..f097c62e5d 100644 --- a/challenge-076/markus-holzer/raku/ch-2.raku +++ b/challenge-076/markus-holzer/raku/ch-2.raku @@ -1,21 +1,17 @@ -unit sub MAIN( $fw, $fb ); +unit sub MAIN($words-file, $board-file); -my @w = $fw.IO.lines.sort; -my @b = $fb.IO.lines( :chomp( False ) ).map: *.subst(' ', '', :g); -my $c = @b.first.chars; -my @c = @b.map( |*.comb ); +my @words = $words-file.IO.lines; +my @board = $board-file.IO.slurp.subst( ' ',:g ).lines; +my $width = @board.head.chars; +my @chars = @board.map: |*.comb; -.say for map { | f r $_ }, 0, 90, 45, -45; +.Str.say for words-in rotated-data.flat.join; -multi r( 0 ) { @c.batch( $c ) } -multi r( 90 ) { r 0, 0, 0 } -multi r( -45 ) { r 0, 1, 0 } -multi r( 45 ) { r 1, 0, 1 } -multi r( $i, $j, $o ) { - map { @c[ $_ + $o, ( $_ + $c + $j ) ... * ] }, ^$c - $i } +sub words-in( $text ) { + $text ~'~'~ $text.flip ~~ m:ex:i/@words/ } -sub f( @b ) { - gather for @b>>.join -> $b { - for $b, $b.flip -> $l { - for $l ~~ m:ex:i/ @w / { - take ~$_ }}}} \ No newline at end of file +sub rotated-data { + @chars.batch( $width ), |( (0,0),(0,1),(1,0) ).map: &rotate-data } + +sub rotate-data( @offsets ) { + (^$width).map: { @chars[ ($_ + @offsets[0]), ($_ + $width + @offsets[1]) ... * ] } } \ No newline at end of file -- cgit From 307022f1e22dbc19320739e88977802ddd4cb580 Mon Sep 17 00:00:00 2001 From: "Markus \"Holli\" Holzer" Date: Fri, 4 Sep 2020 00:59:43 +0200 Subject: golf --- challenge-076/markus-holzer/raku/ch-2.golfed.raku | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 challenge-076/markus-holzer/raku/ch-2.golfed.raku diff --git a/challenge-076/markus-holzer/raku/ch-2.golfed.raku b/challenge-076/markus-holzer/raku/ch-2.golfed.raku new file mode 100644 index 0000000000..a92512aef8 --- /dev/null +++ b/challenge-076/markus-holzer/raku/ch-2.golfed.raku @@ -0,0 +1,9 @@ +sub MAIN($W,$B){ +my@w=$W.IO.lines; +my@b=$B.IO.slurp.subst(' ',:g).lines; +my$w=@b[0].chars; +my@c=@b.map(|*.comb); +sub f($t){$t~"~"~$t.flip~~m:ex:i/@w/} +multi r{@c.batch($w),|((0,0),(0,1),(1,0)).map(&r)} +multi r($o){(^$w).map({@c[$_+$o[0],($_+$w+$o[1])...*]})} +.say for f r.flat.join} \ No newline at end of file -- cgit