aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMohammad S Anwar <Mohammad.Anwar@yahoo.com>2020-02-09 16:38:57 +0000
committerGitHub <noreply@github.com>2020-02-09 16:38:57 +0000
commita853fc9c3171115e4588feff605951440febbc82 (patch)
tree79389be7ac96702629408f9ee4086ac9080723c5
parentafa913744e24e473b290b6370d80000d038160e9 (diff)
parent69fe156b723e6fa2e8e311828eb2b9fe052706ca (diff)
downloadperlweeklychallenge-club-a853fc9c3171115e4588feff605951440febbc82.tar.gz
perlweeklychallenge-club-a853fc9c3171115e4588feff605951440febbc82.tar.bz2
perlweeklychallenge-club-a853fc9c3171115e4588feff605951440febbc82.zip
Merge pull request #1227 from user-person/user-person-ch46
User person ch46
-rw-r--r--challenge-046/user-person/bash/ch-2.bash52
-rw-r--r--challenge-046/user-person/perl/ch-1.pl57
-rw-r--r--challenge-046/user-person/perl/ch-2.pl46
-rw-r--r--challenge-046/user-person/python/ch-1.py57
-rw-r--r--challenge-046/user-person/python/ch-2.py35
5 files changed, 247 insertions, 0 deletions
diff --git a/challenge-046/user-person/bash/ch-2.bash b/challenge-046/user-person/bash/ch-2.bash
new file mode 100644
index 0000000000..c85dcfeb74
--- /dev/null
+++ b/challenge-046/user-person/bash/ch-2.bash
@@ -0,0 +1,52 @@
+#!/bin/bash
+
+###########################################################################
+# script name: ch46-2.bash #
+# #
+# https://perlweeklychallenge.org/blog/perl-weekly-challenge-046/ #
+# #
+###########################################################################
+
+declare -a doors
+readonly MAX=500
+returnString=""
+
+function change () {
+ returnString="CLOSED"
+ if [ "$1" == "CLOSED" ] ; then
+ returnString="OPENED"
+ fi
+}
+
+for ((h=1; h <= MAX; h++ ))
+do
+ doors[$h]="CLOSED"
+done
+
+for ((i=1; i <= MAX; i++ ))
+do
+ if [ $i -gt $((MAX / 2)) ]; then
+ change "${doors[$i]}"
+ doors[$i]="$returnString"
+ continue
+ fi
+
+ for ((j=1; j <= MAX; j++ ))
+ do
+ if [ $((j % i)) == 0 ]; then
+ change "${doors[$j]}"
+ doors[$j]="$returnString"
+ fi
+ done
+done
+
+for ((k=1; k <= MAX; k++ ))
+do
+ if [ "${doors[$k]}" == "OPENED" ]; then
+ printf "%s " $k
+ fi
+done
+echo
+
+# ch-2.bash output:
+# 1 4 9 16 25 36 49 64 81 100 121 144 169 196 225 256 289 324 361 400 441 484
diff --git a/challenge-046/user-person/perl/ch-1.pl b/challenge-046/user-person/perl/ch-1.pl
new file mode 100644
index 0000000000..8b217948b8
--- /dev/null
+++ b/challenge-046/user-person/perl/ch-1.pl
@@ -0,0 +1,57 @@
+#!/usr/bin/perl
+
+###########################################################################
+# script name: ch-1.pl #
+# #
+# https://perlweeklychallenge.org/blog/perl-weekly-challenge-046/ #
+# #
+###########################################################################
+
+use strict;
+use warnings;
+use diagnostics;
+
+sub decode {
+ my $message = $_[0];
+ $message =~ s{ }{}g;
+ my $decodedString = '_' x index($message,"\n");
+ my @seen = ();
+ my $col = 0;
+
+ CHAR_LOOP:
+ foreach ( split //, $message ) {
+ if ( $_ eq "\n") {
+ $col = 0;
+ next CHAR_LOOP;
+ }
+ substr($decodedString,$col,1,$_) if ++$seen[$col]{$_} == 2;
+ ++$col;
+ }
+ return $decodedString;
+}
+
+my $message1 = <<'EOM'; # End of Message
+H x l 4 !
+c e - l o
+z e 6 l g
+H W l v R
+q 9 m # o
+EOM
+
+my $message2 = <<'EOM';
+P + 2 l ! a t o
+1 e 8 0 R $ 4 u
+5 - r ] + a > /
+P x w l b 3 k \
+2 e 3 5 R 8 y u
+< ! r ^ ( ) k 0
+EOM
+
+print decode($message1), "\n";
+print decode($message2), "\n";
+
+__END__
+ch-1.pl output:
+
+Hello
+PerlRaku
diff --git a/challenge-046/user-person/perl/ch-2.pl b/challenge-046/user-person/perl/ch-2.pl
new file mode 100644
index 0000000000..4d6573d280
--- /dev/null
+++ b/challenge-046/user-person/perl/ch-2.pl
@@ -0,0 +1,46 @@
+#!/usr/bin/perl
+
+###########################################################################
+# script name: ch-2.pl #
+# #
+# https://perlweeklychallenge.org/blog/perl-weekly-challenge-046/ #
+# #
+###########################################################################
+
+use strict;
+use warnings;
+use diagnostics;
+
+my @doors = ();
+my $MAX = 500;
+
+sub change {
+ return $_[0] eq "OPENED" ? "CLOSED" : "OPENED";
+}
+
+push @doors, "CLOSED" foreach (0..$MAX);
+
+ROOM:
+for ( my $i = 1; $i <= $MAX; ++$i ) {
+
+ if ($i > $MAX / 2 ) {
+ $doors[$i] = change $doors[$i];
+ next ROOM;
+ }
+
+ for ( my $j = 1; $j <= $MAX; ++$j ) {
+ if ($j % $i == 0) {
+ $doors[$j] = change $doors[$j];
+ }
+ }
+}
+
+for ( my $k = 1; $k <= $MAX; ++$k ) {
+ print "$k " if $doors[$k] eq "OPENED";
+}
+print "\n";
+
+__END__
+ch-2.pl output:
+
+1 4 9 16 25 36 49 64 81 100 121 144 169 196 225 256 289 324 361 400 441 484
diff --git a/challenge-046/user-person/python/ch-1.py b/challenge-046/user-person/python/ch-1.py
new file mode 100644
index 0000000000..3458e0433f
--- /dev/null
+++ b/challenge-046/user-person/python/ch-1.py
@@ -0,0 +1,57 @@
+#!/usr/bin/python
+
+###########################################################################
+# script name: ch-1.py #
+# #
+# https://perlweeklychallenge.org/blog/perl-weekly-challenge-046/ #
+# #
+###########################################################################
+
+message1 = """H x l 4 !
+c e - l o
+z e 6 l g
+H W l v R
+q 9 m # o"""
+
+message2 = '''P + 2 l ! a t o
+1 e 8 0 R $ 4 u
+5 - r ] + a > /
+P x w l b 3 k \\
+2 e 3 5 R 8 y u
+< ! r ^ ( ) k 0'''
+
+def decode (message):
+ message = message.replace(" ","")
+ rowLength = message.index('\n')
+ decodedString = [None] * rowLength
+ seen = {}
+
+ for i in range(0,rowLength):
+ seen.update({ i : {}})
+
+ col = 0
+
+ for char in message:
+ if char == '\n':
+ col = 0
+ continue
+
+ if char in seen[col]:
+ seen[col][char] += 1
+
+ if seen[col][char] == 2:
+ decodedString[col] = char
+
+ else:
+ seen[col].update({char: 1})
+
+ col += 1
+
+ return ''.join(decodedString)
+
+print(decode(message1))
+print(decode(message2))
+
+# ch-1.py output:
+# Hello
+# PerlRaku
diff --git a/challenge-046/user-person/python/ch-2.py b/challenge-046/user-person/python/ch-2.py
new file mode 100644
index 0000000000..6032cf4b47
--- /dev/null
+++ b/challenge-046/user-person/python/ch-2.py
@@ -0,0 +1,35 @@
+#!/usr/bin/python
+
+###########################################################################
+# script name: ch-2.py #
+# #
+# https://perlweeklychallenge.org/blog/perl-weekly-challenge-046/ #
+# #
+###########################################################################
+
+MAX = 500
+doors = ["CLOSED" for i in range(MAX+1)]
+
+def change (doorStatus):
+ returnString = "OPENED"
+ if doorStatus == "OPENED":
+ returnString = "CLOSED"
+ return returnString
+
+for i in range(1,MAX):
+ if i > MAX/2:
+ doors[i] = change(doors[i])
+ continue
+
+ for j in range(1,MAX):
+ if j % i == 0:
+ doors[j] = change(doors[j])
+
+for k in range(1,MAX):
+ if doors[k] == "OPENED":
+ print(k,end=" ")
+
+print()
+
+# ch-2.py output:
+# 1 4 9 16 25 36 49 64 81 100 121 144 169 196 225 256 289 324 361 400 441 484