Вы правы, что графики довольно сложны, но это в основном, когда вы разрабатываете граф общего назначения. В вашем случае, я бы сказал, что график все еще является лучшим способом, так как это напрямую моделирует ситуацию.
Я не уверен, как это сделать в функциональной парадигме, но вот идея в старом добром императивном стиле:
- Дайте каждому из ваших
n
клоунов и число от 0
(включительно) до n
(исключая). Они будут служить индексами массива
- Создание массива
n * n
, инициализированного для всех нулей.
- Когда планируется вечеринка, для каждой пары клоунов в партии (с номерами
i
и j
) установите для ячейки i,j
и j-i
1
Когда вам дадут мертвого клоуна, все, что вам теперь нужно будет сделать, это прочитать строку, соответствующую номеру мертвого клоуна. В ячейках с 1 будет указано, какие клоуны посещали вечеринки с мертвым клоуном.
Я думаю, что приведенное выше описание показывает, что графики не должны быть сложными, если они настроены для конкретной ситуации. Опять же, я не уверен, насколько хорошо графы проявляются в функциональном программировании, поэтому, если ваша цель состоит в том, чтобы сделать все в функциональном стиле, граф может быть намного более сложным.