From ccb8ad98ec7d6d3654a84b7f5ec505c8a65eaee9 Mon Sep 17 00:00:00 2001 From: Aaron Schaefer Date: Fri, 18 Jan 2008 00:43:15 -0500 Subject: [PATCH] Optimize solution to Project Euler problem 28 --- extra/project-euler/028/028.factor | 27 ++++++--------------------- 1 file changed, 6 insertions(+), 21 deletions(-) diff --git a/extra/project-euler/028/028.factor b/extra/project-euler/028/028.factor index 33d87ea451..29a864e2a0 100644 --- a/extra/project-euler/028/028.factor +++ b/extra/project-euler/028/028.factor @@ -25,35 +25,20 @@ IN: project-euler.028 ! SOLUTION ! -------- -! Noticed patterns in the diagnoal numbers starting from the origin going to -! the corners and used these instead of generating the entire spiral: -! ne -> (2n + 1)² from 0 .. n -! se -> (4 * n²) - (10 * n) + 7 from 1 .. n -! sw -> (4 * n²) + 1 from 0 .. n -! nw -> (4 * n²) - (6 * n) + 3 from 1 .. n +! For a square sized n by n, the sum of corners is 4n² - 6n + 6 [ sum-corners ] sigma ; PRIVATE> : euler028 ( -- answer ) - 1001 spiral-diags ; + 1001 sum-diags ; ! [ euler027 ] 100 ave-time ! 0 ms run / 0 ms GC ave time - 100 trials