maxBy
явно возвращает первое максимальное значение, поэтому размещение игрока первым в списке гарантирует, что игрок всегда будет выигрывать связи.Только будьте осторожны, чтобы не использовать коллекцию с недетерминированным порядком итераций, например, Set.
Я думаю, что это довольно лаконичный и идиоматический код, за исключением того факта, что вы не справляетесь с увольнением обоих игроков.Я мог бы подумать о том, чтобы сделать правила немного более явными, как показано ниже, но я бы обсудил это с коллегами по телефону:
if (!busted(gamer) && (gamer.points >= dealer.points || busted(dealer)))
Some(gamer)
else if (!busted(dealer))
Some(dealer)
else
None