aboutsummaryrefslogtreecommitdiff
path: root/challenge-103/abigail/data/preprocess
diff options
context:
space:
mode:
author冯昶 <seaker@qq.com>2021-03-15 18:13:51 +0800
committer冯昶 <seaker@qq.com>2021-03-15 18:13:51 +0800
commit8b6be37fe4dac8b4c6489a95e55514b76b298d15 (patch)
treeae36c8ec2c71f606c0e36adaa19dba366a68a0b4 /challenge-103/abigail/data/preprocess
parent865acfd056fb6f409ec6b1a81d60b931cbcb69fe (diff)
parentc9aec2da6bcb04b488183f09ca94bee488557aff (diff)
downloadperlweeklychallenge-club-8b6be37fe4dac8b4c6489a95e55514b76b298d15.tar.gz
perlweeklychallenge-club-8b6be37fe4dac8b4c6489a95e55514b76b298d15.tar.bz2
perlweeklychallenge-club-8b6be37fe4dac8b4c6489a95e55514b76b298d15.zip
Merge branch 'master' of github.com:seaker/perlweeklychallenge-club
Diffstat (limited to 'challenge-103/abigail/data/preprocess')
-rwxr-xr-xchallenge-103/abigail/data/preprocess138
1 files changed, 138 insertions, 0 deletions
diff --git a/challenge-103/abigail/data/preprocess b/challenge-103/abigail/data/preprocess
new file mode 100755
index 0000000000..3e16a0fc07
--- /dev/null
+++ b/challenge-103/abigail/data/preprocess
@@ -0,0 +1,138 @@
+#!/opt/perl/bin/perl
+
+use 5.032;
+
+use strict;
+use warnings;
+no warnings 'syntax';
+
+use experimental 'signatures';
+use experimental 'lexical_subs';
+
+open my $fh, "<", "rare_numbers.txt" or die "open rare_numbers.txt: $!";
+
+my @buckets;
+
+while (my $rn = <$fh>) {
+ chomp $rn;
+ $rn =~ s/^[0-9]+\s+//;
+ push @{$buckets [length $rn]} => $rn;
+}
+
+my @bs = sort {$a <=> $b} grep {$buckets [$_]} keys @buckets;
+
+
+open my $awk_h, ">", "rn.awk" or die "open rn.awk: $!";
+open my $bash_h, ">", "rn.sh" or die "open rn.sh: $!";
+open my $basic_h, ">", "rn.bas" or die "open rn.bas: $!";
+open my $c_h, ">", "rn.c" or die "open rn.c: $!";
+open my $lua_h, ">", "rn.lua" or die "open rn.lua: $!";
+open my $node_h, ">", "rn.js" or die "open rn.js: $!";
+open my $perl_h, ">", "rn.pl" or die "open rn.pl: $!";
+open my $python_h, ">", "rn.py" or die "open rn.py: $!";
+open my $ruby_h, ">", "rn.rb" or die "open rn.rb: $!";
+
+my $basic_ln = 1000;
+
+say $awk_h "BEGIN {";
+say $bash_h "declare -a rare_numbers\n";
+say $basic_h "$basic_ln INPUT length\n\n";
+say $c_h "char * rare_numbers [23];\n";
+say $c_h "int main () {";
+say $lua_h "rare_numbers = {}\n";
+say $node_h "let rare_numbers = []\n";
+say $perl_h "my \@rare_numbers;\n";
+say $python_h "rare_numbers = {}\n";
+say $ruby_h "rare_numbers = Array . new";
+
+foreach my $bs (0 .. 22) {
+ if (!$buckets [$bs]) {
+ printf $c_h " rare_numbers [%2d] = NULL;\n"
+ => $bs;
+ next;
+ }
+
+ #
+ # AWK
+ #
+ printf $awk_h ' rare_numbers [%2d] = ', $bs;
+ print $awk_h join " \\\n " =>
+ map {sprintf "%26s", qq {"$_\\n"}} @{$buckets [$bs]};
+ print $awk_h "\n";
+
+ #
+ # Bash
+ #
+ printf $bash_h 'rare_numbers[%2d]=', $bs;
+ print $bash_h join "\\\n" =>
+ map {qq {"$_\\n"}} @{$buckets [$bs]};
+ print $bash_h "\n";
+
+ #
+ # BASIC
+ #
+ for my $rn (@{$buckets [$bs]}) {
+ printf $basic_h qq {%03d IF length = %2d THEN PRINT %24s\n}
+ => ($basic_ln += 10), $bs, qq {"$rn"}
+ }
+
+ #
+ # C
+ #
+ printf $c_h ' rare_numbers [%2d] = ', $bs;
+ print $c_h join " \\\n " =>
+ map {sprintf "%26s", qq {"$_\\n"}} @{$buckets [$bs]};
+ print $c_h ";\n";
+
+ #
+ # Lua
+ #
+ printf $lua_h "rare_numbers [%2d] = ", $bs;
+ print $lua_h join " ..\n " =>
+ map {sprintf "%26s", qq {"$_\\n"}} @{$buckets [$bs]};
+ print $lua_h "\n";
+
+ #
+ # Node.js
+ #
+ printf $node_h "rare_numbers [%2d] = ", $bs;
+ print $node_h join " +\n " =>
+ map {sprintf "%26s", qq {"$_\\n"}} @{$buckets [$bs]};
+ print $node_h "\n";
+
+ #
+ # Perl
+ #
+ printf $perl_h '$rare_numbers [%2d] = ', $bs;
+ print $perl_h join " .\n " =>
+ map {sprintf "%26s", qq {"$_\\n"}} @{$buckets [$bs]};
+ say $perl_h ";";
+
+ #
+ # Python
+ #
+ printf $python_h "rare_numbers [%4s] =", "'$bs'";
+ print $python_h join " +\\\n " =>
+ map {sprintf "%26s", qq {"$_\\n"}} @{$buckets [$bs]};
+ print $python_h "\n";
+
+ #
+ # Ruby
+ #
+ printf $ruby_h "rare_numbers [%2s] =", $bs;
+ print $ruby_h join " +\n " =>
+ map {sprintf "%26s", qq {"$_\\n"}} @{$buckets [$bs]};
+ print $ruby_h "\n";
+}
+say $awk_h "}";
+say $c_h "}";
+
+
+close $awk_h or die "close rn.awk: $!";
+close $bash_h or die "close rn.sh: $!";
+close $c_h or die "close rn.n: $!";
+close $lua_h or die "close rn.lua: $!";
+close $node_h or die "close rn.js: $!";
+close $perl_h or die "close rn.pl: $!";
+close $python_h or die "close rn.py: $!";
+close $ruby_h or die "close rn.rb: $!";