module Main ( main ) where
main = pure ()
{-
Input:
Prelude>pp(ticktack (8,8) [(1,1),(8,8),(2,2),(3,3),(4,2),(3,2)])
( width, height x o x o x o )
Expected output:
----------
| o|
| |
| |
| |
| |
| o |
| xox |
|x |
----------
My output:
My output:
x
xox
o
Position (8,8) doesn't show on play field. Tic tacs are showed upside down.
-}
ticktack _[] = [""]
ticktack (x, y) tulp = if (x <= 0 || y <= 0) then [""]
else split (x, y) (board (mark (x, y) (fill (x, y) tulp)))
where
split (lenx, leny) str = [ [ str!! (j * lenx + i) | i <- [0..(lenx - 1)] ] | j <- [0..(leny - 1)] ]
board [] = ""
board (x:xs) | x == 0 = " " ++ board xs
| x == 1 = "x" ++ board xs
mark (posx, posy) a = [ if ((order a x) < 0) then 0
else (if (mod (order a x
) 2 == 0) then 1 else 2)
| x <- [0..(posx * posy - 1)] ]
where
order [] _ = - 10 -- -10 is a walkout, remains undefined positions for tic/tac blank, is limited to 10-1 pairs inside of tulpa
order (x:xs) a = if (x == a) then 0
else 1 + order xs a
fill _ [] = []
fill
(posx
, posy
) (x:xs
) = ((posx
* snd x
) + fst x
) : fill
(posx
, posy
) xs
bW9kdWxlIE1haW4gKCBtYWluICkgd2hlcmUKbWFpbiA6OiBJTyAoKQptYWluID0gcHVyZSAoKQoKey0KSW5wdXQ6IApQcmVsdWRlPnBwKHRpY2t0YWNrICg4LDgpIFsoMSwxKSwoOCw4KSwoMiwyKSwoMywzKSwoNCwyKSwoMywyKV0pCiggICAgICAgICAgd2lkdGgsIGhlaWdodCAgICB4ICAgICBvICAgIHggICAgICBvICAgICAgeCAgICAgbyAgICAgKQoKRXhwZWN0ZWQgb3V0cHV0OiAKLS0tLS0tLS0tLQp8ICAgICAgIG98CnwgICAgICAgIHwKfCAgICAgICAgfAp8ICAgICAgICB8CnwgICAgICAgIHwKfCAgbyAgICAgfAp8IHhveCAgICB8Cnx4ICAgICAgIHwKLS0tLS0tLS0tLQoKCk15IG91dHB1dDogCk15IG91dHB1dDoKICAgICAgICAKIHggICAgICAKICB4b3ggICAKICAgbyAgICAKICAgICAgICAKICAgICAgICAKICAgICAgICAKICAgICAgIAoKClBvc2l0aW9uICg4LDgpIGRvZXNuJ3Qgc2hvdyBvbiBwbGF5IGZpZWxkLiBUaWMgdGFjcyBhcmUgc2hvd2VkIHVwc2lkZSBkb3duLgotfQoKCnR5cGUgUGljID0gW1N0cmluZ10KCnBwIDo6IFBpYyAtPiBJTyAoKQpwcCB4ID0gcHV0U3RyIChjb25jYXQgKG1hcCAoKysiXG4iKSB4KSkKCnRpY2t0YWNrIDo6IChJbnQsIEludCkgLT4gWyhJbnQsIEludCldIC0+IFBpYwp0aWNrdGFjayBfW10gPSBbIiJdCnRpY2t0YWNrICh4LCB5KSB0dWxwID0gaWYgKHggPD0gMCB8fCB5IDw9IDApIHRoZW4gWyIiXQogICAgICAgICAgICAgICAgICAgICAgIGVsc2Ugc3BsaXQgKHgsIHkpIChib2FyZCAobWFyayAoeCwgeSkgKGZpbGwgKHgsIHkpIHR1bHApKSkKICB3aGVyZQogICAgc3BsaXQgOjogIChJbnQsIEludCkgLT4gU3RyaW5nIC0+IFtTdHJpbmddCiAgICBzcGxpdCAobGVueCwgbGVueSkgc3RyID0gWyBbIHN0ciEhIChqICogbGVueCArIGkpIHwgaSA8LSBbMC4uKGxlbnggLSAxKV0gXSB8IGogPC0gWzAuLihsZW55IC0gMSldIF0KCmJvYXJkIDo6IFtJbnRdIC0+IFN0cmluZwpib2FyZCBbXSA9ICIiCmJvYXJkICh4OnhzKSB8IHggPT0gMCA9ICIgIiArKyBib2FyZCB4cwogICAgICAgICAgICAgfCB4ID09IDEgPSAieCIgKysgYm9hcmQgeHMKICAgICAgICAgICAgIHwgb3RoZXJ3aXNlID0gIm8iICsrIGJvYXJkIHhzCgptYXJrIDo6IChJbnQsIEludCkgLT4gW0ludF0gLT4gW0ludF0KbWFyayAocG9zeCwgcG9zeSkgYSA9IFsgaWYgKChvcmRlciBhIHgpIDwgMCkgdGhlbiAwCiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgKGlmIChtb2QgKG9yZGVyIGEgeCkgMiA9PSAwKSB0aGVuIDEKICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSAyKQogICAgICAgICAgICAgICAgICAgICAgICB8IHggPC0gWzAuLihwb3N4ICogcG9zeSAtIDEpXSBdCiAgd2hlcmUKICAgIG9yZGVyIDo6IFtJbnRdIC0+IEludCAtPiBJbnQKICAgIG9yZGVyIFtdIF8gPSAtIDEwIC0tIC0xMCBpcyBhIHdhbGtvdXQsIHJlbWFpbnMgdW5kZWZpbmVkIHBvc2l0aW9ucyBmb3IgdGljL3RhYyBibGFuaywgaXMgbGltaXRlZCB0byAxMC0xIHBhaXJzIGluc2lkZSBvZiB0dWxwYQogICAgb3JkZXIgKHg6eHMpIGEgPSBpZiAoeCA9PSBhKSB0aGVuIDAKICAgICAgICAgICAgICAgICAgICAgZWxzZSAxICsgb3JkZXIgeHMgYQoKZmlsbCA6OiAoSW50LCBJbnQpIC0+IFsoSW50LCBJbnQpXSAtPiBbSW50XQpmaWxsIF8gW10gPSBbXQpmaWxsIChwb3N4LCBwb3N5KSAoeDp4cykgPSAoKHBvc3ggKiBzbmQgeCkgKyBmc3QgeCkgOiBmaWxsIChwb3N4LCBwb3N5KSB4cw==
cHAodGlja3RhY2sgKDgsOCkgWygxLDEpLCg4LDgpLCgyLDIpLCgzLDMpLCg0LDIpLCgzLDIpXSk=
pp(ticktack (8,8) [(1,1),(8,8),(2,2),(3,3),(4,2),(3,2)])