diff options
| author | Mohammad S Anwar <Mohammad.Anwar@yahoo.com> | 2021-05-03 02:43:14 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-05-03 02:43:14 +0100 |
| commit | 83f370555cb790f3a8e953274d5c92a8ce0b7968 (patch) | |
| tree | df4760e28e9c1ecca21198855284654bec9c2bfd | |
| parent | c24feebe228b5204184228ae01239db90b6f81af (diff) | |
| parent | bf86d706666f7be43b00aea4269a421ee78205f5 (diff) | |
| download | perlweeklychallenge-club-83f370555cb790f3a8e953274d5c92a8ce0b7968.tar.gz perlweeklychallenge-club-83f370555cb790f3a8e953274d5c92a8ce0b7968.tar.bz2 perlweeklychallenge-club-83f370555cb790f3a8e953274d5c92a8ce0b7968.zip | |
Merge pull request #3995 from arnesom/branch-for-challenge-110
Arne Sommer
| -rw-r--r-- | challenge-110/arne-sommer/blog.txt | 1 | ||||
| -rwxr-xr-x | challenge-110/arne-sommer/perl/ch-1.pl | 21 | ||||
| -rwxr-xr-x | challenge-110/arne-sommer/perl/ch-2.pl | 24 | ||||
| -rwxr-xr-x | challenge-110/arne-sommer/perl/transpose-file-perl | 24 | ||||
| -rwxr-xr-x | challenge-110/arne-sommer/perl/valid-phone-numbers-perl | 21 | ||||
| -rw-r--r-- | challenge-110/arne-sommer/persons.csv | 5 | ||||
| -rw-r--r-- | challenge-110/arne-sommer/phone-numbers.txt | 5 | ||||
| -rwxr-xr-x | challenge-110/arne-sommer/raku/ch-1.raku | 16 | ||||
| -rwxr-xr-x | challenge-110/arne-sommer/raku/ch-2.raku | 20 | ||||
| -rwxr-xr-x | challenge-110/arne-sommer/raku/transpose-file | 20 | ||||
| -rwxr-xr-x | challenge-110/arne-sommer/raku/valid-phone-numbers | 16 |
11 files changed, 173 insertions, 0 deletions
diff --git a/challenge-110/arne-sommer/blog.txt b/challenge-110/arne-sommer/blog.txt new file mode 100644 index 0000000000..9c665d4a8e --- /dev/null +++ b/challenge-110/arne-sommer/blog.txt @@ -0,0 +1 @@ +https://raku-musings.com/validly-transposed.html diff --git a/challenge-110/arne-sommer/perl/ch-1.pl b/challenge-110/arne-sommer/perl/ch-1.pl new file mode 100755 index 0000000000..9fb8f44494 --- /dev/null +++ b/challenge-110/arne-sommer/perl/ch-1.pl @@ -0,0 +1,21 @@ +#! /usr/bin/env perl + +use strict; +use warnings; +use feature 'say'; +use File::Slurp; + +my $phonebook = $ARGV[0] // 'phone-numbers.txt'; + +for my $line (read_file($phonebook, chomp => 1)) +{ + next unless length($line) == 15; + next unless substr($line, 4, 1) eq ' '; + next unless substr($line, 5) =~ /^\d{10}$/; + + my $first = substr($line, 0, 4); + + next unless $first =~ /^\d{4}$/ || $first =~ /^\s\+\d\d$/ || $first =~ /^\(\d\d\)$/; + + say $line; +} diff --git a/challenge-110/arne-sommer/perl/ch-2.pl b/challenge-110/arne-sommer/perl/ch-2.pl new file mode 100755 index 0000000000..ef866a85d3 --- /dev/null +++ b/challenge-110/arne-sommer/perl/ch-2.pl @@ -0,0 +1,24 @@ +#! /usr/bin/env perl + +use strict; +use warnings; +use feature 'say'; +use File::Slurp; + +my $csv_file = $ARGV[0] // 'persons.csv'; + +my @lines; + +for my $line (read_file($csv_file, chomp => 1)) +{ + my @words = split(',', $line); + + for my $index (0 .. @words -1) + { + $lines[$index] .= $lines[$index] + ? ( "," . $words[$index]) + : $words[$index]; + } +} + +say $_ for @lines; diff --git a/challenge-110/arne-sommer/perl/transpose-file-perl b/challenge-110/arne-sommer/perl/transpose-file-perl new file mode 100755 index 0000000000..ef866a85d3 --- /dev/null +++ b/challenge-110/arne-sommer/perl/transpose-file-perl @@ -0,0 +1,24 @@ +#! /usr/bin/env perl + +use strict; +use warnings; +use feature 'say'; +use File::Slurp; + +my $csv_file = $ARGV[0] // 'persons.csv'; + +my @lines; + +for my $line (read_file($csv_file, chomp => 1)) +{ + my @words = split(',', $line); + + for my $index (0 .. @words -1) + { + $lines[$index] .= $lines[$index] + ? ( "," . $words[$index]) + : $words[$index]; + } +} + +say $_ for @lines; diff --git a/challenge-110/arne-sommer/perl/valid-phone-numbers-perl b/challenge-110/arne-sommer/perl/valid-phone-numbers-perl new file mode 100755 index 0000000000..9fb8f44494 --- /dev/null +++ b/challenge-110/arne-sommer/perl/valid-phone-numbers-perl @@ -0,0 +1,21 @@ +#! /usr/bin/env perl + +use strict; +use warnings; +use feature 'say'; +use File::Slurp; + +my $phonebook = $ARGV[0] // 'phone-numbers.txt'; + +for my $line (read_file($phonebook, chomp => 1)) +{ + next unless length($line) == 15; + next unless substr($line, 4, 1) eq ' '; + next unless substr($line, 5) =~ /^\d{10}$/; + + my $first = substr($line, 0, 4); + + next unless $first =~ /^\d{4}$/ || $first =~ /^\s\+\d\d$/ || $first =~ /^\(\d\d\)$/; + + say $line; +} diff --git a/challenge-110/arne-sommer/persons.csv b/challenge-110/arne-sommer/persons.csv new file mode 100644 index 0000000000..716ebdce75 --- /dev/null +++ b/challenge-110/arne-sommer/persons.csv @@ -0,0 +1,5 @@ +name,age,sex +Mohammad,45,m +Joe,20,m +Julie,35,f +Cristina,10,f diff --git a/challenge-110/arne-sommer/phone-numbers.txt b/challenge-110/arne-sommer/phone-numbers.txt new file mode 100644 index 0000000000..48d6254741 --- /dev/null +++ b/challenge-110/arne-sommer/phone-numbers.txt @@ -0,0 +1,5 @@ +0044 1148820341 + +44 1148820341 + 44-11-4882-0341 +(44) 1148820341 + 00 1148820341 diff --git a/challenge-110/arne-sommer/raku/ch-1.raku b/challenge-110/arne-sommer/raku/ch-1.raku new file mode 100755 index 0000000000..f18247b4bc --- /dev/null +++ b/challenge-110/arne-sommer/raku/ch-1.raku @@ -0,0 +1,16 @@ +#! /usr/bin/env raku + +unit sub MAIN ($phonebook where $phonebook.IO.f && $phonebook.IO.r = 'phone-numbers.txt'); + +for $phonebook.IO.lines -> $line +{ + next unless $line.chars == 15; + next unless $line.substr(4,1) eq ' '; + next unless $line.substr(5) ~~ /^\d ** 10$/; + + my $first = $line.substr(0,4); + + next unless $first ~~ /^\d ** 4$/ || $first ~~ /^\s\+\d\d$/ || $first ~~ /^\(\d\d\)$/; + + say $line; +}
\ No newline at end of file diff --git a/challenge-110/arne-sommer/raku/ch-2.raku b/challenge-110/arne-sommer/raku/ch-2.raku new file mode 100755 index 0000000000..7539256db0 --- /dev/null +++ b/challenge-110/arne-sommer/raku/ch-2.raku @@ -0,0 +1,20 @@ +#! /usr/bin/env raku + +unit sub MAIN ($csv-file where $csv-file.IO.f && $csv-file.IO.r = 'persons.csv'); + +my @lines; + +for $csv-file.IO.lines -> $line +{ + my @words = $line.split(','); + + for 0 .. @words.end -> $index + { + @lines[$index].push: @words[$index]; + } +} + +for @lines -> $line +{ + say $line.join(','); +} diff --git a/challenge-110/arne-sommer/raku/transpose-file b/challenge-110/arne-sommer/raku/transpose-file new file mode 100755 index 0000000000..7539256db0 --- /dev/null +++ b/challenge-110/arne-sommer/raku/transpose-file @@ -0,0 +1,20 @@ +#! /usr/bin/env raku + +unit sub MAIN ($csv-file where $csv-file.IO.f && $csv-file.IO.r = 'persons.csv'); + +my @lines; + +for $csv-file.IO.lines -> $line +{ + my @words = $line.split(','); + + for 0 .. @words.end -> $index + { + @lines[$index].push: @words[$index]; + } +} + +for @lines -> $line +{ + say $line.join(','); +} diff --git a/challenge-110/arne-sommer/raku/valid-phone-numbers b/challenge-110/arne-sommer/raku/valid-phone-numbers new file mode 100755 index 0000000000..f18247b4bc --- /dev/null +++ b/challenge-110/arne-sommer/raku/valid-phone-numbers @@ -0,0 +1,16 @@ +#! /usr/bin/env raku + +unit sub MAIN ($phonebook where $phonebook.IO.f && $phonebook.IO.r = 'phone-numbers.txt'); + +for $phonebook.IO.lines -> $line +{ + next unless $line.chars == 15; + next unless $line.substr(4,1) eq ' '; + next unless $line.substr(5) ~~ /^\d ** 10$/; + + my $first = $line.substr(0,4); + + next unless $first ~~ /^\d ** 4$/ || $first ~~ /^\s\+\d\d$/ || $first ~~ /^\(\d\d\)$/; + + say $line; +}
\ No newline at end of file |
