\util.g proc nonrec ucase(char c) char: byte b; b := pretend(c, byte); b := b & ~32; pretend(b, char) corp proc nonrec can_make_word(*char w) bool: [41] char blocks; word i; char ch; bool found, ok; CharsCopy(&blocks[0], "BOXKDQCPNAGTRETGQDFSJWHUVIANOBERFSLYPCZM"); ok := true; while ch := ucase(w*); w := w + 1; ok and ch ~= '\e' do found := false; i := 0; while not found and i < 40 do if blocks[i] = ch then found := true fi; i := i + 1; od; if found then i := i - 1; blocks[i] := '\e'; blocks[i >< 1] := '\e' else ok := false fi od; ok corp proc nonrec test(*char w) void: writeln(w, ": ", if can_make_word(w) then "yes" else "no" fi) corp proc nonrec main() void: test("A"); test("BARK"); test("book"); test("treat"); test("CoMmOn"); test("sQuAd"); test("CONFUSE") corp