Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package BullsAndCows;
- import java.util.HashSet;
- import java.util.Iterator;
- import java.util.Random;
- import java.util.Scanner;
- import java.util.Set;
- public class BandC {
- public static void main(String[] args) {
- Set<String> possibleNums = generatePossibleNums();
- int steps = 0;
- System.out.println("Hello! I am your computer!nNow think of a number...");
- Scanner reader = new Scanner(System.in);
- while (true) {
- steps++;
- Iterator<String> iter = possibleNums.iterator();
- String AIguess = iter.next();
- System.out.println("My guess is: " + AIguess);
- System.out.print("Number of cows:");
- int numberOfCows = reader.nextInt();
- System.out.print("Number of bulls:");
- int numberOfBulls = reader.nextInt();
- removeWrongNums(new BcCount(numberOfBulls, numberOfCows), AIguess, possibleNums);
- if (numberOfBulls == 4) {
- System.out.println("Guessed in " + steps + " steps");
- break;
- }
- }
- reader.close();
- }
- public static BcCount calcBullandCowCount(String guess, String candidate) {
- BcCount bcCount = new BcCount(0, 0);
- for (int i = 0; i < candidate.length(); i++) {
- if (guess.charAt(i) == candidate.charAt(i)) {
- bcCount.bullCount++;
- } else if (guess.contains(String.valueOf(candidate.charAt(i)))) {
- bcCount.cowCount++;
- }
- }
- return bcCount;
- }
- public static Set<String> generatePossibleNums() {
- Set<String> set = new HashSet<String>();
- for (int i = 1000; i < 10_000; i++) {
- set.add(String.valueOf(i));
- }
- Iterator<String> iter = set.iterator();
- while (iter.hasNext()) {
- String str = iter.next();
- Set<Character> digits = new HashSet<>();
- for (char c : str.toCharArray()) {
- if (digits.contains(c)) {
- iter.remove();
- break;
- }
- digits.add(c);
- }
- }
- return set;
- }
- public static void removeWrongNums(BcCount guessBcCount, String guess,
- Set<String> possibleNums) {
- Iterator<String> iter = possibleNums.iterator();
- while (iter.hasNext()) {
- String str = iter.next();
- if (calcBullandCowCount(guess, str).equals(guessBcCount) == false) {
- iter.remove();
- }
- }
- }
- }
- package BullsAndCows;
- public class BcCount {
- public int bullCount = 0;
- public int cowCount = 0;
- public BcCount(int b, int c) {
- bullCount = b;
- cowCount = c;
- }
- public String toString() {
- return bullCount + " " + cowCount;
- }
- @Override
- public boolean equals(Object obj) {
- if (this == obj)
- return true;
- if (obj == null)
- return false;
- if (getClass() != obj.getClass())
- return false;
- BcCount other = (BcCount) obj;
- if (bullCount != other.bullCount)
- return false;
- if (cowCount != other.cowCount)
- return false;
- return true;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement