module Thread (threadTesting1) where import Control.Concurrent import Control.Concurrent.MVar import Stream import Converter threadTesting1 :: Gray -> Gray -> IO Int threadTesting1 xs ys = do m <- newEmptyMVar c1 <- forkIO (t1 m xs ys) c2 <- forkIO (t2 m xs ys) c3 <- forkIO (t3 m xs ys) c4 <- forkIO (t4 m xs ys) c5 <- forkIO (t5 m xs ys) c6 <- forkIO (t6 m xs ys) c7 <- forkIO (t7 m xs ys) c8 <- forkIO (t8 m xs ys) c9 <- forkIO (t9 m xs ys) c <- takeMVar m killThread c1 killThread c2 killThread c3 killThread c4 killThread c5 killThread c6 killThread c7 killThread c8 killThread c9 return c t1 :: MVar Int -> Stream -> Stream -> IO() t1 m (0:0:x) (0:0:y) = putMVar m 101 t1 m (0:0:x) (0:1:y) = putMVar m 102 t1 m (0:0:x) (1:0:y) = putMVar m 103 t1 m (0:0:x) (1:1:y) = putMVar m 104 t1 m (0:1:x) (0:0:y) = putMVar m 201 t1 m (0:1:x) (0:1:y) = putMVar m 202 t1 m (0:1:x) (1:0:y) = putMVar m 203 t1 m (0:1:x) (1:1:y) = putMVar m 204 t1 m (1:0:x) (0:0:y) = putMVar m 103 t1 m (1:0:x) (0:1:y) = putMVar m 104 t1 m (1:0:x) (1:0:y) = putMVar m 101 t1 m (1:0:x) (1:1:y) = putMVar m 102 t1 m (1:1:x) (0:0:y) = putMVar m 203 t1 m (1:1:x) (0:1:y) = putMVar m 204 t1 m (1:1:x) (1:0:y) = putMVar m 201 t1 m (1:1:x) (1:1:y) = putMVar m 202 t2 :: MVar Int -> Stream -> Stream -> IO() t2 m (0:0:x) (b:1:0:y) = putMVar m 30 t2 m (1:0:x) (b:1:0:y) = putMVar m 31 t2 m (0:1:x) (b:1:0:y) = putMVar m 60 t2 m (1:1:x) (b:1:0:y) = putMVar m 61 t2 m x y = yield t3 m (0:0:x) (0:b:1:y) = putMVar m 40 t3 m (1:0:x) (1:b:1:y) = putMVar m 40 t3 m (0:0:x) (1:b:1:y) = putMVar m 41 t3 m (1:0:x) (0:b:1:y) = putMVar m 41 t3 m (0:1:x) (0:b:1:y) = putMVar m 50 t3 m (1:1:x) (1:b:1:y) = putMVar m 50 t3 m (0:1:x) (1:b:1:y) = putMVar m 51 t3 m (1:1:x) (0:b:1:y) = putMVar m 51 t3 m x y = yield t4 m (0:a:1:y) (0:0:x) = putMVar m 70 t4 m (1:a:1:y) (1:0:x) = putMVar m 70 t4 m (1:a:1:y) (0:0:x) = putMVar m 70 t4 m (0:a:1:y) (1:0:x) = putMVar m 70 t4 m (0:a:1:y) (0:1:x) = putMVar m 70 t4 m (1:a:1:y) (1:1:x) = putMVar m 70 t4 m (1:a:1:y) (0:1:x) = putMVar m 70 t4 m (0:a:1:y) (1:1:x) = putMVar m 70 t4 m x y = yield t5 m (a:1:0:y) (0:0:x) = putMVar m 70 t5 m (a:1:0:y) (1:0:x) = putMVar m 70 t5 m (a:1:0:y) (0:1:x) = putMVar m 70 t5 m (a:1:0:y) (1:1:x) = putMVar m 70 t5 m x y = yield t6 m (0:a:1:x) (0:b:1:y) = putMVar m 80 t6 m (1:a:1:x) (1:b:1:y) = putMVar m 80 t6 m (0:a:1:x) (1:b:1:y) = putMVar m 81 t6 m (1:a:1:x) (0:b:1:y) = putMVar m 81 t6 m x y = yield t7 m (0:a:1:x) (b:1:0:y) = putMVar m 90 t7 m (1:a:1:x) (b:1:0:y) = putMVar m 91 t7 m x y = yield t8 m (a:1:0:x) (b:1:0:y) = putMVar m 100 t8 m x y = yield t9 m (a:1:0:x) (0:b:1:y) = putMVar m 70 t9 m (a:1:0:x) (1:b:1:y) = putMVar m 70 t9 m x y = yield