flights(); $airlineLetters = $flights ->filter(fn($f) => $f->airline?->IATA_code !== null) ->map(fn($f) => strtoupper($f->airline->IATA_code[0])) ->filter(fn($letter) => ctype_alpha($letter)) ->unique() ->count(); $this->awardProgress($airlineLetters, 'fun_challenges.airline_alphabet'); // --- Visit the Alphabet --- // Collect first letters from both departure and arrival airport IATA codes $airportLetters = $flights ->flatMap(fn($f) => [ $f->departureAirport?->iata_code, $f->arrivalAirport?->iata_code, ]) ->filter() ->map(fn($code) => strtoupper($code[0])) ->unique() ->count(); $this->awardProgress($airportLetters, 'fun_challenges.airport_alphabet'); } }