nilang 0.4.1

A scripting language interpreter for Advent of Code
Documentation
// Bubble sort a reverse-sorted array of N integers (worst case).
// Pure dispatch-loop workload — minimal language feature variety.

fn make_reverse(n) {
  result = [];
  i = n;
  while i > 0 {
    result << i;
    i = i - 1;
  }
  return result;
}

fn bubble_sort(xs) {
  n = #xs;
  i = 0;
  while i < n {
    j = 0;
    limit = n - 1 - i;
    while j < limit {
      if xs[j] > xs[j + 1] {
        t = xs[j];
        xs[j] = xs[j + 1];
        xs[j + 1] = t;
      }
      j = j + 1;
    }
    i = i + 1;
  }
  return xs;
}

n = 5000;
arr = make_reverse(n);
bubble_sort(arr);

print("first 5: {str(arr[0])} {str(arr[1])} {str(arr[2])} {str(arr[3])} {str(arr[4])}");
print("last 5: {str(arr[n - 5])} {str(arr[n - 4])} {str(arr[n - 3])} {str(arr[n - 2])} {str(arr[n - 1])}");