package main import "core:mem/virtual" import "core:time" import "core:strings" import "core:unicode/utf8" import "core:math/rand" import "core:fmt" import "core:math" import "core:mem" main :: proc() { arena: virtual.Arena arena_err := virtual.arena_init_growing(&arena) assert(arena_err == .None) arena_allocator := virtual.arena_allocator(&arena) context.allocator = arena_allocator NUM_LETTERS :: 26 NUM_COMBOS :: 4 LETTERS :: "ABCDEFGHIJKLMNOPQRSTUVWXYZ" #assert(len(LETTERS) == NUM_LETTERS) total_number_of_combinations := int(math.pow_f32(NUM_LETTERS, NUM_COMBOS)) fmt.println("Max Amount of combinations:", total_number_of_combinations) runes := utf8.string_to_runes(LETTERS) used_combos, err := make(map[string]bool, total_number_of_combinations) if err != .None { return } guessing_start := time.now() guessing_attempts := 0 for len(used_combos) < total_number_of_combinations { free_all(context.temp_allocator) guessing_attempts += 1 builder := strings.builder_make(context.temp_allocator) for _ in 0..