3.2
authorMart Lubbers <mart@martlubbers.net>
Mon, 3 Dec 2018 16:04:53 +0000 (17:04 +0100)
committerMart Lubbers <mart@martlubbers.net>
Mon, 3 Dec 2018 16:04:53 +0000 (17:04 +0100)
3/s1.icl
3/s2.icl [new file with mode: 0644]

index 122f505..6503ae2 100644 (file)
--- a/3/s1.icl
+++ b/3/s1.icl
@@ -1,4 +1,4 @@
-module s2
+module s1
 
 import StdEnv
 import Data.Func
diff --git a/3/s2.icl b/3/s2.icl
new file mode 100644 (file)
index 0000000..a89c1aa
--- /dev/null
+++ b/3/s2.icl
@@ -0,0 +1,39 @@
+module s2
+
+import StdEnv
+import Data.Func
+import qualified Data.Set as DS
+import Data.List
+import Text
+
+getinput :: [Char] *File -> [[Char]]
+getinput a f
+# (ok, c, f) = freadc f
+| not ok = if (a =: []) [] [reverse a]
+| c == '\n' = [reverse a:getinput [] f]
+= getinput [c:a] f
+
+parse :: [Char] -> (Int, [(Int, Int)])
+parse c = case split " " (toString c) of
+       [i,_, offset,size]
+               # [offsetx:offsety:_] = split "," offset
+               # offsety = offsety % (0, textSize offsety-2)
+               # [sizex:sizey:_] = split "x" size
+               = (toInt i, [ (x, y)
+                       \\x<-[toInt offsetx+1..toInt offsetx+toInt sizex]
+                       , y<-[toInt offsety+1..toInt offsety+toInt sizey]
+                       ])
+       _ = abort "bork"
+
+Start w
+# (io, w) = stdio w
+= proc $ map parse $ getinput [] io
+
+proc [x:xs] = p x xs
+where
+       p (i, cs) rest=:[x:xs]
+               | 'DS'.null $ 'DS'.intersection ('DS'.fromList cs) $ 'DS'.fromList $ flatten $ map snd rest = i
+               | not (trace_t ".") = undef
+               = p x $ xs ++ [(i,cs)]
+
+import StdDebug