aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorE7-87-83 <fungcheokyin@gmail.com>2022-01-14 21:29:55 +0800
committerE7-87-83 <fungcheokyin@gmail.com>2022-01-14 21:29:55 +0800
commitd0d4307c6aca27acc4b2bad93136148ee2160f00 (patch)
tree8e1c0458239a56af698a867c782afb4925532e53
parente09bcf4bfee7ea334525bf92554d6da42a373efd (diff)
downloadperlweeklychallenge-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.txt12
-rw-r--r--challenge-147/cheok-yin-fung/cpp/ch-1.cpp71
-rw-r--r--challenge-147/cheok-yin-fung/node/ch-1.js60
-rw-r--r--challenge-147/cheok-yin-fung/perl/ch-1.pl23
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];