Factor solution to project Euler problem 173

db4
Samuel Tardieu 2007-12-31 02:59:53 +01:00
parent 724eff0089
commit cf19d8a37c
2 changed files with 35 additions and 1 deletions
extra/project-euler

View File

@ -0,0 +1,34 @@
! Copyright (c) 2007 Aaron Schaefer.
! See http://factorcode.org/license.txt for BSD license.
USING: kernel math math.functions math.ranges sequences ;
IN: project-euler.173
! http://projecteuler.net/index.php?section=problems&id=173
! DESCRIPTION
! -----------
! We shall define a square lamina to be a square outline with a square
! "hole" so that the shape possesses vertical and horizontal
! symmetry. For example, using exactly thirty-two square tiles we can
! form two different square laminae: [see URL for figure]
! With one-hundred tiles, and not necessarily using all of the tiles at
! one time, it is possible to form forty-one different square laminae.
! Using up to one million tiles how many different square laminae can be
! formed?
! SOLUTION
! --------
: laminaes ( upper -- n )
4 / dup sqrt [1,b] 0 rot [ over /mod drop - - ] curry reduce ;
: euler173 ( -- answer )
1000000 laminaes ;
! [ euler173 ] 100 ave-time
! 0 ms run / 0 ms GC ave time - 100 trials
MAIN: euler173

View File

@ -10,7 +10,7 @@ USING: definitions io io.files kernel math math.parser sequences strings
project-euler.067
project-euler.134
project-euler.169
project-euler.175 ;
project-euler.173 project-euler.175 ;
IN: project-euler
<PRIVATE