diff options
| author | Mohammad S Anwar <Mohammad.Anwar@yahoo.com> | 2020-02-09 16:38:57 +0000 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2020-02-09 16:38:57 +0000 |
| commit | a853fc9c3171115e4588feff605951440febbc82 (patch) | |
| tree | 79389be7ac96702629408f9ee4086ac9080723c5 | |
| parent | afa913744e24e473b290b6370d80000d038160e9 (diff) | |
| parent | 69fe156b723e6fa2e8e311828eb2b9fe052706ca (diff) | |
| download | perlweeklychallenge-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.bash | 52 | ||||
| -rw-r--r-- | challenge-046/user-person/perl/ch-1.pl | 57 | ||||
| -rw-r--r-- | challenge-046/user-person/perl/ch-2.pl | 46 | ||||
| -rw-r--r-- | challenge-046/user-person/python/ch-1.py | 57 | ||||
| -rw-r--r-- | challenge-046/user-person/python/ch-2.py | 35 |
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 |
