test_container-level_comptime_expressions.zig (982B) - Raw
1 const first_25_primes = firstNPrimes(25); 2 const sum_of_first_25_primes = sum(&first_25_primes); 3 4 fn firstNPrimes(comptime n: usize) [n]i32 { 5 var prime_list: [n]i32 = undefined; 6 var next_index: usize = 0; 7 var test_number: i32 = 2; 8 while (next_index < prime_list.len) : (test_number += 1) { 9 var test_prime_index: usize = 0; 10 var is_prime = true; 11 while (test_prime_index < next_index) : (test_prime_index += 1) { 12 if (test_number % prime_list[test_prime_index] == 0) { 13 is_prime = false; 14 break; 15 } 16 } 17 if (is_prime) { 18 prime_list[next_index] = test_number; 19 next_index += 1; 20 } 21 } 22 return prime_list; 23 } 24 25 fn sum(numbers: []const i32) i32 { 26 var result: i32 = 0; 27 for (numbers) |x| { 28 result += x; 29 } 30 return result; 31 } 32 33 test "variable values" { 34 try @import("std").testing.expect(sum_of_first_25_primes == 1060); 35 } 36 37 // test