From 213e7960685fcb2a51033c8365eabe98ff7c789e Mon Sep 17 00:00:00 2001 From: Fredrik Robertsen Date: Sat, 31 Jan 2026 11:18:15 +0100 Subject: [PATCH] use bit_array instead of []bool --- src/main.odin | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/main.odin b/src/main.odin index 859cc06..41bd9f3 100644 --- a/src/main.odin +++ b/src/main.odin @@ -1,5 +1,6 @@ package main +import "core:container/bit_array" import "core:fmt" import "core:math" import "core:os" @@ -28,7 +29,7 @@ read_data :: proc(file: string) -> (res: [NUMBER_OF_ITEMS]Item, ok := true) { return } -Chromosome :: [NUMBER_OF_ITEMS]bool +Chromosome :: bit_array.Bit_Array distance :: proc(x, y: int) -> int { return math.abs(x - y) @@ -39,10 +40,10 @@ penalize :: proc(d: int) -> int { } // side-effect: reads global `items` -fitness :: proc(chrom: Chromosome) -> int { +fitness :: proc(chrom: ^Chromosome) -> int { tot_profit, tot_weight := 0, 0 - for bit, idx in chrom { - if !bit {continue} + for idx in 0 ..< bit_array.len(chrom) { + if !bit_array.get(chrom, idx) {continue} // nb: eliminating branch may be faster tot_profit += items[idx].profit tot_weight += items[idx].weight }