diff options
| author | E7-87-83 <fungcheokyin@gmail.com> | 2022-01-14 21:29:55 +0800 |
|---|---|---|
| committer | E7-87-83 <fungcheokyin@gmail.com> | 2022-01-14 21:29:55 +0800 |
| commit | d0d4307c6aca27acc4b2bad93136148ee2160f00 (patch) | |
| tree | 8e1c0458239a56af698a867c782afb4925532e53 | |
| parent | e09bcf4bfee7ea334525bf92554d6da42a373efd (diff) | |
| download | perlweeklychallenge-club-d0d4307c6aca27acc4b2bad93136148ee2160f00.tar.gz perlweeklychallenge-club-d0d4307c6aca27acc4b2bad93136148ee2160f00.tar.bz2 perlweeklychallenge-club-d0d4307c6aca27acc4b2bad93136148ee2160f00.zip | |
Smalltalk, Java, C++, Node.js
| -rw-r--r-- | challenge-147/cheok-yin-fung/blog.txt | 12 | ||||
| -rw-r--r-- | challenge-147/cheok-yin-fung/cpp/ch-1.cpp | 71 | ||||
| -rw-r--r-- | challenge-147/cheok-yin-fung/node/ch-1.js | 60 | ||||
| -rw-r--r-- | challenge-147/cheok-yin-fung/perl/ch-1.pl | 23 |
4 files changed, 152 insertions, 14 deletions
diff --git a/challenge-147/cheok-yin-fung/blog.txt b/challenge-147/cheok-yin-fung/blog.txt index 9b08363ef9..815ab13ca8 100644 --- a/challenge-147/cheok-yin-fung/blog.txt +++ b/challenge-147/cheok-yin-fung/blog.txt @@ -1,16 +1,24 @@ This is the beginning of the semester of my PG dip in IT; and I have finished all exams and assignments from the previous semester. Somehow today I want to try to play with programming languages. While Mohammad has said, having fun is important in learning, now I try to do the Task 1 in different programming languages which I am fluent at least at the "sightseeing purpose", within 4 days. Target list: -awk bash C++ +awk(?) bash(?) + +C++ Java Node.js Julia LISP PHP Perl Smalltalk Befunge-93 (if I have that mentality) -Script done (last update: Fri Jan 14 03:25:06 2022): +Script done (last update: Fri Jan 14 13:19 2022 HKT): 1. Julia 2. Perl 3. Smalltalk 4. Java +5. C++ +6. Node.js + +Left: +LISP +Befunge-93 >>>> The above content will be edited and put on https://e7-87-83.github.io/coding/challenge_147.html diff --git a/challenge-147/cheok-yin-fung/cpp/ch-1.cpp b/challenge-147/cheok-yin-fung/cpp/ch-1.cpp new file mode 100644 index 0000000000..dbfdff0aaa --- /dev/null +++ b/challenge-147/cheok-yin-fung/cpp/ch-1.cpp @@ -0,0 +1,71 @@ +// The Weekly Challenge 147 +// Task 1 Truncatable Prime +// g++ ch-1.cpp -o ch-1.o +// Friday, January 14, 2022 PM01:15:37 HKT + +#include <vector> +#include <cmath> +#include <algorithm> +#include <iostream> + +using namespace std; +vector<int> ltp = {}; +vector<int> recent_ltp = {2, 3, 5, 7}; +vector<int> new_ltp = {}; +vector<int> primes = {2, 3, 5, 7}; + +bool is_prime(int t) { + for (int k = 0; primes.at(k) <= sqrt(t); k++) { + if (t % primes.at(k) == 0) + return false; + } + return true; +} + + + +void append_primes(int max) { + for (int can = primes.back()+1; can <= max; can++) { + bool good = true; + for (int k = 0; primes.at(k) <= sqrt(can) & good; k++ ) { + if (can % primes.at(k) == 0) + good = false; + } + if (good) + primes.push_back(can); + } +} + + + +void append_ltp(int target_size) { + if (target_size <= ltp.size() + recent_ltp.size() ) { + ltp.insert( ltp.end(), recent_ltp.begin(), recent_ltp.end() ); + return; + } + for (int d = 1; d <= 9; d++) { + for (int r = 0; r < recent_ltp.size(); r++ ) { + char str[20]; + int num = recent_ltp.at(r); + sprintf(str, "%d%d", d, num); + int new_num = atoi(str); + if (is_prime(new_num)) + new_ltp.push_back(new_num); + } + } + ltp.insert( ltp.end(), recent_ltp.begin(), recent_ltp.end() ); + recent_ltp = new_ltp; + new_ltp = {}; + append_ltp(target_size); +} + + + +int main() { + append_primes(1000); + append_ltp(20); + for (int i = 0; i < 20; i++) { + cout << ltp.at(i) << endl; + } + return 0; +} diff --git a/challenge-147/cheok-yin-fung/node/ch-1.js b/challenge-147/cheok-yin-fung/node/ch-1.js new file mode 100644 index 0000000000..c3a75a954d --- /dev/null +++ b/challenge-147/cheok-yin-fung/node/ch-1.js @@ -0,0 +1,60 @@ +// The Weekly Challenge 147 +// Task 1 Truncatable Prime +// Friday, January 14, 2022 PM07:31:14 HKT + +let ltp = new Array(); +let recent_ltp = new Array(2,3,5,7); +let new_ltp = new Array(); + +let prime = new Array(2,3,5,7); + + + +function is_prime(t) { + for (let k = 0; prime[k] <= Math.sqrt(t); k++) { + if (t % prime[k] == 0) + return false; + } + return true; +} + + + +function append_primes(max) { + HERE: for (can = prime[prime.length-1]+1; can <= max ; can++) { + for (let k=0; prime[k] <= Math.sqrt(can) ;k++) { + if (can % prime[k] == 0) { + continue HERE; + } + } + prime.push(can); + } + +} + + + +function append_ltp(target_size) { + if (target_size <= ltp.length + recent_ltp.length) { + ltp = ltp.concat(recent_ltp); + return; + } + for (d = 1; d<=9; d++) { + for (num of recent_ltp) { + new_num = parseInt(d + '' + num); + if (is_prime(new_num)) { + new_ltp.push(new_num); + } + } + } + ltp = ltp.concat(recent_ltp); + recent_ltp = new_ltp; + new_ltp = new Array(); + append_ltp(target_size); +} + + + +append_primes(1000); +append_ltp(20); +console.log(ltp.slice(0, 20)); diff --git a/challenge-147/cheok-yin-fung/perl/ch-1.pl b/challenge-147/cheok-yin-fung/perl/ch-1.pl index 4fa2d26e7b..02212489b5 100644 --- a/challenge-147/cheok-yin-fung/perl/ch-1.pl +++ b/challenge-147/cheok-yin-fung/perl/ch-1.pl @@ -1,7 +1,7 @@ # The Weekly Challenge 147 # Task 1 Truncatable Prime # version 0: Thursday, January 13, 2022 PM04:18:51 HKT -# version 1: Friday, January 14, 2022 AM01:20:32 +# version 1: Friday, January 14, 2022 PM12:34 HKT use v5.12.0; use warnings; @@ -18,7 +18,7 @@ my @prime = (2,3,5,7); sub is_prime { my $t = $_[0]; - for (my $k = 0; $prime[$k] <= sqrt($t) ;$k++) { + for (my $k = 0; $prime[$k] <= sqrt($t); $k++) { return 0 if $t % $prime[$k] == 0; } return 1; @@ -26,13 +26,12 @@ sub is_prime { -sub append_arr_of_primes { +sub append_primes { my $max = $_[0]; - my $sqrtmax = sqrt($max); - my @relatively_small_primes = grep { $_ <= $sqrtmax } @prime; - HERE: for my $can ($relatively_small_primes[-1]+1..$max) { - for my $p (@relatively_small_primes) { - next HERE if $can % $p == 0 + HERE: for my $can ($prime[-1]+1..$max) { + for my $p (@prime) { + next HERE if $can % $p == 0; + last if $p > sqrt($can); } push @prime, $can; } @@ -40,7 +39,7 @@ sub append_arr_of_primes { -sub append_arr_of_ltp { +sub append_ltp { my $target_size = $_[0]; if ($target_size <= (scalar @ltp + scalar @recent_ltp)) { push @ltp, @recent_ltp; @@ -55,12 +54,12 @@ sub append_arr_of_ltp { push @ltp, @recent_ltp; @recent_ltp = @new_ltp; @new_ltp = (); - append_arr_of_ltp($target_size); + append_ltp($target_size); } -append_arr_of_primes(1000); -append_arr_of_ltp(20); +append_primes(1000); +append_ltp(20); say $_ for @ltp[0..19]; |
