remove math.blas.syntax and merge parsing words into math.blas.vectors/matrices
[factor/jcg.git] / extra / project-euler / 053 / 053.factor
blobd264bca4bff1a8b80a174551976c15aa2de98f52
1 ! Copyright (c) 2008 Aaron Schaefer.
2 ! See http://factorcode.org/license.txt for BSD license.
3 USING: kernel math math.combinatorics math.ranges sequences ;
4 IN: project-euler.053
6 ! http://projecteuler.net/index.php?section=problems&id=53
8 ! DESCRIPTION
9 ! -----------
11 ! There are exactly ten ways of selecting three from five, 12345:
13 !     123, 124, 125, 134, 135, 145, 234, 235, 245, and 345
15 ! In combinatorics, we use the notation, 5C3 = 10.
17 ! In general,
18 !     nCr = n! / r! * (n - r)!
19 ! where r ≤ n, n! = n * (n − 1) * ... * 3 * 2 * 1, and 0! = 1.
21 ! It is not until n = 23, that a value exceeds one-million: 23C10 = 1144066.
23 ! How many values of nCr, for 1 ≤ n ≤ 100, are greater than one-million?
26 ! SOLUTION
27 ! --------
29 : euler053 ( -- answer )
30     23 100 [a,b] [ dup [ nCk 1000000 > ] with count ] sigma ;
32 ! [ euler053 ] 100 ave-time
33 ! 52 ms ave run time - 4.44 SD (100 trials)
35 MAIN: euler053