Only in /tmp/rehearsal/runs/C+Q/workspace: AGENTS.md diff -ru '--exclude=target' /tmp/rehearsal/pristine/src/main/java/codingdojo/LongRangeForecasts.java /tmp/rehearsal/runs/C+Q/workspace/src/main/java/codingdojo/LongRangeForecasts.java --- /tmp/rehearsal/pristine/src/main/java/codingdojo/LongRangeForecasts.java 2026-09-27 14:58:14.139167804 +0000 +++ /tmp/rehearsal/runs/C+Q/workspace/src/main/java/codingdojo/LongRangeForecasts.java 2026-09-27 15:53:52.292927858 +0000 @@ -3,19 +3,18 @@ import java.time.Instant; import java.time.temporal.ChronoUnit; import java.util.*; +import java.util.function.LongFunction; public class LongRangeForecasts { private final Scorer scorer = new Scorer(); - public Map longRangeForecast(String quarter) { + public Map longRangeForecast() { + return longRangeForecast(d -> scorer.lookupWeather(d)); + } + public Map longRangeForecast(LongFunction dayOffsetToWeather) { var result = new HashMap(); - if (Objects.equals(quarter, "Q1") || Objects.equals(quarter, "Q4")) { - for (IceCream flavour : IceCream.values()) { - result.put(flavour, 5); - } - } for (IceCream flavour : IceCream.values()) { result.put(flavour, 0); } @@ -25,15 +24,7 @@ Instant.parse("2023-06-05T14:00:00.000-07:00"), Instant.parse("2023-06-23T14:00:00.000-07:00") ); - List expectedWeather = new ArrayList<>(); - for (Instant interestingDate : interestingDates) { - scorer.updateSelection(); - var forecastDate = Instant.parse("2023-04-26T14:00:00.000-07:00"); - long daysForward = ChronoUnit.DAYS.between(forecastDate, interestingDate); - Boolean lookupWeather = scorer.lookupWeather(daysForward); - expectedWeather.add(lookupWeather); - } - + List expectedWeather = collectExpectedWeather(interestingDates, dayOffsetToWeather); for (IceCream flavour : result.keySet()) { result.put(flavour, result.get(flavour) + 10); var sunnyHolidays = expectedWeather.stream().filter(s -> s).count(); @@ -46,4 +37,15 @@ } return result; } + + private List collectExpectedWeather(List dates, LongFunction dayOffsetToWeather) { + List expectedWeather = new ArrayList<>(); + for (Instant date : dates) { + scorer.updateSelection(); + var forecastDate = Instant.parse("2023-04-26T14:00:00.000-07:00"); + long daysForward = ChronoUnit.DAYS.between(forecastDate, date); + expectedWeather.add(dayOffsetToWeather.apply(daysForward)); + } + return expectedWeather; + } }