Fuzion Logo
flang.dev — The Fuzion Language Portal
JavaScript seems to be disabled. Functionality is limited.

are_we_fast_yet/permute.fz


# ported from https://github.com/smarr/are-we-fast-yet/blob/master/benchmarks/Java/src/Permute.java
permute =>
  count := mut 0
  marr := (marrays i32).new 6 0

  swap(i i32, j i32)
    # pre i != j
    is
    tmp := marr[i]
    marr[i] := marr[j]
    marr[j] := tmp

  permute(n i32) is
    count <- count.get + 1
    if !n.isZero
      n1 := n - 1
      permute n1
      for i in (-n1..0) do
        swap n1 -i
        permute n1
        swap n1 -i

  permute 6

  say count.get