import java.util.HashSet;
import java.util.Set;
public class Birthday {
public static void main(String[] args) {
// Возможные дни рождения
Set<Integer> possibleDays = new HashSet<>();
possibleDays.add(15);
possibleDays.add(16);
possibleDays.add(19);
possibleDays.add(17);
possibleDays.add(18);
possibleDays.add(14);
possibleDays.add(16);
possibleDays.add(14);
possibleDays.add(15);
possibleDays.add(17);
// Возможные месяцы
Set<Integer> possibleMonths = new HashSet<>();
possibleMonths.add(5); // May
possibleMonths.add(6); // June
possibleMonths.add(7); // July
possibleMonths.add(8); // August
// Алгоритм решения
for (int month : possibleMonths) {
Set<Integer> daysInMonth = new HashSet<>();
for (int day : possibleDays) {
if (day == 15 && month == 5) {
daysInMonth.add(day);
} else if (day == 16 && month == 5) {
daysInMonth.add(day);
} else if (day == 19 && month == 5) {
daysInMonth.add(day);
} else if (day == 17 && month == 6) {
daysInMonth.add(day);
} else if (day == 18 && month == 6) {
daysInMonth.add(day);
} else if (day == 14 && month == 7) {
daysInMonth.add(day);
} else if (day == 16 && month == 7) {
daysInMonth.add(day);
} else if (day == 14 && month == 8) {
daysInMonth.add(day);
} else if (day == 15 && month == 8) {
daysInMonth.add(day);
} else if (day == 17 && month == 8) {
daysInMonth.add(day);
}
}
// Альберт не знает день рождения, но знает, что Бернард тоже не знает
if (daysInMonth.size() > 1) {
// Проверяем, знает ли Бернард день рождения
for (int day : daysInMonth) {
// Если есть только один день в месяце, то Бернард знает день рождения
if (
possibleDays.stream ().filter(d -> d == day).count() == 1) {
// Бернард не знает день рождения, так как есть несколько дней в других месяцах
continue;
} else {
// Бернард знает день рождения, так как этот день уникален
// Альберт может определить день рождения, так как он знает, что Бернард знает
System.out.println("День рождения Шерил: " + day + " " + month);
return;
}
}
}
}
}
}