fork download
  1. /* package whatever; // don't place package name! */
  2.  
  3. import java.util.*;
  4. import java.lang.*;
  5. import java.io.*;
  6.  
  7. //Four people, (call them C, D, E and F), decide to play a card game for fun. They use an ordinary fair deck of 52 cards, shuffled well immediately before each hand is drawn, and randomly draw cards from it one a time without replacement, all 4 using (sharing) the same drawn cards to determine who wins. A win is defined as follows:
  8. //C wins if he gets at least one of all 13 ranks of the cards (regardless of suit as they can be mixed suits or even all the same suit).
  9. //D wins if he gets either 6 red cards or 6 black cards in a row (consecutive).
  10. //E wins if she gets 4 of a kind of ANY ONE odd rank (A,3,5,7,9,J,K).
  11. //F wins if she gets at least 12 black cards and at least 12 red cards.
  12.  
  13. /* Name of the class has to be "Main" only if the class is public. */
  14. class Ideone
  15. {
  16. private static final Random RANDOM = new Random();
  17. private static int[] count = new int[52];
  18. private static int[] wins = new int[4];
  19. private static ArrayList<Integer> ca= new ArrayList<Integer>();//card array
  20.  
  21. public static void main (String[] args) throws java.lang.Exception
  22. {
  23. final double ITER = Math.pow(10,1);//iterations
  24.  
  25. for(int k=0;k<ITER;k++){//play the match iter times
  26. ca.clear();
  27. for(int j=0;j<52;j++){
  28. ca.add(j);// these create a new deck 0-25 are red and 26-51 are black or vice versa
  29. }
  30. int cr=0;//red cards
  31. int cb=0;//black cards
  32. int anywon=0;//counter if anyone won
  33. for(int i=0;;i++){
  34. int card=getCard();//get a card
  35. System.out.printf("card is %d\n",card);//print it
  36. ++count[card];//increase the count of it
  37. if(CWon()){//if c won
  38. ++wins[0];
  39. ++anywon;
  40. }
  41. if(card<=25){// if red card
  42. ++cr;
  43. cb=0;
  44. }else{// if black card
  45. ++cb;
  46. cr=0;
  47. }
  48. if(cr>=6||cb>=6){// if d won
  49. ++wins[1];
  50. ++anywon;
  51. }
  52. if(EWon()){// if e won
  53. ++wins[2];
  54. ++anywon;
  55. }
  56. if(cr>=12&&cb>=12){// if both red and black cards are atleast 12
  57. ++wins[2];
  58. ++anywon;
  59. }
  60. if(anywon>=1){// if anyone won
  61. anywon=0;
  62. count = new int[52];
  63. break;//reset
  64. }
  65. }
  66. }
  67. System.out.printf("C:%d, D:%d, E:%d, F:%d",wins[0],wins[1],wins[2],wins[3]);//print wins
  68. }
  69.  
  70. private static int getCard(){
  71. System.out.println("size is "+ca.size());
  72. int r= RANDOM.nextInt(ca.size());//get a new index within current deck's size
  73. int i =ca.get(r);//get it
  74. ca.remove(r);//remove it
  75. return i;//give it
  76. }
  77.  
  78. private static boolean CWon(){
  79. for(int i=0;i<4;i++){// check the 4 suites
  80. for(int j=0;j<13;j++){//check the 13 cards
  81. if(count[13*i+j]==0){//if the no of suck cards is zero exit
  82. break;
  83. }
  84. if(j==13){// and if you have reached 13 cards you have won
  85. return true;
  86. }
  87. }
  88. }
  89. return false;
  90. }
  91.  
  92. private static boolean EWon(){
  93. for(int i=0;i<52;i++){//run 52 times
  94. if(i%2==1&&count[i]>=4){//if odd and atleast 4 of a kind you won
  95. return true;
  96. }
  97. }
  98. return false;
  99. }
  100.  
  101.  
  102. }
Runtime error #stdin #stdout #stderr 0.12s 320448KB
stdin
Standard input is empty
stdout
size is 52
card is 23
size is 51
card is 2
size is 50
card is 10
size is 49
card is 36
size is 48
card is 21
size is 47
card is 7
size is 46
card is 40
size is 45
card is 13
size is 44
card is 20
size is 43
card is 46
size is 42
card is 38
size is 41
card is 42
size is 40
card is 51
size is 39
card is 25
size is 38
card is 22
size is 37
card is 15
size is 36
card is 16
size is 35
card is 39
size is 34
card is 3
size is 33
card is 31
size is 32
card is 6
size is 31
card is 44
size is 30
card is 32
size is 29
card is 0
size is 28
card is 34
size is 27
card is 4
size is 26
card is 14
size is 25
card is 30
size is 24
card is 27
size is 23
card is 47
size is 22
card is 18
size is 21
card is 9
size is 20
card is 35
size is 19
card is 49
size is 18
card is 26
size is 17
card is 1
size is 16
card is 12
size is 15
card is 5
size is 14
card is 19
size is 13
card is 8
size is 12
card is 41
size is 11
card is 37
size is 10
card is 43
size is 9
card is 50
size is 8
card is 45
size is 7
card is 28
size is 52
card is 20
size is 51
card is 45
size is 50
card is 42
size is 49
card is 13
size is 48
card is 4
size is 47
card is 49
size is 46
card is 1
size is 45
card is 51
size is 44
card is 39
size is 43
card is 19
size is 42
card is 3
size is 41
card is 12
size is 40
card is 38
size is 39
card is 34
size is 38
card is 26
size is 37
card is 44
size is 36
card is 6
size is 35
card is 5
size is 34
card is 29
size is 33
card is 30
size is 32
card is 16
size is 31
card is 32
size is 30
card is 43
size is 29
card is 22
size is 28
card is 47
size is 27
card is 0
size is 26
card is 2
size is 25
card is 7
size is 24
card is 40
size is 23
card is 21
size is 22
card is 35
size is 21
card is 50
size is 20
card is 15
size is 19
card is 27
size is 18
card is 14
size is 17
card is 24
size is 16
card is 11
size is 15
card is 10
size is 14
card is 28
size is 13
card is 17
size is 12
card is 8
size is 11
card is 37
size is 10
card is 18
size is 9
card is 36
size is 8
card is 31
size is 7
card is 41
size is 6
card is 25
size is 5
card is 46
size is 4
card is 23
size is 3
card is 9
size is 2
card is 48
size is 1
card is 33
size is 0
stderr
Exception in thread "main" java.lang.IllegalArgumentException: bound must be positive
	at java.util.Random.nextInt(Random.java:388)
	at Ideone.getCard(Main.java:72)
	at Ideone.main(Main.java:34)