Számítsd ki egy Hex / Polygon játék eredményét.
A Hex / Polygon / CON-TAC-TIX néven ismert absztrakt táblajáték szabályai meglehetősen egyszerűek, a gyakorlatban mégis összetettek. Két játékos köveket helyez el egy hatszögletű mezőkből álló paralelogrammán. Az a játékos nyer, aki elsőként összeköti a köveit a szemközti oldallal. A paralelogramma négy oldala oszlik meg a két játékos között (azaz az egyik játékos megkapja az egyik oldalt és a vele közvetlenül szemközti oldalt, a másik játékos pedig a másik kettőt).
A célod, hogy olyan programot készíts, amely egy tábla egyszerű reprezentációja alapján kiszámítja a győztest (vagy annak hiányát). Vedd figyelembe, hogy nem minden játéknak kell „fairnek” lennie. (Például a játékosoknak eltérő számú bábujuk lehet, vagy a tábla szélessége és magassága különbözhet.)
A táblák így néznek ki:
. O . X .
. X X O .
O O O X .
. X O X O
X O O O X
Az O játékos fentről lefelé, az X játékos balról jobbra játszik.
A fenti példában O balról jobbra összeköttetést hozott létre, de senki sem nyert, mivel O nem kötötte össze a felső és az alsó oldalt.
Előfordulhat, hogy néhány teszteset igazságtalannak tűnik. Lehet azonban, hogy jogosan tűnik annak. Például gyakori, hogy a fiatal vagy kezdő játékosoknak plusz n bábut adnak a tábla meghatározott pozícióin, így egyébként teljesen szabályos játszmában is eltérhet a bábuk száma.
Mindenesetre ez a feladat csak a győztes meghatározásával törődik egy olyan játékban, amelynek többféle paramétere lehet, például a tábla hossza és a plusz bábuk. Nem érdekli a játék semmilyen más állapota, például hogy ki hova lépett, mikor, vagy hogy kin van a sor.
Szóval ne lepődj meg azokon a látszólag igazságtalan játszmákon.
Iratkozz fel az Exercism-re, hogy megtanuld és elsajátítsd a(z) Scala nyelvet 95 feladat segítségével, valódi emberi mentorálással, mindez ingyen.