fp.canMakeWord = ($word, $blocks) -> { if(!$word) { return 1 } $word = fn.toLower($word) $c $= $word[0] $i = 0 while($i < @$blocks) { $block $= fn.toLower($blocks[$i]) if($block[0] != $c && $block[1] != $c) { $i += 1 con.continue } $blocksCopy $= ^$blocks fn.listRemoveAt($blocksCopy, $i) if(fp.canMakeWord(fn.substring($word, 1), $blocksCopy)) { return 1 } $i += 1 } return 0 } $blocks = fn.listOf(BO, XK, DQ, CP, NA, GT, RE, TG, QD, FS, JW, HU, VI, AN, OB, ER, FS, LY, PC, ZM) $word foreach($[word], [\e, A, BARK, BOOK, TREAT, COMMON, SQUAD, CONFUSE, Treat, cOmMoN]) { fn.printf(%s: %s%n, $word, fp.canMakeWord($word, $blocks)) }