func ok v t[] .
   for h in t[]
      if v = h
         return 0
      .
   .
   return 1
.
proc four lo hi uni show . .
   # 
   subr bf
      for f = lo to hi
         if uni = 0 or ok f [ a c d g e ] = 1
            b = e + f - c
            if b >= lo and b <= hi and (uni = 0 or ok b [ a c d g e f ] = 1)
               solutions += 1
               if show = 1
                  for h in [ a b c d e f g ]
                     write h & " "
                  .
                  print ""
               .
            .
         .
      .
   .
   subr ge
      for e = lo to hi
         if uni = 0 or ok e [ a c d ] = 1
            g = d + e
            if g >= lo and g <= hi and (uni = 0 or ok g [ a c d e ] = 1)
               bf
            .
         .
      .
   .
   subr acd
      for c = lo to hi
         for d = lo to hi
            if uni = 0 or c <> d
               a = c + d
               if a >= lo and a <= hi and (uni = 0 or c <> 0 and d <> 0)
                  ge
               .
            .
         .
      .
   .
   print "low:" & lo & " hi:" & hi & " unique:" & uni
   acd
   print solutions & " solutions"
   print ""
.
four 1 7 1 1
four 3 9 1 1
four 0 9 0 0
