Guest User

Untitled

a guest
May 24th, 2018
102
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.40 KB | None | 0 0
  1. xquery version "1.0-ml";
  2.  
  3. declare variable $deck-counter := map:map();
  4. declare variable $deck := map:map();
  5.  
  6. declare function local:get-card($num) {
  7. let $card := map:get($deck-counter, xs:string($num))
  8. let $_ := xdmp:log(fn:concat("card: ", $card, " $num: ", $num), "debug")
  9. return
  10. (: call recursively with another rand number, if the
  11. card’s been dealt already :)
  12. if (fn:empty($card)) then
  13. local:get-card(xdmp:random(52))
  14. else ($card, map:delete($deck-counter, xs:string($card)))
  15. };
  16.  
  17.  
  18. let $suit := ("diamonds", "spades", "clubs", "hearts") let $counter := 0
  19.  
  20. let $count :=
  21. for $suit-count at $p in (1 to 4)
  22. for $card-num in (1 to 13)
  23. let $_ := xdmp:set($counter, ($counter + 1)) let $card :=
  24. if($card-num eq 1) then
  25. fn:concat("ace of ", $suit[$p])
  26. else if ($card-num eq 11) then
  27. fn:concat("jack of ", $suit[$p])
  28. else if ($card-num eq 12) then
  29. fn:concat("queen of ", $suit[$p])
  30. else if ($card-num eq 13) then
  31. fn:concat("king of ", $suit[$p])
  32. else fn:concat($card-num, " of ", $suit[$p])
  33. return map:put($deck, xs:string($counter), $card)
  34.  
  35. let $_load_deck :=
  36. for $i in (1 to 52)
  37. return map:put($deck-counter, xs:string($i), $i)
  38.  
  39. let $cards-to-deal := 2
  40. let $max-players := 3
  41.  
  42. for $card in (1 to $cards-to-deal)
  43. for $player in (1 to $max-players)
  44. let $card :=
  45. local:get-card(xdmp:random(52))
  46. return (fn:concat("player: ", $player, " card: ", map:get($deck, xs:string($card))))
Add Comment
Please, Sign In to add comment