aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--challenge-001/paulo-custodio/go.pl38
-rw-r--r--challenge-028/paulo-custodio/Makefile2
-rw-r--r--challenge-028/paulo-custodio/README1
-rw-r--r--challenge-028/paulo-custodio/perl/ch-1.pl19
-rw-r--r--challenge-028/paulo-custodio/perl/ch-2.pl106
-rw-r--r--challenge-028/paulo-custodio/python/ch-1.py17
-rw-r--r--challenge-028/paulo-custodio/python/ch-2.py89
-rw-r--r--challenge-028/paulo-custodio/t/test-1.yaml10
-rw-r--r--challenge-028/paulo-custodio/test.c1
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() {}