From 3a2671eae0c18f0289911c652d159b78591e5e33 Mon Sep 17 00:00:00 2001 From: Scimon Date: Tue, 17 Aug 2021 14:33:57 +0100 Subject: Now with random maps --- challenge-126/simon-proctor/raku/ch-2.raku | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/challenge-126/simon-proctor/raku/ch-2.raku b/challenge-126/simon-proctor/raku/ch-2.raku index 025f530b0d..55130be0f9 100644 --- a/challenge-126/simon-proctor/raku/ch-2.raku +++ b/challenge-126/simon-proctor/raku/ch-2.raku @@ -35,6 +35,18 @@ multi sub MAIN("example") { find-numbers( $example ).say; } +subset PInt of Int where * > 0; +subset Density of Int where 1 <= * <= 50; + +#| Given a width, height and mine density (1-50%) makes a map then prints the numbers +multi sub MAIN( PInt $width, PInt $height, Density $density ) { + my @opts = ( |("x" xx $density), |("*" xx (100-$density)) ); + my $grid = (^$height).map( { @opts.roll($width).join( " " ) } ).join("\n"); + $grid.say; + ("-" xx $width).join("-").say; + find-numbers( $grid ).say; +} + sub parse-mines( Str $input ) { return $input.lines.map( { $_.comb(/\S/).Array } ).Array; } -- cgit