Каждый раз, когда возвращаясь с командой с олимпиады, играю в города, думаю, что в формализованном виде это была бы интересная математическая задача, а по приезду благополучно о ней забываю.
Пусть у игроков обдинаковый запас слов. Пусть в алфавите k букв. Имеется квадратная матрица А размера kxk, каждый элемент которой
показывает, сколько осталось неназванных слов, которые начинаются на i-ю букву алфавита и оканчиваются на j-ю букву. Позиция в игре Представляет собой пару (А, k), где А - текущая матрица неназванных слов, а k - номер буквы, на которую нужно назвать слово. Своим ходом игрок уменьшает на 1 один из элементов k-й строки матрицы А (допустим, a_{km}:=a_{km-1}) и создаёт позицию (А', m), где А' - текущая матрица неназванных слов (предыдущая матрица с уменьшенным на 1 элементом a_{km}), а m - номер в алфавите последней буквы слова, названного игроком, и, соответственно, первая буква слова, которое нужно назвать следующему игроку.
Позиция (А, k) будет проигрышной, если в матрице А все элементы k-й строки будут равны 0.
Кто-то встречал такое обощение, может, велосипед изобретаю?