ocaml: phase 5.1 max_product3.ml baseline (max product of 3, with negatives -> 300)
Some checks failed
Test, Build, and Deploy / test-build-deploy (push) Failing after 22s

Sort, then compare two candidates:
  p1 = product of three largest values
  p2 = product of two smallest (potentially negative) values and the largest

For [-10;-10;1;3;2]:
  sorted    = [-10;-10;1;2;3]
  p1        = 3 * 2 * 1                = 6
  p2        = (-10) * (-10) * 3        = 300
  max       = 300

Tests List.sort + Array.of_list + arr.(n-i) end-walk + candidate-pick
via if-then-else.

104 baseline programs total.
This commit is contained in:
2026-05-09 20:46:42 +00:00
parent 288c0f8c3e
commit c8206e718a
3 changed files with 18 additions and 0 deletions

View File

@@ -51,6 +51,7 @@
"luhn.ml": 2,
"mat_mul.ml": 621,
"max_path_tree.ml": 11,
"max_product3.ml": 300,
"max_run.ml": 5,
"mod_inverse.ml": 27,
"json_pretty.ml": 24,

View File

@@ -0,0 +1,11 @@
let max_prod3 xs =
let sorted = List.sort compare xs in
let arr = Array.of_list sorted in
let n = Array.length arr in
let p1 = arr.(n - 1) * arr.(n - 2) * arr.(n - 3) in
let p2 = arr.(0) * arr.(1) * arr.(n - 1) in
if p1 > p2 then p1 else p2
;;
max_prod3 [-10; -10; 1; 3; 2]