diff options
| author | Paulo Custodio <pauloscustodio@gmail.com> | 2021-12-17 11:48:55 +0000 |
|---|---|---|
| committer | Paulo Custodio <pauloscustodio@gmail.com> | 2021-12-17 11:48:55 +0000 |
| commit | 40ecb91eca8db21fb151ad8c148dd3e3b3f877c2 (patch) | |
| tree | 5438e53f9b97a95bf82b99df8e8aacb3b41b36fc | |
| parent | 8c1fdda84743187534ae4615a0dfcb41283293e4 (diff) | |
| download | perlweeklychallenge-club-40ecb91eca8db21fb151ad8c148dd3e3b3f877c2.tar.gz perlweeklychallenge-club-40ecb91eca8db21fb151ad8c148dd3e3b3f877c2.tar.bz2 perlweeklychallenge-club-40ecb91eca8db21fb151ad8c148dd3e3b3f877c2.zip | |
Add Perl and Python solutions to challenge 028
| -rw-r--r-- | challenge-001/paulo-custodio/go.pl | 38 | ||||
| -rw-r--r-- | challenge-028/paulo-custodio/Makefile | 2 | ||||
| -rw-r--r-- | challenge-028/paulo-custodio/README | 1 | ||||
| -rw-r--r-- | challenge-028/paulo-custodio/perl/ch-1.pl | 19 | ||||
| -rw-r--r-- | challenge-028/paulo-custodio/perl/ch-2.pl | 106 | ||||
| -rw-r--r-- | challenge-028/paulo-custodio/python/ch-1.py | 17 | ||||
| -rw-r--r-- | challenge-028/paulo-custodio/python/ch-2.py | 89 | ||||
| -rw-r--r-- | challenge-028/paulo-custodio/t/test-1.yaml | 10 | ||||
| -rw-r--r-- | challenge-028/paulo-custodio/test.c | 1 |
9 files changed, 264 insertions, 19 deletions
diff --git a/challenge-001/paulo-custodio/go.pl b/challenge-001/paulo-custodio/go.pl index fe74e50528..5278fa551b 100644 --- a/challenge-001/paulo-custodio/go.pl +++ b/challenge-001/paulo-custodio/go.pl @@ -7,25 +7,25 @@ use Path::Tiny; or die "Usage: ",path($0)->basename," nr\n"; my $nr = sprintf("%03d", $ARGV[0]); -for my $dir (qw( - ada - awk - basic - bc - brainfuck - c - cpp - d - forth - fortran - lua - pascal - perl - python - t - )) { - path("challenge-$nr/paulo-custodio/$dir")->mkpath; -} +#for my $dir (qw( +# ada +# awk +# basic +# bc +# brainfuck +# c +# cpp +# d +# forth +# fortran +# lua +# pascal +# perl +# python +# t +# )) { +# path("challenge-$nr/paulo-custodio/$dir")->mkpath; +#} path("challenge-$nr/paulo-custodio/README")->spew("Solution by Paulo Custodio\n"); if (! -f "challenge-$nr/paulo-custodio/Makefile") { path("challenge-$nr/paulo-custodio/Makefile")->spew( diff --git a/challenge-028/paulo-custodio/Makefile b/challenge-028/paulo-custodio/Makefile new file mode 100644 index 0000000000..c3c762d746 --- /dev/null +++ b/challenge-028/paulo-custodio/Makefile @@ -0,0 +1,2 @@ +all: + perl ../../challenge-001/paulo-custodio/test.pl diff --git a/challenge-028/paulo-custodio/README b/challenge-028/paulo-custodio/README new file mode 100644 index 0000000000..87dc0b2fbd --- /dev/null +++ b/challenge-028/paulo-custodio/README @@ -0,0 +1 @@ +Solution by Paulo Custodio diff --git a/challenge-028/paulo-custodio/perl/ch-1.pl b/challenge-028/paulo-custodio/perl/ch-1.pl new file mode 100644 index 0000000000..40749c06b2 --- /dev/null +++ b/challenge-028/paulo-custodio/perl/ch-1.pl @@ -0,0 +1,19 @@ +#!/usr/bin/perl + +# Challenge 028 + +# Task #1 +# Write a script to check the file content without explicitly reading the +# content. It should accept file name with path as command line argument and +# print "The file content is binary." or else "The file content is ascii." +# accordingly. + +use Modern::Perl; + +my $file = shift or die "Usage: $0 file\n"; +if (-T $file) { + say "The file content is ascii."; +} +else { + say "The file content is binary."; +} diff --git a/challenge-028/paulo-custodio/perl/ch-2.pl b/challenge-028/paulo-custodio/perl/ch-2.pl new file mode 100644 index 0000000000..56e995663d --- /dev/null +++ b/challenge-028/paulo-custodio/perl/ch-2.pl @@ -0,0 +1,106 @@ +#!/usr/bin/perl + +# Challenge 028 + +# Task #2 +# Write a script to display Digital Clock. Feel free to be as creative as you +# can when displaying digits. We expect bare minimum something like "14:10:11". + +use Modern::Perl; +use POSIX; +use Time::HiRes qw(usleep); + +my %chars; + +$chars{' '}[0] = " "; +$chars{' '}[1] = " "; +$chars{' '}[2] = " "; +$chars{' '}[3] = " "; +$chars{' '}[4] = " "; + +$chars{'0'}[0] = " ___ "; +$chars{'0'}[1] = " | |"; +$chars{'0'}[2] = " | |"; +$chars{'0'}[3] = " | |"; +$chars{'0'}[4] = " |___|"; + +$chars{'1'}[0] = " "; +$chars{'1'}[1] = " |"; +$chars{'1'}[2] = " |"; +$chars{'1'}[3] = " |"; +$chars{'1'}[4] = " |"; + +$chars{'2'}[0] = " ___ "; +$chars{'2'}[1] = " |"; +$chars{'2'}[2] = " ___|"; +$chars{'2'}[3] = " | "; +$chars{'2'}[4] = " |___ "; + +$chars{'3'}[0] = " ___ "; +$chars{'3'}[1] = " |"; +$chars{'3'}[2] = " ___|"; +$chars{'3'}[3] = " |"; +$chars{'3'}[4] = " ___|"; + +$chars{'4'}[0] = " "; +$chars{'4'}[1] = " | |"; +$chars{'4'}[2] = " |___|"; +$chars{'4'}[3] = " |"; +$chars{'4'}[4] = " |"; + +$chars{'5'}[0] = " ___ "; +$chars{'5'}[1] = " | "; +$chars{'5'}[2] = " |___ "; +$chars{'5'}[3] = " |"; +$chars{'5'}[4] = " ___|"; + +$chars{'6'}[0] = " ___ "; +$chars{'6'}[1] = " | "; +$chars{'6'}[2] = " |___ "; +$chars{'6'}[3] = " | |"; +$chars{'6'}[4] = " |___|"; + +$chars{'7'}[0] = " ___ "; +$chars{'7'}[1] = " | |"; +$chars{'7'}[2] = " | |"; +$chars{'7'}[3] = " |"; +$chars{'7'}[4] = " |"; + +$chars{'8'}[0] = " ___ "; +$chars{'8'}[1] = " | |"; +$chars{'8'}[2] = " |___|"; +$chars{'8'}[3] = " | |"; +$chars{'8'}[4] = " |___|"; + +$chars{'9'}[0] = " ___ "; +$chars{'9'}[1] = " | |"; +$chars{'9'}[2] = " |___|"; +$chars{'9'}[3] = " |"; +$chars{'9'}[4] = " ___|"; + +$chars{':'}[0] = " "; +$chars{':'}[1] = " "; +$chars{':'}[2] = " . "; +$chars{':'}[3] = " . "; +$chars{':'}[4] = " "; + +my $CLEAR = "\e[H\e[2J"; +my $HOME = "\e[H"; + +sub banner { + my($text) = @_; + for my $row (0 .. $#{$chars{' '}}) { + for my $c (split(//, $text)) { + print $chars{$c}[$row]; + } + print "\n"; + } +} + +print $CLEAR; +while (1) { + my $time = strftime("%H:%M:%S", localtime(time)); + print $HOME; + banner($time); + usleep(500*1000); +} diff --git a/challenge-028/paulo-custodio/python/ch-1.py b/challenge-028/paulo-custodio/python/ch-1.py new file mode 100644 index 0000000000..2ed8ff5b7b --- /dev/null +++ b/challenge-028/paulo-custodio/python/ch-1.py @@ -0,0 +1,17 @@ +#!/usr/bin/perl + +# Challenge 028 + +# Task #1 +# Write a script to check the file content without explicitly reading the +# content. It should accept file name with path as command line argument and +# print "The file content is binary." or else "The file content is ascii." +# accordingly. + +import sys + +file = sys.argv[1] +if b'\x00' in open(file, 'rb').read(): + print("The file content is binary.") +else: + print("The file content is ascii.") diff --git a/challenge-028/paulo-custodio/python/ch-2.py b/challenge-028/paulo-custodio/python/ch-2.py new file mode 100644 index 0000000000..51771c3ad9 --- /dev/null +++ b/challenge-028/paulo-custodio/python/ch-2.py @@ -0,0 +1,89 @@ +#!/usr/bin/python3 + +# Challenge 028 + +# Task #2 +# Write a script to display Digital Clock. Feel free to be as creative as you +# can when displaying digits. We expect bare minimum something like "14:10:11". + +from datetime import datetime +import time + +chars = { + ' ': [" ", + " ", + " ", + " ", + " "], + '0': [" ___ ", + " | |", + " | |", + " | |", + " |___|"], + '1': [" ", + " |", + " |", + " |", + " |"], + '2': [" ___ ", + " |", + " ___|", + " | ", + " |___ "], + '3': [" ___ ", + " |", + " ___|", + " |", + " ___|"], + '4': [" ", + " | |", + " |___|", + " |", + " |"], + '5': [" ___ ", + " | ", + " |___ ", + " |", + " ___|"], + '6': [" ___ ", + " | ", + " |___ ", + " | |", + " |___|"], + '7': [" ___ ", + " | |", + " | |", + " |", + " |"], + '8': [" ___ ", + " | |", + " |___|", + " | |", + " |___|"], + '9': [" ___ ", + " | |", + " |___|", + " |", + " ___|"], + ':': [" ", + " ", + " . ", + " . ", + " "], +} + +CLEAR = "\x1b[H\x1b[2J" +HOME = "\x1b[H" + +def banner(text): + for row in range(len(chars[' '])): + for c in text: + print(chars[c][row], end="") + print("") + +print(CLEAR, end="") +while True: + now = datetime.now() + print(HOME, end="") + banner(now.strftime("%H:%M:%S")) + time.sleep(0.5) diff --git a/challenge-028/paulo-custodio/t/test-1.yaml b/challenge-028/paulo-custodio/t/test-1.yaml new file mode 100644 index 0000000000..866183cedc --- /dev/null +++ b/challenge-028/paulo-custodio/t/test-1.yaml @@ -0,0 +1,10 @@ +- setup: system("gcc -otest test.c")==0 + cleanup: + args: test.c + input: + output: The file content is ascii. +- setup: + cleanup: unlink("test.o", "test") + args: test + input: + output: The file content is binary. diff --git a/challenge-028/paulo-custodio/test.c b/challenge-028/paulo-custodio/test.c new file mode 100644 index 0000000000..237c8ce181 --- /dev/null +++ b/challenge-028/paulo-custodio/test.c @@ -0,0 +1 @@ +int main() {} |
