diff options
| author | Mohammad S Anwar <mohammad.anwar@yahoo.com> | 2021-12-01 20:07:02 +0000 |
|---|---|---|
| committer | Mohammad S Anwar <mohammad.anwar@yahoo.com> | 2021-12-01 20:07:02 +0000 |
| commit | 801c6566b16efa1e2c5b1f7daf54b532a222a53a (patch) | |
| tree | 55e7e9d7f0398ca10b9e36e75a0e242ebd42999c /challenge-141 | |
| parent | 418cb1a5ca5436a2d16410d7752f9eaf96180fa3 (diff) | |
| download | perlweeklychallenge-club-801c6566b16efa1e2c5b1f7daf54b532a222a53a.tar.gz perlweeklychallenge-club-801c6566b16efa1e2c5b1f7daf54b532a222a53a.tar.bz2 perlweeklychallenge-club-801c6566b16efa1e2c5b1f7daf54b532a222a53a.zip | |
- Added solutions by Ulrich Rieke.
Diffstat (limited to 'challenge-141')
| -rw-r--r-- | challenge-141/ulrich-rieke/cpp/ch-1.cpp | 26 | ||||
| -rw-r--r-- | challenge-141/ulrich-rieke/haskell/ch-1.hs | 8 | ||||
| -rw-r--r-- | challenge-141/ulrich-rieke/haskell/ch-2.hs | 11 | ||||
| -rw-r--r-- | challenge-141/ulrich-rieke/perl/ch-1.pl | 20 | ||||
| -rw-r--r-- | challenge-141/ulrich-rieke/perl/ch-2.pl | 20 | ||||
| -rw-r--r-- | challenge-141/ulrich-rieke/raku/ch-1.raku | 16 | ||||
| -rw-r--r-- | challenge-141/ulrich-rieke/raku/ch-2.raku | 14 |
7 files changed, 115 insertions, 0 deletions
diff --git a/challenge-141/ulrich-rieke/cpp/ch-1.cpp b/challenge-141/ulrich-rieke/cpp/ch-1.cpp new file mode 100644 index 0000000000..49cf5eb7e0 --- /dev/null +++ b/challenge-141/ulrich-rieke/cpp/ch-1.cpp @@ -0,0 +1,26 @@ +#include <vector> +#include <iostream> + +std::vector<int> findDivisors( int n ) { + std::vector<int> divisors ; + for ( int i = 1 ; i < n + 1 ; i++ ) { + if ( n % i == 0 ) + divisors.push_back( i ) ; + } + return divisors ; +} + +int main( ) { + std::vector<int> wanted ; + int current = 1 ; + while ( wanted.size( ) < 10 ) { + std::vector<int> divisors ( findDivisors( current ) ) ; + if ( divisors.size( ) == 8 ) + wanted.push_back( current ) ; + current++ ; + } + for ( int n : wanted ) + std::cout << n << " " ; + std::cout << std::endl ; + return 0 ; +} diff --git a/challenge-141/ulrich-rieke/haskell/ch-1.hs b/challenge-141/ulrich-rieke/haskell/ch-1.hs new file mode 100644 index 0000000000..46e9417903 --- /dev/null +++ b/challenge-141/ulrich-rieke/haskell/ch-1.hs @@ -0,0 +1,8 @@ +module Challenge141 + where + +findDivisors :: Int -> [ Int ] +findDivisors n = filter (\i -> mod n i == 0 ) [1 .. n] + +solution :: [Int] +solution = take 10 $ filter ( ( == 8 ) . length . findDivisors ) [1 .. ] diff --git a/challenge-141/ulrich-rieke/haskell/ch-2.hs b/challenge-141/ulrich-rieke/haskell/ch-2.hs new file mode 100644 index 0000000000..f0e17dd10e --- /dev/null +++ b/challenge-141/ulrich-rieke/haskell/ch-2.hs @@ -0,0 +1,11 @@ +module Challenge141_2 + where +import Data.List ( subsequences ) +import Data.Char ( digitToInt ) + +solution :: Int -> Int -> Int +solution m n = length $ filter (\i -> mod i n == 0 ) $ map convertToNumber +$ filter ( not . null ) $ init $ subsequences $ map digitToInt $ show m +where + convertToNumber :: [Int] -> Int + convertToNumber list = read $ foldl1 (++) $ map show list diff --git a/challenge-141/ulrich-rieke/perl/ch-1.pl b/challenge-141/ulrich-rieke/perl/ch-1.pl new file mode 100644 index 0000000000..7dc2da371d --- /dev/null +++ b/challenge-141/ulrich-rieke/perl/ch-1.pl @@ -0,0 +1,20 @@ +#!/usr/bin/perl ; +use strict ; +use warnings ; +use feature 'say' ; + +sub findDivisors { + my $number = shift ; + return grep { $number % $_ == 0 } (1 .. $number) ; +} + +my @wanted ; +my $current = 1 ; +while ( scalar( @wanted ) < 10 ) { + my @divisors = findDivisors( $current ) ; + if ( scalar( @divisors ) == 8 ) { + push @wanted , $current ; + } + $current++ ; +} +say join( ', ' , @wanted ) ; diff --git a/challenge-141/ulrich-rieke/perl/ch-2.pl b/challenge-141/ulrich-rieke/perl/ch-2.pl new file mode 100644 index 0000000000..6f8a33be3e --- /dev/null +++ b/challenge-141/ulrich-rieke/perl/ch-2.pl @@ -0,0 +1,20 @@ +#!/usr/bin/perl ; +use strict ; +use warnings ; +use feature 'say' ; +use Algorithm::Combinatorics qw ( combinations ) ; + +my $m = $ARGV[ 0 ] ; +my $n = $ARGV[ 1 ] ; +my @numbers = split( // , $m ) ; +my @digits = @numbers ; +my $len = scalar( @numbers ) ; +if ( $len > 2 ) { + for my $l ( 2 .. $len - 1 ) { + my $iter = combinations( \@digits , $l ) ; + while ( my $c = $iter->next ) { + push @numbers , join( '' , @$c ) ; + } + } +} +say ( scalar ( grep { $_ % $n == 0 } @numbers )) ; diff --git a/challenge-141/ulrich-rieke/raku/ch-1.raku b/challenge-141/ulrich-rieke/raku/ch-1.raku new file mode 100644 index 0000000000..6836745341 --- /dev/null +++ b/challenge-141/ulrich-rieke/raku/ch-1.raku @@ -0,0 +1,16 @@ +use v6 ; + +sub findDivisors( Int $n ) { + return ( 1 .. $n).grep( { $n %% $_ } ) ; +} + +my @wanted ; +my Int $current = 1 ; +while ( @wanted.elems < 10 ) { + my @divisors = findDivisors( $current ) ; + if ( @divisors.elems == 8 ) { + @wanted.push( $current ) ; + } + $current++ ; +} +say @wanted ; diff --git a/challenge-141/ulrich-rieke/raku/ch-2.raku b/challenge-141/ulrich-rieke/raku/ch-2.raku new file mode 100644 index 0000000000..b3735420f8 --- /dev/null +++ b/challenge-141/ulrich-rieke/raku/ch-2.raku @@ -0,0 +1,14 @@ +use v6 ; + +sub MAIN( Int $m is copy , Int $n is copy ) { + my @numbers = (~$m).comb.map( {.Int} ) ; + my @digits = @numbers ; + my $len = @numbers.elems ; + if ( $len > 2 ) { + for ( 2 .. $len - 1 ) -> $l { + my @combis = @digits.combinations( $l ).map( {.join.Int} ) ; + @combis.map( { @numbers.push( $_ ) } ) ; + } + } + say @numbers.grep( { $_ %% $n } ).elems ; +} |
