Αποστολέας Θέμα: ΑΣΚΗΣΗ ΦΤΙΑΞΕ ΤΟ ΠΑΙΧΝΙΔΙ ΝΙΜ  (Αναγνώστηκε 206 φορές)

Κωστας τζιαννης

  • Δεινόσαυρος
  • *****
  • Μηνύματα: 168
ΑΣΚΗΣΗ ΦΤΙΑΞΕ ΤΟ ΠΑΙΧΝΙΔΙ ΝΙΜ
« στις: 25 Μάι 2018, 04:38:49 πμ »
Το παιχνιδι νιμ παιζεται με 2 παιχτες χρησιμοποιωντας  σπιρτα ως εξης:υπαρχουν  4 γραμμες και αρχικα στην πρωτη γραμμη εχουμε 1 σπιρτο στη δευτερη 3 στην τριτη 5 και στην τεταρτη 7 σπιρτα. καθε παιχτης οταν ερθει η σειρα του μπορει να αφαιρεσει απο μια γραμμη της επιλογης του απο 1 μεχρι ολα τα σπιρτα αυτης της γραμμης που διαλεξε.απαγορευεται να αφαιρει σπιρτα απο διαφορετικες γραμμες στον ιδιο γυρο ή να επιλεξει γραμμη που δεν εχει τουλαχιστον 1 σπιρτο.ο παιχτης που θα παρει το τελευταιο σπιρτο ειναι ο ΗΤΤΗΜΕΝΟΣ.να φτιαξετε προγραμμα σε γλωσσα που θα προσομειωνει το παιχνιδι αυτο μεταξυ υπολογιστη και παιχτη με τον υπολογιστη να παιζει παντα δευτερος.να κανετε τον υπολογιστη να νικαει παντα

gthal

  • Ομάδα διαγωνισμάτων 2017
  • *
  • Μηνύματα: 879
Απ: ΑΣΚΗΣΗ ΦΤΙΑΞΕ ΤΟ ΠΑΙΧΝΙΔΙ ΝΙΜ
« Απάντηση #1 στις: 14 Ιούν 2018, 12:50:45 μμ »
Είχα φτιάξει μια λύση την περασμένη βδομάδα ....
Πέρασα πολύ ωραία ψάχνοντάς το, και βρήκα ότι υπάρχουν κάποια "σκαλοπάτια" καταστάσεων, που αν καταφέρεις να πασάρεις στον αντίπαλο αυτές τις καταστάσεις, δεν μπορεί να κερδίσει. πχ, αν του δώσω 3 γραμμές με 1, 2, 3 σπίρτα αντίστοιχα, ότι και να κάνει κερδίζω. Ένα τέτοιο "σκαλοπάτι" είναι και η αρχική κατάσταση, και αφού παίζει εκείνος πρώτος, αν κάνεις τις σωστές κινήσεις θα κερδίσεις.

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

Φιλικά,
Γιώργος Θαλασσινός

Κωστας τζιαννης

  • Δεινόσαυρος
  • *****
  • Μηνύματα: 168
Απ: ΑΣΚΗΣΗ ΦΤΙΑΞΕ ΤΟ ΠΑΙΧΝΙΔΙ ΝΙΜ
« Απάντηση #2 στις: 14 Ιούν 2018, 07:57:57 μμ »
Είχα φτιάξει μια λύση την περασμένη βδομάδα ....
Πέρασα πολύ ωραία ψάχνοντάς το, και βρήκα ότι υπάρχουν κάποια "σκαλοπάτια" καταστάσεων, που αν καταφέρεις να πασάρεις στον αντίπαλο αυτές τις καταστάσεις, δεν μπορεί να κερδίσει. πχ, αν του δώσω 3 γραμμές με 1, 2, 3 σπίρτα αντίστοιχα, ότι και να κάνει κερδίζω. Ένα τέτοιο "σκαλοπάτι" είναι και η αρχική κατάσταση, και αφού παίζει εκείνος πρώτος, αν κάνεις τις σωστές κινήσεις θα κερδίσεις.

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

μπραβο ωραιος!!μου αρεσε και η σχεδιαστικη αναπαρασταση με τις παυλες που συμβολιζουν σπιρτα.ουσιαστικα η συντομη λυση ειναι να σπας καθε γραμμη σε 4-2-1 σπιρτα.αυτος που παιζει δευτερος πρεπει να αφαιρει τοσα σπιρτα και απο την καταλληλη γραμμη ωστε να αφηνει στον αλλον ζυγο αριθμο απο 4 ,ζυγο αριθμο απο 2,ζυγο αριθμο 1 συνολικα.οταν υπαρχει μονο μια γραμμη με περισσοτερα απο ενα σπιρτα τοτε παρτα ολα απο αυτη τη γραμμη ωστε να αφησεις το 1,1,1.

https://www.youtube.com/watch?v=niMjxNtiuu8

Κωστας τζιαννης

  • Δεινόσαυρος
  • *****
  • Μηνύματα: 168
Απ: ΑΣΚΗΣΗ ΦΤΙΑΞΕ ΤΟ ΠΑΙΧΝΙΔΙ ΝΙΜ
« Απάντηση #3 στις: 15 Ιούν 2018, 05:43:44 πμ »
η λυση του ΝΙΜ με τις δυναμεις του 2