Commits

Shlomi Fish committed 0ec65e7

Some optimisations.

Comments (0)

Files changed (2)

project-euler/148/Test.bash

 diff -u <(head -$n dump.txt | perl -lanE 'print $., ": ", y/Y/Y/') \
     <(perl calc-num-Y-in-row.pl $(seq 1 "$n"))
 
+let n=7*7*7+1
+while true ; do
+
+    echo "n=$n"
+    diff -u <(perl print-row.pl "$n" | perl -lanE "print $n, ': ', y/Y/Y/") \
+        <(perl calc-num-Y-in-row.pl "$n")
+    let n++
+done

project-euler/148/calc-num-Y-in-row.pl

 
     my $recurse;
 
-    my $n_from_digits;
-
-    $n_from_digits = sub {
-        my $aref = shift;
-
-        if (! @$aref)
-        {
-            return 0;
-        }
-        return $aref->[0] + $BASE * $n_from_digits->([ @$aref[1 .. $#$aref] ]);
-    };
-
     $recurse = sub {
         my ($digits_aref) = @_;
 
         {
             return ($BASE-1-$digits[0]->{d}) * $digits[1]->{d};
         }
-        elsif (@digits == 3)
+        else # elsif (@digits == 3)
         {
             my $big_Y_num = ($digits[-1]->{power}-1-$digits[-2]->{total_mod});
             my $big_Y_total = $big_Y_num * $digits[-1]->{d};
 
             return $big_Y_total + ($digits[-1]->{d}+1) * $recurse->([@digits[0 .. $#digits-1]]);
         }
-        else
-        {
-            die "Cannot handle.";
-        }
     };
 
     my @digits;
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.