Advertisement
Guest User

Untitled

a guest
May 6th, 2015
237
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.83 KB | None | 0 0
  1. -- pune zero intr o casa x
  2. put0onHouseX x lista = take (x) lista ++ [0] ++ drop (x+1) lista
  3. -- pune ceva <- dat ca parametru intr o casa x
  4. putonHouseX x lista ceva = take (x) lista ++ [ceva] ++ drop (x+1) lista
  5.  
  6. -- intoarce lista totala , doar ca lista oponentului este inversata
  7. reverseOpp lista = (take 7 lista) ++ reverse(drop 7 $ take 13 lista ) ++ [last lista]
  8.  
  9. -- se apeleaza cu 2 (lista!!2) (put0onHouseX 2 (reverseOpp lista) )
  10. -- intoarce lista dupa ce s-a adaugat +1 peste tot , dar fara a REinversa lista oponentului
  11. updateCuUnu x nrSeed lista = if nrSeed == 0 then lista
  12. else updateCuUnu ((x+1)`mod`13) (nrSeed-1) (putonHouseX ((x+1)`mod`13) lista (1 + (lista!!((x+1)`mod`13))))
  13.  
  14. -- se aplezeaza cu 2 (lista!!2) (put0onHouseX 2 (reverseOpp lista) )
  15. -- intoarce lista totala in urma adaugarii +1 (lista corecta care va fi primita de Board)
  16. listaPlusUnu x nrSeed lista = reverseOpp (updateCuUnu x (lista!!x) (put0onHouseX x (reverseOpp lista)))
  17. -- ok pana aici
  18.  
  19.  
  20. capture x lista = let listanoua = (listaPlusUnu x (fromIntegral (lista!!x)) lista)
  21. nrSeed = (fromIntegral (lista!!(x))) in
  22. if listanoua !! ((x+nrSeed)`mod`13) == 1 && ((x+nrSeed)`mod`13) /= 6 && ((reverseOpp listanoua)!!(12-((x+nrSeed)`mod`13))) /= 0 then
  23. reverseOpp(put0onHouseX (12-((x+nrSeed)`mod`13)) (reverseOpp ((put0onHouseX ((x+nrSeed)`mod`13) (putonHouseX 6 listanoua ((listanoua!!6)+1 + ((reverseOpp listanoua)!!(12-((x+nrSeed)`mod` 13)))))))))
  24. else listanoua
  25.  
  26.  
  27. remake x lista = if x == 1 then
  28. (reverse $ take 6 $ drop 7 lista)++[last lista] ++ (reverse(take 6 lista)) ++ [lista!!6]
  29. else
  30. (drop 7 lista) ++ (take 6 lista) ++ [lista!!6]
  31.  
  32.  
  33. listaDinBoard (Board lista player) = lista
  34.  
  35. move :: House -> Board -> Board
  36. move x (Board lista player)
  37. | x > 6 || x < 1 || isOver (Board lista player) = (Board lista player)
  38. | player == You && (lista !! (x-1)) == 0 = (Board lista player)
  39. | player == Opponent && ((remake 0 (reverseOpp lista ))!!(6-x)) == 0 = (Board lista player)
  40. | player == You && (x+(fromIntegral(lista!!(x-1)))`mod`13) == 7 = (Board ( capture (x-1) lista ) You)
  41. | player == You = (Board ( capture (x-1) lista ) Opponent)
  42. | player == Opponent && ((7-x)+(fromIntegral((remake 0 (reverseOpp lista ))!!(6-x)))`mod`13) == 7
  43. = (Board (remake 1 (capture (6-x) (reverseOpp(remake 0 (reverseOpp lista ))))) Opponent )
  44. | player == Opponent = (Board (remake 1 (capture (6-x) (reverseOpp(remake 0 (reverseOpp lista ))))) You )
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement