[ [ ( KeywordTok , "object" ) , ( NormalTok , " AbcBlocks " ) , ( KeywordTok , "extends" ) , ( NormalTok , " App {" ) ] , [] , [ ( NormalTok , " " ) , ( KeywordTok , "protected" ) , ( NormalTok , " " ) , ( KeywordTok , "class" ) , ( NormalTok , " " ) , ( FunctionTok , "Block" ) , ( NormalTok , "(face1: Char, face2: Char) {" ) ] , [] , [ ( NormalTok , " " ) , ( KeywordTok , "def" ) , ( NormalTok , " " ) , ( FunctionTok , "isFacedWith" ) , ( NormalTok , "(that: Char) = { that == face1 || that == face2 }" ) ] , [ ( NormalTok , " " ) , ( KeywordTok , "override" ) , ( NormalTok , " " ) , ( KeywordTok , "def" ) , ( NormalTok , " " ) , ( FunctionTok , "toString" ) , ( NormalTok , "() = face1." ) , ( FunctionTok , "toString" ) , ( NormalTok , " + face2" ) ] , [ ( NormalTok , " }" ) ] , [ ( NormalTok , " " ) , ( KeywordTok , "protected" ) , ( NormalTok , " " ) , ( KeywordTok , "object" ) , ( NormalTok , " Block {" ) ] , [ ( NormalTok , " " ) , ( KeywordTok , "def" ) , ( NormalTok , " " ) , ( FunctionTok , "apply" ) , ( NormalTok , "(faces: String) = " ) , ( KeywordTok , "new" ) , ( NormalTok , " " ) , ( FunctionTok , "Block" ) , ( NormalTok , "(faces." ) , ( FunctionTok , "head" ) , ( NormalTok , ", faces." ) , ( FunctionTok , "last" ) , ( NormalTok , ")" ) ] , [ ( NormalTok , " }" ) ] , [] , [ ( NormalTok , " " ) , ( KeywordTok , "type" ) , ( NormalTok , " word = Seq[Block]" ) ] , [] , [ ( NormalTok , " " ) , ( KeywordTok , "private" ) , ( NormalTok , " " ) , ( KeywordTok , "val" ) , ( NormalTok , " blocks = List(" ) , ( FunctionTok , "Block" ) , ( NormalTok , "(" ) , ( StringTok , "\"BO\"" ) , ( NormalTok , "), " ) , ( FunctionTok , "Block" ) , ( NormalTok , "(" ) , ( StringTok , "\"XK\"" ) , ( NormalTok , "), " ) , ( FunctionTok , "Block" ) , ( NormalTok , "(" ) , ( StringTok , "\"DQ\"" ) , ( NormalTok , "), " ) , ( FunctionTok , "Block" ) , ( NormalTok , "(" ) , ( StringTok , "\"CP\"" ) , ( NormalTok , "), " ) , ( FunctionTok , "Block" ) , ( NormalTok , "(" ) , ( StringTok , "\"NA\"" ) , ( NormalTok , ")," ) ] , [ ( NormalTok , " " ) , ( FunctionTok , "Block" ) , ( NormalTok , "(" ) , ( StringTok , "\"GT\"" ) , ( NormalTok , "), " ) , ( FunctionTok , "Block" ) , ( NormalTok , "(" ) , ( StringTok , "\"RE\"" ) , ( NormalTok , "), " ) , ( FunctionTok , "Block" ) , ( NormalTok , "(" ) , ( StringTok , "\"TG\"" ) , ( NormalTok , "), " ) , ( FunctionTok , "Block" ) , ( NormalTok , "(" ) , ( StringTok , "\"QD\"" ) , ( NormalTok , "), " ) , ( FunctionTok , "Block" ) , ( NormalTok , "(" ) , ( StringTok , "\"FS\"" ) , ( NormalTok , ")," ) ] , [ ( NormalTok , " " ) , ( FunctionTok , "Block" ) , ( NormalTok , "(" ) , ( StringTok , "\"JW\"" ) , ( NormalTok , "), " ) , ( FunctionTok , "Block" ) , ( NormalTok , "(" ) , ( StringTok , "\"HU\"" ) , ( NormalTok , "), " ) , ( FunctionTok , "Block" ) , ( NormalTok , "(" ) , ( StringTok , "\"VI\"" ) , ( NormalTok , "), " ) , ( FunctionTok , "Block" ) , ( NormalTok , "(" ) , ( StringTok , "\"AN\"" ) , ( NormalTok , "), " ) , ( FunctionTok , "Block" ) , ( NormalTok , "(" ) , ( StringTok , "\"OB\"" ) , ( NormalTok , ")," ) ] , [ ( NormalTok , " " ) , ( FunctionTok , "Block" ) , ( NormalTok , "(" ) , ( StringTok , "\"ER\"" ) , ( NormalTok , "), " ) , ( FunctionTok , "Block" ) , ( NormalTok , "(" ) , ( StringTok , "\"FS\"" ) , ( NormalTok , "), " ) , ( FunctionTok , "Block" ) , ( NormalTok , "(" ) , ( StringTok , "\"LY\"" ) , ( NormalTok , "), " ) , ( FunctionTok , "Block" ) , ( NormalTok , "(" ) , ( StringTok , "\"PC\"" ) , ( NormalTok , "), " ) , ( FunctionTok , "Block" ) , ( NormalTok , "(" ) , ( StringTok , "\"ZM\"" ) , ( NormalTok , "))" ) ] , [] , [ ( NormalTok , " " ) , ( KeywordTok , "private" ) , ( NormalTok , " " ) , ( KeywordTok , "def" ) , ( NormalTok , " " ) , ( FunctionTok , "isMakeable" ) , ( NormalTok , "(word: String, blocks: word) = {" ) ] , [] , [ ( NormalTok , " " ) , ( KeywordTok , "def" ) , ( NormalTok , " " ) , ( FunctionTok , "getTheBlocks" ) , ( NormalTok , "(word: String, blocks: word) = {" ) ] , [] , [ ( NormalTok , " " ) , ( KeywordTok , "def" ) , ( NormalTok , " " ) , ( FunctionTok , "inner" ) , ( NormalTok , "(word: String, toCompare: word, rest: word, accu: word): word = {" ) ] , [ ( NormalTok , " " ) , ( KeywordTok , "if" ) , ( NormalTok , " (word." ) , ( FunctionTok , "isEmpty" ) , ( NormalTok , " || rest." ) , ( FunctionTok , "isEmpty" ) , ( NormalTok , " || toCompare." ) , ( FunctionTok , "isEmpty" ) , ( NormalTok , ") accu" ) ] , [ ( NormalTok , " " ) , ( KeywordTok , "else" ) , ( NormalTok , " " ) , ( KeywordTok , "if" ) , ( NormalTok , " (toCompare." ) , ( FunctionTok , "head" ) , ( NormalTok , "." ) , ( FunctionTok , "isFacedWith" ) , ( NormalTok , "(word." ) , ( FunctionTok , "head" ) , ( NormalTok , ")) {" ) ] , [ ( NormalTok , " " ) , ( KeywordTok , "val" ) , ( NormalTok , " restant = rest diff List(toCompare." ) , ( FunctionTok , "head" ) , ( NormalTok , ")" ) ] , [ ( NormalTok , " " ) , ( FunctionTok , "inner" ) , ( NormalTok , "(word." ) , ( FunctionTok , "tail" ) , ( NormalTok , ", restant, restant, accu :+ toCompare." ) , ( FunctionTok , "head" ) , ( NormalTok , ")" ) ] , [ ( NormalTok , " } " ) , ( KeywordTok , "else" ) , ( NormalTok , " " ) , ( FunctionTok , "inner" ) , ( NormalTok , "(word, toCompare." ) , ( FunctionTok , "tail" ) , ( NormalTok , ", rest, accu)" ) ] , [ ( NormalTok , " }" ) ] , [ ( NormalTok , " " ) , ( FunctionTok , "inner" ) , ( NormalTok , "(word, blocks, blocks, Nil)" ) ] , [ ( NormalTok , " }" ) ] , [] , [ ( NormalTok , " word." ) , ( FunctionTok , "lengthCompare" ) , ( NormalTok , "(" ) , ( FunctionTok , "getTheBlocks" ) , ( NormalTok , "(word, blocks)." ) , ( FunctionTok , "size" ) , ( NormalTok , ") == " ) , ( DecValTok , "0" ) ] , [ ( NormalTok , " }" ) ] , [] , [ ( NormalTok , " " ) , ( KeywordTok , "val" ) , ( NormalTok , " words = List(" ) , ( StringTok , "\"A\"" ) , ( NormalTok , ", " ) , ( StringTok , "\"BARK\"" ) , ( NormalTok , ", " ) , ( StringTok , "\"BOOK\"" ) , ( NormalTok , ", " ) , ( StringTok , "\"TREAT\"" ) , ( NormalTok , ", " ) , ( StringTok , "\"COMMON\"" ) , ( NormalTok , ", " ) , ( StringTok , "\"SQUAD\"" ) , ( NormalTok , ", " ) , ( StringTok , "\"CONFUSED\"" ) , ( NormalTok , ", " ) , ( StringTok , "\"ANBOCPDQERSFTGUVWXLZ\"" ) , ( NormalTok , ")" ) ] , [ ( NormalTok , " " ) , ( CommentTok , "// Automatic tests" ) ] , [ ( NormalTok , " " ) , ( FunctionTok , "assert" ) , ( NormalTok , "(" ) , ( FunctionTok , "isMakeable" ) , ( NormalTok , "(" ) , ( FunctionTok , "words" ) , ( NormalTok , "(" ) , ( DecValTok , "0" ) , ( NormalTok , "), blocks))" ) ] , [ ( NormalTok , " " ) , ( FunctionTok , "assert" ) , ( NormalTok , "(" ) , ( FunctionTok , "isMakeable" ) , ( NormalTok , "(" ) , ( FunctionTok , "words" ) , ( NormalTok , "(" ) , ( DecValTok , "1" ) , ( NormalTok , "), blocks))" ) ] , [ ( NormalTok , " " ) , ( FunctionTok , "assert" ) , ( NormalTok , "(!" ) , ( FunctionTok , "isMakeable" ) , ( NormalTok , "(" ) , ( FunctionTok , "words" ) , ( NormalTok , "(" ) , ( DecValTok , "2" ) , ( NormalTok , "), blocks)) " ) , ( CommentTok , "// BOOK not" ) ] , [ ( NormalTok , " " ) , ( FunctionTok , "assert" ) , ( NormalTok , "(" ) , ( FunctionTok , "isMakeable" ) , ( NormalTok , "(" ) , ( FunctionTok , "words" ) , ( NormalTok , "(" ) , ( DecValTok , "3" ) , ( NormalTok , "), blocks))" ) ] , [ ( NormalTok , " " ) , ( FunctionTok , "assert" ) , ( NormalTok , "(!" ) , ( FunctionTok , "isMakeable" ) , ( NormalTok , "(" ) , ( FunctionTok , "words" ) , ( NormalTok , "(" ) , ( DecValTok , "4" ) , ( NormalTok , "), blocks)) " ) , ( CommentTok , "// COMMON not" ) ] , [ ( NormalTok , " " ) , ( FunctionTok , "assert" ) , ( NormalTok , "(" ) , ( FunctionTok , "isMakeable" ) , ( NormalTok , "(" ) , ( FunctionTok , "words" ) , ( NormalTok , "(" ) , ( DecValTok , "5" ) , ( NormalTok , "), blocks))" ) ] , [ ( NormalTok , " " ) , ( FunctionTok , "assert" ) , ( NormalTok , "(" ) , ( FunctionTok , "isMakeable" ) , ( NormalTok , "(" ) , ( FunctionTok , "words" ) , ( NormalTok , "(" ) , ( DecValTok , "6" ) , ( NormalTok , "), blocks))" ) ] , [ ( NormalTok , " " ) , ( FunctionTok , "assert" ) , ( NormalTok , "(" ) , ( FunctionTok , "isMakeable" ) , ( NormalTok , "(" ) , ( FunctionTok , "words" ) , ( NormalTok , "(" ) , ( DecValTok , "7" ) , ( NormalTok , "), blocks))" ) ] , [] , [ ( NormalTok , " " ) , ( CommentTok , "//words(7).mkString.permutations.foreach(s => assert(isMakeable(s, blocks)))" ) ] , [] , [ ( NormalTok , " words." ) , ( FunctionTok , "foreach" ) , ( NormalTok , "(w => " ) , ( FunctionTok , "println" ) , ( NormalTok , "(s" ) , ( StringTok , "\"$w can${if (isMakeable(w, blocks)) \"" ) , ( NormalTok , " " ) , ( StringTok , "\" else \"" ) , ( NormalTok , "not " ) , ( StringTok , "\"}be made.\"" ) , ( NormalTok , "))" ) ] , [ ( NormalTok , "}" ) ] ]