#!/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: $!";