diff options
| author | Mohammad S Anwar <mohammad.anwar@yahoo.com> | 2024-01-31 13:40:24 +0000 |
|---|---|---|
| committer | Mohammad S Anwar <mohammad.anwar@yahoo.com> | 2024-01-31 13:40:24 +0000 |
| commit | a2f0218d62b74adbb34a0330c25f9f4efaa50bd4 (patch) | |
| tree | 29a5194200892fb00828fcb323706be10fb73516 | |
| parent | a52561b3a2f2989033faea3c0948020a10720dbb (diff) | |
| download | perlweeklychallenge-club-a2f0218d62b74adbb34a0330c25f9f4efaa50bd4.tar.gz perlweeklychallenge-club-a2f0218d62b74adbb34a0330c25f9f4efaa50bd4.tar.bz2 perlweeklychallenge-club-a2f0218d62b74adbb34a0330c25f9f4efaa50bd4.zip | |
- Added solutions by Ulrich Rieke.
- Added solutions by Eric Cheung.
- Added solutions by Laurent Rosenfeld.
- Added solutions by E. Choroba.
- Added solutions by Niels van Dijke.
- Added solutions by Luca Ferrari.
- Added solutions by Mark Anderson.
- Added solutions by Stephen G Lynn.
- Added solutions by Peter Meszaros.
- Added solutions by Thomas Kohler.
- Added solutions by W. Luis Mochan.
- Added solutions by David Ferrone.
- Added solutions by Steven Wilson.
- Added solutions by Dave Jacoby.
- Added solutions by Robbie Hatley.
- Added solutions by Peter Campbell Smith.
- Added solutions by Arne Sommer.
- Added solutions by PokGoPun.
- Added solutions by Roger Bell_West.
39 files changed, 4038 insertions, 3384 deletions
diff --git a/challenge-254/eric-cheung/python/ch-1.py b/challenge-254/eric-cheung/python/ch-1.py new file mode 100755 index 0000000000..3a08de1539 --- /dev/null +++ b/challenge-254/eric-cheung/python/ch-1.py @@ -0,0 +1,13 @@ +
+import math
+
+## nInput = 27 ## Example 1
+## nInput = 0 ## Example 2
+nInput = 6 ## Example 3
+
+dCubicRoot = nInput ** (1. / 3.)
+
+if dCubicRoot - int(dCubicRoot) > 0:
+ print (False)
+else:
+ print (True)
diff --git a/challenge-254/eric-cheung/python/ch-2.py b/challenge-254/eric-cheung/python/ch-2.py new file mode 100755 index 0000000000..e1a9c3c14f --- /dev/null +++ b/challenge-254/eric-cheung/python/ch-2.py @@ -0,0 +1,24 @@ +
+## Reference
+## https://www.w3resource.com/python-exercises/basic/python-basic-1-exercise-71.php
+## https://www.geeksforgeeks.org/reverse-vowels-given-string/
+
+## strInput = "Raku" ## Example 1
+## strInput = "Perl" ## Example 2
+## strInput = "Julia" ## Example 3
+strInput = "Uiua" ## Example 4
+
+arrVowel = [charLoop for charLoop in strInput.lower() if charLoop in ["a", "e", "i", "o", "u"]]
+
+strOutput = ""
+
+for nIndx, charLoop in enumerate(strInput.lower()):
+ if charLoop in ["a", "e", "i", "o", "u"]:
+ strOutput = strOutput + arrVowel[-1]
+ del arrVowel[-1]
+ else:
+ strOutput = strOutput + charLoop
+
+strOutput = strOutput.title()
+
+print (strOutput)
diff --git a/challenge-254/laurent-rosenfeld/blog.txt b/challenge-254/laurent-rosenfeld/blog.txt new file mode 100644 index 0000000000..f05728e0e4 --- /dev/null +++ b/challenge-254/laurent-rosenfeld/blog.txt @@ -0,0 +1 @@ +https://blogs.perl.org/users/laurent_r/2024/01/perl-weekly-challenge-254-three-power.html diff --git a/challenge-254/laurent-rosenfeld/blog1.txt b/challenge-254/laurent-rosenfeld/blog1.txt new file mode 100644 index 0000000000..07591b34b0 --- /dev/null +++ b/challenge-254/laurent-rosenfeld/blog1.txt @@ -0,0 +1 @@ +https://blogs.perl.org/users/laurent_r/2024/01/perl-weekly-challenge-254-reverse-vowels.html diff --git a/challenge-254/laurent-rosenfeld/perl/ch-1.pl b/challenge-254/laurent-rosenfeld/perl/ch-1.pl new file mode 100644 index 0000000000..a53e4bf876 --- /dev/null +++ b/challenge-254/laurent-rosenfeld/perl/ch-1.pl @@ -0,0 +1,13 @@ +use strict; +use warnings; +use feature 'say'; + +sub exp_three { + my $in = shift; + return "true" if $in == 0; + my $exp = int (log $in / log 3); + return (3 ** $exp == $in or 3 ** ($exp + 1) == $in) + ? "true" : "false"; +} + +say "$_ \t=> ", exp_three $_ for qw<27 26 0 6>; diff --git a/challenge-254/laurent-rosenfeld/perl/ch-2.pl b/challenge-254/laurent-rosenfeld/perl/ch-2.pl new file mode 100644 index 0000000000..0070411d99 --- /dev/null +++ b/challenge-254/laurent-rosenfeld/perl/ch-2.pl @@ -0,0 +1,14 @@ +use strict; +use warnings; +use feature 'say'; + +sub reverse_vowels { + my $str = lc shift; + my @vowels = $str =~ /[aeiou]/g; + $str =~ s/[aeiou]/pop @vowels/ge; + return ucfirst $str; +} + +for my $test (qw <Raku Perl Julia Uiua>) { + say "$test \t => ", reverse_vowels $test; +} diff --git a/challenge-254/laurent-rosenfeld/raku/ch-1.raku b/challenge-254/laurent-rosenfeld/raku/ch-1.raku new file mode 100644 index 0000000000..48844631b2 --- /dev/null +++ b/challenge-254/laurent-rosenfeld/raku/ch-1.raku @@ -0,0 +1,7 @@ +sub exp-three ($in) { + return True if $in == 0; + my $exp = (log $in, 3).Int; + return (3 ** $exp == $in or 3 ** ($exp + 1) == $in); +} + +say "$_ \t=> ", exp-three $_ for <27 26 0 6>; diff --git a/challenge-254/laurent-rosenfeld/raku/ch-2.raku b/challenge-254/laurent-rosenfeld/raku/ch-2.raku new file mode 100644 index 0000000000..213a7bf11e --- /dev/null +++ b/challenge-254/laurent-rosenfeld/raku/ch-2.raku @@ -0,0 +1,10 @@ +sub reverse-vowels ($in) { + my $str = $in.lc; + my @vowels = map { .Str }, $str ~~ m:g/<[aeiou]>/; + $str ~~ s:g/<[aeiou]>/{pop @vowels}/; + return $str.tc; +} + +for <Raku Perl Julia Uiua> -> $test { + say "$test \t => ", reverse-vowels $test; +} diff --git a/challenge-254/perlboy1967/perl/ch1.pl b/challenge-254/perlboy1967/perl/ch-1.pl index 68c055158f..68c055158f 100755 --- a/challenge-254/perlboy1967/perl/ch1.pl +++ b/challenge-254/perlboy1967/perl/ch-1.pl diff --git a/challenge-254/perlboy1967/perl/ch2.pl b/challenge-254/perlboy1967/perl/ch-2.pl index 2af8efbfb6..2af8efbfb6 100755 --- a/challenge-254/perlboy1967/perl/ch2.pl +++ b/challenge-254/perlboy1967/perl/ch-2.pl diff --git a/challenge-254/steven-wilson/python/ch-01.py b/challenge-254/steven-wilson/python/ch-1.py index 6c51d189e2..6c51d189e2 100644 --- a/challenge-254/steven-wilson/python/ch-01.py +++ b/challenge-254/steven-wilson/python/ch-1.py diff --git a/challenge-254/steven-wilson/python/ch-02.py b/challenge-254/steven-wilson/python/ch-2.py index 9a9fc09f62..9a9fc09f62 100644 --- a/challenge-254/steven-wilson/python/ch-02.py +++ b/challenge-254/steven-wilson/python/ch-2.py diff --git a/challenge-254/ulrich-rieke/cpp/ch-1.cpp b/challenge-254/ulrich-rieke/cpp/ch-1.cpp new file mode 100755 index 0000000000..d9cbd68737 --- /dev/null +++ b/challenge-254/ulrich-rieke/cpp/ch-1.cpp @@ -0,0 +1,15 @@ +#include <iostream>
+#include <cmath>
+
+int main( ) {
+ std::cout << "Please enter an integer!\n" ;
+ int number ;
+ std::cin >> number ;
+ double third = 1.0 / 3.0 ;
+ double cuberoot = std::pow( static_cast<double>(number ) , third ) ;
+ if ( cuberoot == floor( cuberoot ) )
+ std::cout << "true\n" ;
+ else
+ std::cout << "false\n" ;
+ return 0 ;
+}
diff --git a/challenge-254/ulrich-rieke/cpp/ch-2.cpp b/challenge-254/ulrich-rieke/cpp/ch-2.cpp new file mode 100755 index 0000000000..ed81183edd --- /dev/null +++ b/challenge-254/ulrich-rieke/cpp/ch-2.cpp @@ -0,0 +1,35 @@ +#include <iostream>
+#include <string>
+#include <cctype>
+#include <list>
+#include <algorithm>
+
+int main( ) {
+ std::cout << "Please enter a word!\n" ;
+ std::string word ;
+ std::cin >> word ;
+ std::string vowels {"aeiouAEIOU"} ;
+ std::list<char> vowels_contained ;
+ for ( int i = 0 ; i < word.length( ) ; i++ ) {
+ if ( vowels.find( word.substr( i , 1 ) ) != std::string::npos )
+ vowels_contained.push_back( word[ i ] ) ;
+ }
+ std::string changed ;
+ for ( auto c : word ) {
+ if ( vowels.find( c ) != std::string::npos ) {
+ char next_one = vowels_contained.back( ) ;
+ if ( changed.empty( ) ) {
+ changed.push_back( toupper( next_one ) ) ;
+ }
+ else {
+ changed.push_back( tolower( next_one ) ) ;
+ }
+ vowels_contained.pop_back( ) ;
+ }
+ else {
+ changed.push_back( c ) ;
+ }
+ }
+ std::cout << changed << '\n' ;
+ return 0 ;
+}
diff --git a/challenge-254/ulrich-rieke/haskell/ch-1.hs b/challenge-254/ulrich-rieke/haskell/ch-1.hs new file mode 100755 index 0000000000..70d47acb53 --- /dev/null +++ b/challenge-254/ulrich-rieke/haskell/ch-1.hs @@ -0,0 +1,11 @@ +module Challenge254
+ where
+import Data.Ratio
+
+third :: Ratio Int
+third = 1 % 3
+
+solution :: Int -> Bool
+solution n = ( fromIntegral $ floor cuberoot ) == cuberoot
+ where
+ cuberoot = (fromIntegral n ) ** ( realToFrac third )
diff --git a/challenge-254/ulrich-rieke/haskell/ch-2.hs b/challenge-254/ulrich-rieke/haskell/ch-2.hs new file mode 100755 index 0000000000..5334895c62 --- /dev/null +++ b/challenge-254/ulrich-rieke/haskell/ch-2.hs @@ -0,0 +1,25 @@ +module Challenge254_2
+ where
+import Data.Char( toUpper , toLower )
+import Data.Maybe ( fromJust )
+
+vowels :: String
+vowels = "aeiouAEIOU"
+
+solution :: String -> String
+solution str = map (\p -> if ( fst p ) == 0 then toUpper $ snd p
+ else toLower $ snd p ) indexed
+ where
+ vowelsContained :: String
+ vowelsContained = filter (\c -> elem c vowels ) str
+ reversed :: [(Char , Char)]
+ reversed = zip vowelsContained ( reverse vowelsContained )
+ indexed :: [(Int, Char)]
+ indexed = map (\(n , c) -> if elem c vowels then ( n , fromJust $
+ lookup c reversed ) else ( n , c )) $ zip [0,1..] str
+
+main :: IO ( )
+main = do
+ putStrLn "Please enter a word!"
+ word <- getLine
+ print $ solution word
diff --git a/challenge-254/ulrich-rieke/perl/ch-1.pl b/challenge-254/ulrich-rieke/perl/ch-1.pl new file mode 100755 index 0000000000..b919d0f614 --- /dev/null +++ b/challenge-254/ulrich-rieke/perl/ch-1.pl @@ -0,0 +1,17 @@ +#!/usr/bin/perl ;
+use strict ;
+use warnings ;
+use feature 'say' ;
+use POSIX ;
+
+say "Enter a number!" ;
+my $number = <STDIN> ;
+chomp $number ;
+my $third = 1 / 3 ;
+my $cuberoot = $number ** $third ;
+if ( $cuberoot == floor( $cuberoot )) {
+ say "true" ;
+}
+else {
+ say "false" ;
+}
diff --git a/challenge-254/ulrich-rieke/perl/ch-2.pl b/challenge-254/ulrich-rieke/perl/ch-2.pl new file mode 100755 index 0000000000..5c6eb13282 --- /dev/null +++ b/challenge-254/ulrich-rieke/perl/ch-2.pl @@ -0,0 +1,32 @@ +#!/usr/bin/perl ;
+use strict ;
+use warnings ;
+use feature 'say' ;
+
+say "Enter a word!" ;
+my $word = <STDIN> ;
+chomp $word ;
+my @vowels_contained ;
+for my $letter ( split( // , $word ) ) {
+ if ( $letter =~ /[aeiouAEIOU]/ ) {
+ push @vowels_contained , $letter ;
+ }
+}
+my @changed ;
+for my $letter ( split( // , $word ) ) {
+ if ( $letter =~ /[aeiouAEIOU]/ ) {
+ my $next_one = pop @vowels_contained ;
+ if ( @changed ) {
+ push @changed , lc( $next_one ) ;
+ }
+ else {
+ push @changed , uc( $next_one ) ;
+ }
+ }
+ else {
+ push @changed , $letter ;
+ }
+}
+say join( '' , @changed ) ;
+
+
diff --git a/challenge-254/ulrich-rieke/raku/ch-1.raku b/challenge-254/ulrich-rieke/raku/ch-1.raku new file mode 100755 index 0000000000..1881cc8a66 --- /dev/null +++ b/challenge-254/ulrich-rieke/raku/ch-1.raku @@ -0,0 +1,8 @@ +use v6 ;
+
+say "Enter a number!" ;
+my $line = $*IN.get ;
+my $number = $line.Int ;
+my $third = FatRat.new( 1 , 3 ) ;
+my $cuberoot = $number ** $third ;
+say ( $cuberoot == floor( $cuberoot ) ) ;
diff --git a/challenge-254/ulrich-rieke/raku/ch-2.raku b/challenge-254/ulrich-rieke/raku/ch-2.raku new file mode 100755 index 0000000000..1ed87a2a26 --- /dev/null +++ b/challenge-254/ulrich-rieke/raku/ch-2.raku @@ -0,0 +1,25 @@ +use v6 ;
+
+say "Enter a word!" ;
+my $word = $*IN.get ;
+my @vowels_contained ;
+for $word.comb -> $letter {
+ if ( $letter ~~ /<[aeiouAEIOU]>/ ) {
+ @vowels_contained.push( $letter ) ;
+ }
+}
+my @characters ;
+for $word.comb -> $letter {
+ if ( $letter ~~ /<[aeiouAEIOU]>/ ) {
+ if ( @characters.elems == 0 ) {
+ @characters.push( uc( @vowels_contained.pop( ) )) ;
+ }
+ else {
+ @characters.push( lc( @vowels_contained.pop( ) ) ) ;
+ }
+ }
+ else {
+ @characters.push( $letter ) ;
+ }
+}
+say @characters.join ;
diff --git a/challenge-254/ulrich-rieke/rust/ch-1.rs b/challenge-254/ulrich-rieke/rust/ch-1.rs new file mode 100755 index 0000000000..5ded9771da --- /dev/null +++ b/challenge-254/ulrich-rieke/rust/ch-1.rs @@ -0,0 +1,12 @@ +use std::io ; + +fn main() { + println!("Enter a positive integer!"); + let mut inline : String = String::new( ) ; + io::stdin( ).read_line( &mut inline ).unwrap( ) ; + let entered_line : &str = &*inline ; + let changed = entered_line.trim( ) ; + let number = changed.parse::<i32>( ).unwrap( ) ; + let cuberoot : f32 = (number as f32).cbrt( ) ; + println!("{}" , cuberoot == cuberoot.floor( ) ) ; +} diff --git a/challenge-254/ulrich-rieke/rust/ch-2.rs b/challenge-254/ulrich-rieke/rust/ch-2.rs new file mode 100755 index 0000000000..630ffdb2c6 --- /dev/null +++ b/challenge-254/ulrich-rieke/rust/ch-2.rs @@ -0,0 +1,32 @@ +use std::io ; + +fn main() { + println!("Please enter a string!"); + let mut inline : String = String::new( ) ; + io::stdin( ).read_line( &mut inline ).unwrap( ) ; + let entered_line : &str = &*inline ; + let word = entered_line.trim( ) ; + let vowels : &str = "aeiouAEIOU" ; + let mut vowels_contained : String = String::new( ) ; + for c in word.chars( ) { + if vowels.contains( c ) { + vowels_contained.push( c ) ; + } + } + let mut changed : String = String::new( ) ; + for c in word.chars( ) { + if vowels.contains( c ) { + let next_vowel : char = vowels_contained.pop( ).unwrap( ) ; + if changed.len( ) == 0 { + changed.push_str( &next_vowel.to_uppercase( ).to_string( )) ; + } + else { + changed.push_str( &next_vowel.to_lowercase( ).to_string( ) ) ; + } + } + else { + changed.push( c ) ; + } + } + println!("{:?}" , changed) ; +} diff --git a/stats/pwc-challenge-253.json b/stats/pwc-challenge-253.json new file mode 100644 index 0000000000..fd29ba8a0f --- /dev/null +++ b/stats/pwc-challenge-253.json @@ -0,0 +1,665 @@ +{ + "legend" : { + "enabled" : 0 + }, + "series" : [ + { + "colorByPoint" : 1, + "name" : "The Weekly Challenge - 253", + "data" : [ + { + "drilldown" : "Ali Moradi", + "name" : "Ali Moradi", + "y" : 3 + }, + { + "name" : "Arne Sommer", + "y" : 3, + "drilldown" : "Arne Sommer" + }, + { + "drilldown" : "Athanasius", + "name" : "Athanasius", + "y" : 4 + }, + { + "y" : 2, + "name" : "BarrOff", + "drilldown" : "BarrOff" + }, + { + "drilldown" : "Bob Lied", + "name" : "Bob Lied", + "y" : 2 + }, + { + "drilldown" : "Bruce Gray", + "y" : 2, + "name" : "Bruce Gray" + }, + { + "name" : "Cheok-Yin Fung", + "y" : 2, + "drilldown" : "Cheok-Yin Fung" + }, + { + "drilldown" : "Dave Jacoby", + "name" : "Dave Jacoby", + "y" : 3 + }, + { + "drilldown" : "David Ferrone", + "name" : "David Ferrone", + "y" : 2 + }, + { + "name" : "E. Choroba", + "y" : 2, + "drilldown" : "E. Choroba" + }, + { + "name" : "Jaldhar H. Vyas", + "y" : 5, + "drilldown" : "Jaldhar H. Vyas" + }, + { + "drilldown" : "Jan Krnavek", + "name" : "Jan Krnavek", + "y" : 2 + }, + { + "name" : "Jorg Sommrey", + "y" : 3, + "drilldown" : "Jorg Sommrey" + }, + { + "drilldown" : "Laurent Rosenfeld", + "y" : 6, + "name" : "Laurent Rosenfeld" + }, + { + "drilldown" : "Lubos Kolouch", + "y" : 4, + "name" : "Lubos Kolouch" + }, + { + "y" : 11, + "name" : "Luca Ferrari", + "drilldown" : "Luca Ferrari" + }, + { + "drilldown" : "Mariano Spadaccini", + "y" : 2, + "name" : "Mariano Spadaccini" + }, + { + "drilldown" : "Mark Anderson", + "name" : "Mark Anderson", + "y" : 2 + }, + { + "drilldown" : "Matthew Neleigh", + "name" : "Matthew Neleigh", + "y" : 2 + }, + { + "drilldown" : "Mustafa Aydin", + "y" : 2, + "name" : "Mustafa Aydin" + }, + { + "drilldown" : "Nelo Tovar", + "y" : 2, + "name" : "Nelo Tovar" + }, + { + "name" : "Niels van Dijke", + "y" : 2, + "drilldown" : "Niels van Dijke" + }, + { + "drilldown" : "Packy Anderson", + "y" : 5, + "name" : "Packy Anderson" + }, + { + "drilldown" : "Peter Campbell Smith", + "name" : "Peter Campbell Smith", + "y" : 3 + }, + { + "y" : 2, + "name" : "Peter Meszaros", + "drilldown" : "Peter Meszaros" + }, + { + "drilldown" : "Robbie Hatley", + "y" : 3, + "name" : "Robbie Hatley" + }, + { + "y" : 2, + "name" : "Robert Ransbottom", + "drilldown" : "Robert Ransbottom" + }, + { + "drilldown" : "Roger Bell_West", + "y" : 5, + "name" : "Roger Bell_West" + }, + { + "drilldown" : "Simon Green", + "y" : 3, + "name" : "Simon Green" + }, + { + "name" : "Simon Proctor", + "y" : 1, + "drilldown" : "Simon Proctor" + }, + { + "y" : 3, + "name" : "Stephen G. Lynn", + "drilldown" : "Stephen G. Lynn" + }, + { + "drilldown" : "Thomas Kohler", + "y" : 4, + "name" : "Thomas Kohler" + }, + { + "drilldown" : "Ulrich Rieke", + "y" : 3, + "name" : "Ulrich Rieke" + }, + { + "drilldown" : "W. Luis Mochan", + "y" : 3, + "name" : "W. Luis Mochan" + }, + { + "drilldown" : "Wanderdoc", + "y" : 2, + "name" : "Wanderdoc" + } + ] + } + ], + "drilldown" : { + "series" : [ + { + "id" : "Ali Moradi", + "data" : [ + [ + "Perl", + 2 + ], + [ + "Blog", + 1 + ] + ], + "name" : "Ali Moradi" + }, + { + "data" : [ + [ + "Raku", + 2 + ], + [ + "Blog", + 1 + ] + ], + "name" : "Arne Sommer", + "id" : "Arne Sommer" + }, + { + "id" : "Athanasius", + "name" : "Athanasius", + "data" : [ + [ + "Perl", + 2 + ], + [ + "Raku", + 2 + ] + ] + }, + { + "id" : "BarrOff", + "name" : "BarrOff", + "data" : [ + [ + "Perl", + 1 + ], + [ + "Raku", + 1 + ] + ] + }, + { + "data" : [ + [ + "Perl", + 2 + ] + ], + "name" : "Bob Lied", + "id" : "Bob Lied" + }, + { + "id" : "Bruce Gray", + "data" : [ + [ + "Raku", + 2 + ] + ], + "name" : "Bruce Gray" + }, + { + "id" : "Cheok-Yin Fung", + "data" : [ + [ + "Perl", + 2 + ] + ], + "name" : "Cheok-Yin Fung" + }, + { + "id" : "Dave Jacoby", + "name" : "Dave Jacoby", + "data" : [ + [ + "Perl", + 2 + ], + [ + "Blog", + 1 + ] + ] + }, + { + "data" : [ + [ + "Perl", + 2 + ] + ], + "name" : "David Ferrone", + "id" : "David Ferrone" + }, + { + "name" : "E. Choroba", + "data" : [ + [ + "Perl", + 2 + ] + ], + "id" : "E. Choroba" + }, + { + "data" : [ + [ + "Perl", + 2 + ], + [ + "Raku", + 2 + ], + [ + "Blog", + 1 + ] + ], + "name" : "Jaldhar H. Vyas", + "id" : "Jaldhar H. Vyas" + }, + { + "id" : "Jan Krnavek", |
