ocaml: phase 5.1 harshad.ml baseline (count Niven/Harshad numbers <= 100 = 33)
Some checks failed
Test, Build, and Deploy / test-build-deploy (push) Failing after 23s
Some checks failed
Test, Build, and Deploy / test-build-deploy (push) Failing after 23s
A Harshad (or Niven) number is divisible by its digit sum:
let count_harshad limit =
let c = ref 0 in
for n = 1 to limit do
if n mod (digit_sum n) = 0 then c := !c + 1
done;
!c
count_harshad 100 = 33
All single-digit numbers (1..9) qualify trivially. Plus 10, 12, 18,
20, 21, 24, 27, 30, 36, 40, 42, 45, 48, 50, 54, 60, 63, 70, 72, 80,
81, 84, 90, 100 (24 more) = 33 total under 100.
133 baseline programs total.
This commit is contained in:
@@ -59,6 +59,7 @@
|
||||
"grid_paths.ml": 210,
|
||||
"group_consec.ml": 53,
|
||||
"hailstone.ml": 111,
|
||||
"harshad.ml": 33,
|
||||
"hamming.ml": 4,
|
||||
"hanoi.ml": 1023,
|
||||
"hist.ml": 75,
|
||||
|
||||
19
lib/ocaml/baseline/harshad.ml
Normal file
19
lib/ocaml/baseline/harshad.ml
Normal file
@@ -0,0 +1,19 @@
|
||||
let digit_sum n =
|
||||
let m = ref n in
|
||||
let s = ref 0 in
|
||||
while !m > 0 do
|
||||
s := !s + !m mod 10;
|
||||
m := !m / 10
|
||||
done;
|
||||
!s
|
||||
|
||||
let count_harshad limit =
|
||||
let c = ref 0 in
|
||||
for n = 1 to limit do
|
||||
if n mod (digit_sum n) = 0 then c := !c + 1
|
||||
done;
|
||||
!c
|
||||
|
||||
;;
|
||||
|
||||
count_harshad 100
|
||||
@@ -407,6 +407,12 @@ _Newest first._
|
||||
binary search tree (`type 'a tree = Leaf | Node of 'a * 'a tree *
|
||||
'a tree`) with insert + in-order traversal. Tests parametric ADT,
|
||||
recursive match, List.append, List.fold_left.
|
||||
- 2026-05-10 Phase 5.1 — harshad.ml baseline (count Niven/Harshad
|
||||
numbers ≤ 100 = 33). A Harshad number is divisible by its digit
|
||||
sum. All single-digit numbers qualify trivially (9). Plus 10, 12,
|
||||
18, 20, 21, 24, 27, 30, 36, 40, 42, 45, 48, 50, 54, 60, 63, 70,
|
||||
72, 80, 81, 84, 90, 100 (24 more) = 33 under 100. 133 baseline
|
||||
programs total.
|
||||
- 2026-05-10 Phase 5.1 — reverse_int.ml baseline (digit-reverse,
|
||||
reverse(12345) + reverse(100) + reverse(7) = 54321 + 1 + 7 =
|
||||
54329). Walks digits via mod 10 / div 10, accumulating the
|
||||
|
||||
Reference in New Issue
Block a user