[lnkForumImage]
TotalShareware - Download Free Software

Confronta i prezzi di migliaia di prodotti.
Asp Forum
 Home | Login | Register | Search 


 

Forums >

comp.lang.lisp

Project Euler 11.

William James

3/15/2016 6:29:00 AM

OCaml:

Since OCaml is fairly good at string-handling, we'll create
the grid of numbers by parsing the string representing the
grid.

#load "Str.cma";;

let grid =
Array.of_list
(List.map
(fun line ->
Array.of_list
(List.map int_of_string
(Str.split (Str.regexp " +") line)))
(Str.split (Str.regexp "\n")
"08 02 22 97 38 15 00 40 00 75 04 05 07 78 52 12 50 77 91 08
49 49 99 40 17 81 18 57 60 87 17 40 98 43 69 48 04 56 62 00
81 49 31 73 55 79 14 29 93 71 40 67 53 88 30 03 49 13 36 65
52 70 95 23 04 60 11 42 69 24 68 56 01 32 56 71 37 02 36 91
22 31 16 71 51 67 63 89 41 92 36 54 22 40 40 28 66 33 13 80
24 47 32 60 99 03 45 02 44 75 33 53 78 36 84 20 35 17 12 50
32 98 81 28 64 23 67 10 26 38 40 67 59 54 70 66 18 38 64 70
67 26 20 68 02 62 12 20 95 63 94 39 63 08 40 91 66 49 94 21
24 55 58 05 66 73 99 26 97 17 78 78 96 83 14 88 34 89 63 72
21 36 23 09 75 00 76 44 20 45 35 14 00 61 33 97 34 31 33 95
78 17 53 28 22 75 31 67 15 94 03 80 04 62 16 14 09 53 56 92
16 39 05 42 96 35 31 47 55 58 88 24 00 17 54 24 36 29 85 57
86 56 00 48 35 71 89 07 05 44 44 37 44 60 21 58 51 54 17 58
19 80 81 68 05 94 47 69 28 73 92 13 86 52 17 77 04 89 55 40
04 52 08 83 97 35 99 16 07 97 57 32 16 26 26 79 33 27 98 66
88 36 68 87 57 62 20 72 03 46 33 67 46 55 12 32 63 93 53 69
04 42 16 73 38 25 39 11 24 94 72 18 08 46 29 32 40 62 76 36
20 69 36 41 72 30 23 88 34 62 99 69 82 67 59 85 74 04 36 16
20 73 35 29 78 31 90 01 74 31 49 71 48 86 81 16 23 57 05 54
01 70 54 71 83 51 54 69 16 92 33 48 61 43 52 01 89 19 67 48")) ;;

let four x dx y dy =
List.combine
(List.map ((+) x) (List.map (( * ) dx) [0;1;2;3]))
(List.map ((+) y) (List.map (( * ) dy) [0;1;2;3])) ;;

let hor x y = four x 1 y 0;;
let ver x y = four x 0 y 1;;
let diag1 x y = four x 1 y 1;;
let diag2 x y = four x (-1) y 1;;

let product coords =
try
(List.fold_left
(fun acc (x,y) -> acc * grid.(y).(x))
1
coords)
with _ -> 0 ;;

let one_spot x y =
List.fold_left
max
0
(List.map
(fun f -> product (f x y))
[hor; ver; diag1; diag2]) ;;

let biggest = ref 0 ;;
for x = 0 to (Array.length grid) - 1 do
for y = 0 to (Array.length grid) - 1 do
biggest := max !biggest (one_spot x y)
done
done ;
!biggest ;;

===>
70600674


--
The NCA launched a major investigation into the scandal after a damning report
by Professor Alex Jay last year revealed that as many as 1,400 children had
been raped, trafficked and groomed by mainly Asian gangs in the South Yorkshire
town between 1997 and 2013. http://www.redicecreations.com/article.ph...

---
This email is free from viruses and malware because avast! Antivirus protection is active.
http://www...