import Text. ParserCombinators. ReadPrec ( lift, ( <++ ) )
import Text. ParserCombinators. ReadP ( skipSpaces, skipMany, get)
mnk x y = ( a, b, sigm)
detb = sx2* sy- sx* sxy
a = deta/ det
b = detb/ det
| Complete
readPrec = ( do
x <- readPrec
lift skipSpaces
y <- readPrec
<++ ( do
lift $ skipMany get
main = do
hSetBuffering stdout NoBuffering
let dataInput i xs ys = do
putStr $ "Enter x" ++ strI
++ " y" ++ strI
++ " or not a number to complete : "
case inp of
( XY x y) -> dataInput ( i+ 1 ) ( xs++ [ x] ) ( ys++ [ y] )
( xs
, ys
) <- dataInput
( 0 :: Int ) [ ] [ ] else do
let ( a, b, sigm) = mnk xs ys
aW1wb3J0IFN5c3RlbS5JTwppbXBvcnQgR0hDLlJlYWQKaW1wb3J0IFRleHQuUGFyc2VyQ29tYmluYXRvcnMuUmVhZFByZWMgKGxpZnQsKDwrKykpCmltcG9ydCBUZXh0LlBhcnNlckNvbWJpbmF0b3JzLlJlYWRQIChza2lwU3BhY2VzLHNraXBNYW55LGdldCkKCm1uayA6OiBbRG91YmxlXSAtPiBbRG91YmxlXSAtPiAoRG91YmxlLERvdWJsZSxEb3VibGUpCm1uayB4IHkgPSAoYSxiLHNpZ20pCiAgICAgICAgICB3aGVyZSBuICAgID0gbGVuZ3RoIHgKICAgICAgICAgICAgICAgIHN4ICAgPSBzdW0geAogICAgICAgICAgICAgICAgc3kgICA9IHN1bSB5CiAgICAgICAgICAgICAgICBzeDIgID0gc3VtICQgbWFwICheKDIgOjogSW50KSkgeAogICAgICAgICAgICAgICAgc3h5ICA9IHN1bSAkIHppcFdpdGggKCopIHggeQogICAgICAgICAgICAgICAgZGV0ICA9IHN4MiooZnJvbUludGVncmFsIG4pLXN4KnN4CiAgICAgICAgICAgICAgICBkZXRhID0gKGZyb21JbnRlZ3JhbCBuKSpzeHktc3gqc3kKICAgICAgICAgICAgICAgIGRldGIgPSBzeDIqc3ktc3gqc3h5CiAgICAgICAgICAgICAgICBhICAgID0gZGV0YS9kZXQKICAgICAgICAgICAgICAgIGIgICAgPSBkZXRiL2RldAogICAgICAgICAgICAgICAgc2lnbSA9IHN1bSAkIHppcFdpdGggKFx4aSB5aSAtPiAoeWkgLSAoYSp4aStiKSleKDIgOjogSW50KSkgeCB5CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKZGF0YSBJbnB1dERhdGEgPSBYWSBEb3VibGUgRG91YmxlCiAgICAgICAgICAgICAgIHwgQ29tcGxldGUKCmluc3RhbmNlIEdIQy5SZWFkLlJlYWQgSW5wdXREYXRhIHdoZXJlCgogICAgICAgIHJlYWRQcmVjID0gKGRvCiAgICAgICAgICAgICAgICAgICAgICAgIHggPC0gcmVhZFByZWMKICAgICAgICAgICAgICAgICAgICAgICAgbGlmdCBza2lwU3BhY2VzCiAgICAgICAgICAgICAgICAgICAgICAgIHkgPC0gcmVhZFByZWMKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChYWSB4IHkpKQoKICAgICAgICAgICAgICAgICAgICAgPCsrIChkbwogICAgICAgICAgICAgICAgICAgICAgICBsaWZ0ICQgc2tpcE1hbnkgZ2V0CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBDb21wbGV0ZSkKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAptYWluIDo6IElPICgpCm1haW4gPSBkbwogICAgaFNldEJ1ZmZlcmluZyBzdGRvdXQgTm9CdWZmZXJpbmcKICAgIGxldCBkYXRhSW5wdXQgaSB4cyB5cyA9IGRvCiAgICAgICAgICAgIGxldCBzdHJJID0gc2hvdyBpCiAgICAgICAgICAgIHB1dFN0ciAkICJFbnRlciB4IiArKyBzdHJJICsrICIgeSIgKysgc3RySSArKyAKICAgICAgICAgICAgICAgICAgICAgICAgIiBvciBub3QgYSBudW1iZXIgdG8gY29tcGxldGUgOiAiIAogICAgICAgICAgICBpbnAgPC0gcmVhZExuCiAgICAgICAgICAgIGNhc2UgaW5wIG9mCiAgICAgICAgICAgICAgICAoWFkgeCB5KSAtPiBkYXRhSW5wdXQgKGkrMSkgKHhzKytbeF0pICh5cysrW3ldKQogICAgICAgICAgICAgICAgQ29tcGxldGUgLT4gcmV0dXJuICh4cyx5cykKICAgICh4cyx5cykgPC0gZGF0YUlucHV0ICgwIDo6IEludCkgW10gW10KICAgIGlmIGxlbmd0aCB4cyA8IDIgdGhlbiBwdXRTdHJMbiAibm8gZGF0YSIKICAgIGVsc2UgZG8KICAgICAgICBsZXQgKGEsYixzaWdtKSA9IG1uayB4cyB5cwogICAgICAgIHB1dFN0ckxuICQgIlxuYT0iICsrIHNob3cgYQogICAgICAgIHB1dFN0ckxuICQgImI9IiArKyBzaG93IGIKICAgICAgICBwdXRTdHJMbiAkICJzaWdtPSIgKysgc2hvdyBzaWdtCg==