packages feed

set-cover-0.0.5.1: example/Nonogram/Example.hs

module Nonogram.Example where

import qualified Data.List.HT as ListHT
import qualified Data.List as List
import Data.Char (isSpace)


encodeLines :: [String] -> [[Int]]
encodeLines =
   map (filter (>0) . map length . ListHT.chop isSpace)

encodeStrings :: [String] -> ([[Int]], [[Int]])
encodeStrings xs =
   (encodeLines xs, encodeLines $ List.transpose xs)


crossRows, crossColumns :: [[Int]]
crossRows =
   [1,1] :
   [1] :
   [1,1] :
   []

crossColumns =
   [1,1] :
   [1] :
   [1,1] :
   []

crossEnc :: ([[Int]], [[Int]])
crossEnc = (crossRows, crossColumns)


rhombus, circle, four, letterP, lambda, bigCircle :: [String]
rhombus =
   "  X  " :
   " X X " :
   "X   X" :
   " X X " :
   "  X  " :
   []

circle =
   " XXX " :
   "XX XX" :
   "X   X" :
   "XX XX" :
   " XXX " :
   []

four =
   "XX  XX" :
   "XX  XX" :
   "      " :
   "      " :
   "XX  XX" :
   "XX  XX" :
   []

letterP =
   "XXXX  " :
   "XXXXXX" :
   "XX  XX" :
   "XX  XX" :
   "XXXXXX" :
   "XXXX  " :
   "XX    " :
   "XX    " :
   "XX    " :
   []

bigCircle =
   "   XXXXX   " :
   " XXX   XXX " :
   " X       X " :
   "XX       XX" :
   "X         X" :
   "X         X" :
   "X         X" :
   "XX       XX" :
   " X       X " :
   " XXX   XXX " :
   "   XXXXX   " :
   []

lambda =
   "  XXX       " :
   " X  XX      " :
   "    XX      " :
   "     XX     " :
   "    XXX     " :
   "   XX XX    " :
   "  XX  XX    " :
   "  XX   XX   " :
   " XX    XX   " :
   "XX      XX X" :
   "XX       XX " :
   []

soccerRows, soccerColumns :: [[Int]]
soccerRows =
   [3] :
   [5] :
   [3, 1] :
   [2, 1] :
   [3, 3, 4] :
   [2, 2, 7] :
   [6, 1, 1] :
   [4, 2, 2] :
   [1, 1] :
   [3, 1] :
   [6] :
   [2, 7] :
   [6, 3, 1] :
   [1, 2, 2, 1, 1] :
   [4, 1, 1, 3] :
   [4, 2, 2] :
   [3, 3, 1] :
   [3, 3] :
   [3] :
   [2, 1] :
   []

soccerColumns =
   [2] :
   [1, 2] :
   [2, 3] :
   [2, 3] :
   [3, 1, 1] :
   [2, 1, 1] :
   [1, 1, 1, 2, 2] :
   [1, 1, 3, 1, 3] :
   [2, 6, 4] :
   [3, 3, 9, 1] :
   [5, 3, 2] :
   [3, 1, 2, 2] :
   [2, 1, 7] :
   [3, 3, 2] :
   [2, 4] :
   [2, 1, 2] :
   [2, 2, 1] :
   [2, 2] :
   [1] :
   [1] :
   []

soccerEnc :: ([[Int]], [[Int]])
soccerEnc = (soccerRows, soccerColumns)