X-Git-Url: https://gerrit.simantics.org/r/gitweb?p=simantics%2Fplatform.git;a=blobdiff_plain;f=docs%2FDeveloper%2FSCL%2FSCLExamples.md;fp=docs%2FDeveloper%2FSCL%2FSCLExamples.md;h=5172625d9ff913d35f65b6d0743d028d64a8f4fb;hp=0000000000000000000000000000000000000000;hb=cc48f111d9d7b053693c0c988b9caeef8e445ade;hpb=107a72960d307d614a1e165dbe3dc1316b286c86 diff --git a/docs/Developer/SCL/SCLExamples.md b/docs/Developer/SCL/SCLExamples.md new file mode 100644 index 000000000..5172625d9 --- /dev/null +++ b/docs/Developer/SCL/SCLExamples.md @@ -0,0 +1,27 @@ +## Eight queens puzzle + +Copy the following commands to the SCL console: + +```haskell +> n = 8 +> allPositions = [0..n-1] +> possibleNextPositions l = allPositions \\ (l + lq + uq) + where + m = length l + lq = [l!i - (m-i) | i <- [0..m-1]] + uq = [l!i + (m-i) | i <- [0..m-1]] +> expandSolution l = do + x <- possibleNextPositions l + return (l + [x]) +> solve k cur = if k == n + then return cur + else expandSolution cur >>= solve (k+1) +> solutions = solve 0 [] +> length solutions +> repeatString k (s :: String) = sum [s | x <- [1..k]] +> rowText k = repeatString k "." + "X" + repeatString (n-k-1) "." +> printSolution (l :: [Integer]) = do + printString (repeatString n "-") + mapM (printString . rowText) l +> mapM printSolution solutions +``` \ No newline at end of file