Advertisement
Guest User

Untitled

a guest
Mar 1st, 2017
66
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.20 KB | None | 0 0
  1. package BullsAndCows;
  2.  
  3. import java.util.HashSet;
  4. import java.util.Iterator;
  5. import java.util.Random;
  6. import java.util.Scanner;
  7. import java.util.Set;
  8.  
  9. public class BandC {
  10. public static void main(String[] args) {
  11. Set<String> possibleNums = generatePossibleNums();
  12. int steps = 0;
  13. System.out.println("Hello! I am your computer!nNow think of a number...");
  14. Scanner reader = new Scanner(System.in);
  15. while (true) {
  16. steps++;
  17. Iterator<String> iter = possibleNums.iterator();
  18. String AIguess = iter.next();
  19. System.out.println("My guess is: " + AIguess);
  20. System.out.print("Number of cows:");
  21. int numberOfCows = reader.nextInt();
  22. System.out.print("Number of bulls:");
  23. int numberOfBulls = reader.nextInt();
  24. removeWrongNums(new BcCount(numberOfBulls, numberOfCows), AIguess, possibleNums);
  25. if (numberOfBulls == 4) {
  26. System.out.println("Guessed in " + steps + " steps");
  27. break;
  28. }
  29. }
  30. reader.close();
  31. }
  32.  
  33. public static BcCount calcBullandCowCount(String guess, String candidate) {
  34. BcCount bcCount = new BcCount(0, 0);
  35. for (int i = 0; i < candidate.length(); i++) {
  36. if (guess.charAt(i) == candidate.charAt(i)) {
  37. bcCount.bullCount++;
  38. } else if (guess.contains(String.valueOf(candidate.charAt(i)))) {
  39. bcCount.cowCount++;
  40. }
  41. }
  42. return bcCount;
  43. }
  44.  
  45. public static Set<String> generatePossibleNums() {
  46. Set<String> set = new HashSet<String>();
  47. for (int i = 1000; i < 10_000; i++) {
  48. set.add(String.valueOf(i));
  49. }
  50. Iterator<String> iter = set.iterator();
  51. while (iter.hasNext()) {
  52. String str = iter.next();
  53. Set<Character> digits = new HashSet<>();
  54. for (char c : str.toCharArray()) {
  55. if (digits.contains(c)) {
  56. iter.remove();
  57. break;
  58. }
  59. digits.add(c);
  60. }
  61. }
  62. return set;
  63. }
  64.  
  65. public static void removeWrongNums(BcCount guessBcCount, String guess,
  66. Set<String> possibleNums) {
  67. Iterator<String> iter = possibleNums.iterator();
  68. while (iter.hasNext()) {
  69. String str = iter.next();
  70. if (calcBullandCowCount(guess, str).equals(guessBcCount) == false) {
  71. iter.remove();
  72. }
  73. }
  74. }
  75.  
  76. }
  77.  
  78. package BullsAndCows;
  79.  
  80. public class BcCount {
  81. public int bullCount = 0;
  82. public int cowCount = 0;
  83.  
  84. public BcCount(int b, int c) {
  85. bullCount = b;
  86. cowCount = c;
  87. }
  88.  
  89. public String toString() {
  90. return bullCount + " " + cowCount;
  91. }
  92.  
  93. @Override
  94. public boolean equals(Object obj) {
  95. if (this == obj)
  96. return true;
  97. if (obj == null)
  98. return false;
  99. if (getClass() != obj.getClass())
  100. return false;
  101. BcCount other = (BcCount) obj;
  102. if (bullCount != other.bullCount)
  103. return false;
  104. if (cowCount != other.cowCount)
  105. return false;
  106. return true;
  107. }
  108. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement