Είχα φτιάξει μια λύση την περασμένη βδομάδα ....
Πέρασα πολύ ωραία ψάχνοντάς το, και βρήκα ότι υπάρχουν κάποια "σκαλοπάτια" καταστάσεων, που αν καταφέρεις να πασάρεις στον αντίπαλο αυτές τις καταστάσεις, δεν μπορεί να κερδίσει. πχ, αν του δώσω 3 γραμμές με 1, 2, 3 σπίρτα αντίστοιχα, ότι και να κάνει κερδίζω. Ένα τέτοιο "σκαλοπάτι" είναι και η αρχική κατάσταση, και αφού παίζει εκείνος πρώτος, αν κάνεις τις σωστές κινήσεις θα κερδίσεις.
Η ιδέα στη λύση μου περίπου είναι η εξής :
Φτιάχνω έναν πίνακα Winner. Αυτός αντιστοιχίζει κάθε πιθανή κατάσταση σπίρτων που μπορεί να "πάρω" με την κατάσταση που πρέπει να "δώσω" για να κερδίσω
Οι καταστάσεις παριστώνται με τετραψήφιους αριθμούς xyzw όπου τα ψηφία αυξάνουν προς τα δεξιά
πχ αν έχω 1, 3, 1, 5 σπίρτα στην 1η, 2η 3η και 4η σειρά αντίστοιχα, αυτό αντιστοιχεί στην κατάσταση 1135
μιας κι είναι αδιάφορο σε ποιες γραμμές έχω ποια σπίρτα αλλά το ότι έχω 2 γραμμές με 1, μία με 3 και μία με 5
Κάθε κατάσταση αντιστοιχεί σε ένα κελί του Winner στο οποίο περιέχεται η επόμενη κατάσταση που θα με φέρει στη νίκη.
Αν μία κατάσταση δεν μπορεί να με πάει σε νίκη, είναι 'loser' και περιέχει το 0
Φυσικά σπαταλιώνται θέσεις στον Winner αλλά ήταν μια εύκολη λύση, για αρχή, και σε επόμενη φάση θα κοίταζα πώς μπορεί να γίνει πιο αποδοτικά