zig

fork of https://codeberg.org/ziglang/zig
Log | Files | Refs | README | LICENSE

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