diff options
| author | Mohammad S Anwar <Mohammad.Anwar@yahoo.com> | 2020-08-24 14:04:24 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2020-08-24 14:04:24 +0100 |
| commit | d2924c499dc7cbe181d58d3bc1ff4b2b7eab3ca1 (patch) | |
| tree | b409e954e220a1aadd8d1749b9a790b601a5e9c3 | |
| parent | efe7a8d6350936d0c464212f29f6d4658ee78ddc (diff) | |
| parent | 55bafec3e9eb285b114136eba8b6fa0a9a16080d (diff) | |
| download | perlweeklychallenge-club-d2924c499dc7cbe181d58d3bc1ff4b2b7eab3ca1.tar.gz perlweeklychallenge-club-d2924c499dc7cbe181d58d3bc1ff4b2b7eab3ca1.tar.bz2 perlweeklychallenge-club-d2924c499dc7cbe181d58d3bc1ff4b2b7eab3ca1.zip | |
Merge pull request #2135 from andemark/branch-for-challenge-075
Branch for challenge 075
| -rw-r--r-- | challenge-075/mark-anderson/raku/ch-1.raku | 41 | ||||
| -rw-r--r-- | challenge-075/mark-anderson/raku/ch-2.raku | 51 |
2 files changed, 92 insertions, 0 deletions
diff --git a/challenge-075/mark-anderson/raku/ch-1.raku b/challenge-075/mark-anderson/raku/ch-1.raku new file mode 100644 index 0000000000..0108c2a3b6 --- /dev/null +++ b/challenge-075/mark-anderson/raku/ch-1.raku @@ -0,0 +1,41 @@ +=begin usage + +usage: raku ch-1.raku 6 1 2 4 + +output: 111111 + 11112 + 1122 + 114 + 222 + 24 + + 6 combinations + +=end usage + +# This program just creates the nested loops needed to create the +# combinations and then executes that code. + +use MONKEY-SEE-NO-EVAL; + +unit sub MAIN(Int $S, *@C where @C.all ~~ Int); + +my $eval = "my \@results;\n"; + +for ^@C -> $i { +my $sum-str = (map { "\$v$_" }, 0..$i).join(" + "); +my $out-str = (map { "\@C[$_] x \$v$_ div \@C[$_]" }, 0..$i).join(",\n"); + +$eval ~= q :to/END/; +loop (my $v\qq[$i] = 0; $v\qq[$i] <= $S; $v\qq[$i] += @C[\qq[$i]]) { +@results.unshift: [\qq[$out-str]] if \qq[$sum-str] == $S; +next if \qq[$sum-str] >= $S; + +END +} + +$eval ~= "}" x @C; +$eval ~= "\nsay .join for \@results;"; +$eval ~= "\nsay \"\\n\", @results.elems, \" combinations\";"; + +EVAL $eval; diff --git a/challenge-075/mark-anderson/raku/ch-2.raku b/challenge-075/mark-anderson/raku/ch-2.raku new file mode 100644 index 0000000000..bb5f9ac2a1 --- /dev/null +++ b/challenge-075/mark-anderson/raku/ch-2.raku @@ -0,0 +1,51 @@ +=begin usage + +Usage: raku ch-2.raku 1 2 3 4 + +Output: + +4 # +3 # # +2 # # # +1 # # # # + - - - - + 1 2 3 4 + +6: (3 x 2) formed by columns (3, 4) +6: (2 x 3) formed by columns (2, 3, 4) + +=end usage + +# These subsets ensure that the arguments are Ints and there +# are at least 2 which are 2 or bigger to form a rectangle. + +subset IntArray of Array where .all ~~ Int; + +subset MoreThan1IntArray of IntArray where .elems > 1; + +subset AtLeast2BiggerThan1 of MoreThan1IntArray where .grep(* > 1).elems >= 2; + +unit sub MAIN(*@array where @array ~~ AtLeast2BiggerThan1); + +my %h; + +for 2..@array.elems -> $i { + for @array.rotor($i => 1-$i) -> $list { + %h{$list} = $list.min * $list.elems; + } +} + +for @array.max ... 1 -> $i { + say "$i " ~ do + for @array -> $v { + if $v >= $i { "#" } else { " " } + } +} + +printf "%s%s\n%s%s\n\n", " ", " -" x @array.elems, " ", "{@array}"; + +for %h.maxpairs -> $pair { + my @digits = $pair.key.comb(/\d+/); + say "{$pair.value}: ({@digits.min} x {@digits.elems}) formed by columns ", + @digits.fmt("%d", ", ").List; +} |
