From e51d7db0618e4c435d7f3888dcc1c19cac6fbbb0 Mon Sep 17 00:00:00 2001 From: Zapwai Date: Mon, 29 Jan 2024 12:17:39 -0500 Subject: Week 254 --- challenge-254/zapwai/c/ch-1.c | 36 +++++++++++++++++++++ challenge-254/zapwai/c/ch-2.c | 66 +++++++++++++++++++++++++++++++++++++++ challenge-254/zapwai/perl/ch-1.pl | 37 ++++++++++++++++++++++ challenge-254/zapwai/perl/ch-2.pl | 31 ++++++++++++++++++ challenge-254/zapwai/rust/ch-1.rs | 19 +++++++++++ challenge-254/zapwai/rust/ch-2.rs | 39 +++++++++++++++++++++++ 6 files changed, 228 insertions(+) create mode 100644 challenge-254/zapwai/c/ch-1.c create mode 100644 challenge-254/zapwai/c/ch-2.c create mode 100644 challenge-254/zapwai/perl/ch-1.pl create mode 100644 challenge-254/zapwai/perl/ch-2.pl create mode 100644 challenge-254/zapwai/rust/ch-1.rs create mode 100644 challenge-254/zapwai/rust/ch-2.rs 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 + +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 +#include +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 -- cgit