aboutsummaryrefslogtreecommitdiff
path: root/challenge-254
diff options
context:
space:
mode:
authorZapwai <zapwai@gmail.com>2024-01-29 12:17:39 -0500
committerGitHub <noreply@github.com>2024-01-29 12:17:39 -0500
commite51d7db0618e4c435d7f3888dcc1c19cac6fbbb0 (patch)
treecea5cd51794a945630a6beaeb9ec8fc22e901d98 /challenge-254
parent4099837cf3689e1d78a66905fde9c5a45ff95940 (diff)
downloadperlweeklychallenge-club-e51d7db0618e4c435d7f3888dcc1c19cac6fbbb0.tar.gz
perlweeklychallenge-club-e51d7db0618e4c435d7f3888dcc1c19cac6fbbb0.tar.bz2
perlweeklychallenge-club-e51d7db0618e4c435d7f3888dcc1c19cac6fbbb0.zip
Week 254
Diffstat (limited to 'challenge-254')
-rw-r--r--challenge-254/zapwai/c/ch-1.c36
-rw-r--r--challenge-254/zapwai/c/ch-2.c66
-rw-r--r--challenge-254/zapwai/perl/ch-1.pl37
-rw-r--r--challenge-254/zapwai/perl/ch-2.pl31
-rw-r--r--challenge-254/zapwai/rust/ch-1.rs19
-rw-r--r--challenge-254/zapwai/rust/ch-2.rs39
6 files changed, 228 insertions, 0 deletions
diff --git a/challenge-254/zapwai/c/ch-1.c b/challenge-254/zapwai/c/ch-1.c
new file mode 100644
index 0000000000..a7044c40e7
--- /dev/null
+++ b/challenge-254/zapwai/c/ch-1.c
@@ -0,0 +1,36 @@
+#include <stdio.h>
+
+void proc(int n) {
+ printf("Input: %d\n",n);
+ printf("Output: ");
+ int r = n % 3;
+ if (n == 1) {
+ printf("True\n");
+ return;
+ }
+ else if (n < 3) {
+ printf("False\n");
+ return;
+ }
+ else {
+ while (n > 1) {
+ r = n % 3;
+ n = n / 3;
+ }
+ if (r != 0) {
+ printf("False\n");
+ return;
+ }
+ if ( (n == 1) && (r == 0) ) {
+ printf("True\n");
+ return;
+ }
+ }
+}
+
+int main() {
+ int l[] = {27, 0, 6};
+ for (int i = 0; i < sizeof(l)/sizeof(int); i++) {
+ proc(l[i]);
+ }
+} \ No newline at end of file
diff --git a/challenge-254/zapwai/c/ch-2.c b/challenge-254/zapwai/c/ch-2.c
new file mode 100644
index 0000000000..69e38352a5
--- /dev/null
+++ b/challenge-254/zapwai/c/ch-2.c
@@ -0,0 +1,66 @@
+#include <stdio.h>
+#include <stdbool.h>
+bool is_vowel(char c) {
+ switch(c) {
+ case 'a' :
+ case 'e' :
+ case 'i' :
+ case 'o' :
+ case 'u' :
+ case 'A' :
+ case 'E' :
+ case 'I' :
+ case 'O' :
+ case 'U' :
+ return true;
+ default :
+ return false;
+ }
+}
+
+void proc(char *word, int len) {
+ printf("Input: word = %s\n", word);
+ printf("Output: ");
+ char vows[20];
+ int vlen = 0;
+ for (int i = 0; i < len; i++) {
+ if (is_vowel(word[i])) {
+ vows[vlen] = word[i];
+ vlen++;
+ }
+ }
+ char rvows[20];
+ for (int j = 0; j < vlen; j++) {
+ rvows[j] = vows[vlen - 1 - j];
+ }
+ int j = 0;
+ for (int i = 0; i < len; i++) {
+ if (is_vowel(word[i])) {
+ printf("%c", rvows[j]);
+ j++;
+ } else {
+ printf("%c", word[i]);
+ }
+ }
+ printf("\n");
+}
+
+int main() {
+ char word1[] = "Raku";
+ char word2[] = "Perl";
+ char word3[] = "Julia";
+ char word4[] = "Auiu";
+
+ int l1 = sizeof(word1) / sizeof(char);
+ proc(word1, l1);
+
+ int l2 = sizeof(word2) / sizeof(char);
+ proc(word2, l2);
+
+ int l3 = sizeof(word3) / sizeof(char);
+ proc(word3, l3);
+
+ int l4 = sizeof(word4) / sizeof(char);
+ proc(word4, l4);
+
+} \ No newline at end of file
diff --git a/challenge-254/zapwai/perl/ch-1.pl b/challenge-254/zapwai/perl/ch-1.pl
new file mode 100644
index 0000000000..869edaa96b
--- /dev/null
+++ b/challenge-254/zapwai/perl/ch-1.pl
@@ -0,0 +1,37 @@
+use v5.30;
+my $n = 27;
+#$n = 0;
+#$n = 6;
+
+
+ say "Input: \$n = $n";
+ my $output = div3($n);
+ if ($output >= 0) {
+ say "Output: True, $n = 3^", $output;
+ } else {
+ say "Output: False";
+ }
+
+sub div3() {
+ my $n = shift;
+ my $powflag = 0;
+ my $endflag = 0;
+ my $cnt = 0;
+ do {
+ $n = $n / 3;
+ $cnt++;
+ if ($n == 1) {
+ $endflag = 1;
+ $powflag = 1;
+ } elsif ($n == 0) {
+ $endflag = 1;
+ } elsif (int $n != $n) {
+ $endflag = 1;
+ }
+ } until ($endflag);
+ if ($powflag) {
+ return $cnt;
+ } else {
+ return -1;
+ }
+} \ No newline at end of file
diff --git a/challenge-254/zapwai/perl/ch-2.pl b/challenge-254/zapwai/perl/ch-2.pl
new file mode 100644
index 0000000000..4bf990c631
--- /dev/null
+++ b/challenge-254/zapwai/perl/ch-2.pl
@@ -0,0 +1,31 @@
+use v5.30;
+my $s = "Raku";
+my $s2 = "Julia";
+my $s3 = "Perl";
+my $s4 = "Uiua";
+proc($s);proc($s2);proc($s3);proc($s4);
+
+sub proc() {
+ my $s = shift;
+ say "Input: \$s = $s";
+ print "Output: ";
+ my (@vowels, @ind);
+ my @l = split "", $s;
+ foreach my $i (0 .. $#l) {
+ if ($l[$i] =~ /[aeiouAEIOU]/) {
+ push @vowels, $l[$i];
+ push @ind, $i;
+ }
+ }
+ @vowels = reverse @vowels;
+ my $j = 0;
+ foreach my $i (0 .. $#l) {
+ if ($i ~~ @ind) {
+ print $vowels[$j];
+ $j++;
+ } else {
+ print $l[$i];
+ }
+ }
+ print "\n";
+} \ No newline at end of file
diff --git a/challenge-254/zapwai/rust/ch-1.rs b/challenge-254/zapwai/rust/ch-1.rs
new file mode 100644
index 0000000000..178d24ddbd
--- /dev/null
+++ b/challenge-254/zapwai/rust/ch-1.rs
@@ -0,0 +1,19 @@
+fn main() {
+ for n in [27, 0, 6] {
+ println!("Input: {}\nOutput: {}", n, proc(n));
+ }
+}
+
+fn proc(n : i32) -> bool {
+ if n < 3 {return false;}
+ for i in 1 .. {
+ if n % i32::pow(3,i) != 0 {
+ if n / i32::pow(3,i-1) == 1 {
+ return true;
+ } else {
+ return false;
+ }
+ }
+ }
+ return true;
+} \ No newline at end of file
diff --git a/challenge-254/zapwai/rust/ch-2.rs b/challenge-254/zapwai/rust/ch-2.rs
new file mode 100644
index 0000000000..a6b341a374
--- /dev/null
+++ b/challenge-254/zapwai/rust/ch-2.rs
@@ -0,0 +1,39 @@
+fn main() {
+ let words = ["Raku", "Perl", "Julia", "Uaia"];
+ for w in words {
+ proc(w);
+ }
+}
+
+fn proc(word : &str) {
+ let mut vows = Vec::new();
+ let mut inds = Vec::new();
+ let mut w = Vec::new();
+ for c in word.chars() {
+ w.push(c);
+ }
+ for i in 0 .. word.len() {
+ let l = w[i];
+ if l == 'a' || l == 'A' ||
+ l == 'e' || l == 'E' ||
+ l == 'i' || l == 'I' ||
+ l == 'o' || l == 'O' ||
+ l == 'u' || l == 'U'
+ {
+ vows.push(l);
+ inds.push(i);
+ }
+ }
+ inds.push(0);
+ let k = vows.len()-1;
+ let mut j = 0;
+ for i in 0 .. word.len() {
+ if i == inds[j] {
+ print!("{}", vows[k-j]);
+ j += 1;
+ } else {
+ print!("{}", w[i]);
+ }
+ }
+ println!("");
+} \ No newline at end of file