Δουλεύω σε μια εφαρμογή όπου θα πρέπει να προγραμματίσετε αυτόματα θέσεις εργασίας για τα μέλη της σε ένα περιστρεφόμενο πρόγραμμα. Δεν είμαι πολύ καλός στο να εξηγεί τους κανόνες, τόσο εδώ είναι μερικά στοιχεία για να βοηθήσει:
Θέσεις: Ένας τίτλος θέσης εργασίας, με κανόνες, όπως κάθε Δευτέρα και Τετάρτη κάθε εβδομάδα.
Κατηγορίες: Μια σειρά από θέσεις
Ομάδες: Ένα άλλο σύνολο των θέσεων. Οι θέσεις της ίδιας ομάδας δεν μπορούν να αποδοθούν στα ίδια μέρα
Μέλη: Οι χρήστες αναλαμβάνουν θέσεις σε συγκεκριμένη ημερομηνία.
Για κάθε ημερομηνία του μήνα, τα μέλη αναλαμβάνουν θέσεις (τόσο σε αύξουσα σειρά). Εάν ένα μέλος έχει εκχωρηθεί σε μια θέση σε μια κατηγορία, την επόμενη φορά που μια θέση στην ίδια κατηγορία έρχεται το επόμενο μέλος αλφαβητικά (ή η αρχή της λίστας) παίρνει ανατεθεί π.χ..
Μέλη: Μ1, Μ2, Μ3, Μ4
θέσεις στην κατηγορία C1: P1, P2, P3
Μέλη σε θέση P1: Μ1, Μ2, Μ3, Μ4
Μέλη σε θέση P2: Μ1, Μ2, Μ3
Μέλη σε θέση P2: Μ1, Μ3, M4
Αν Μ1 έχει εκχωρηθεί για την P1, P2, αν θα επακολουθήσει, M2 θα ανατεθεί. Ένα πρόσθετο στρώμα της πολυπλοκότητας εισάγεται όπου και αν P3 έρχεται την επόμενη αντ 'αυτού, Μ3 παίρνει ανατεθεί. Το σύστημα πρέπει να παρακολουθείτε το γεγονός ότι Μ2 «παραλείπεται» και να εκχωρήσετε Μ2 επόμενη εάν είναι διαθέσιμο, στη συνέχεια, να εκχωρήσετε M4 επόμενη, ή περιμένετε μέχρι να πάρει σε μια θέση όπου Μ2 είναι διαθέσιμο (αυτό γίνεται επιπλέον πολύπλοκο όταν υπάρχουν πολλά «παραλείφθηκε «μέλη).
Ένα μέλος θα πρέπει επίσης να παραλείπεται αν έχει δηλώσει ότι δεν θα είναι διαθέσιμο κατά την ημερομηνία αυτή. Το σύστημα θα πρέπει να δοθεί προτεραιότητα στο παραλειφθεί μέλη, κατά κάποιο τρόπο την αναγνώρισή τους όταν έρχονται και, στη συνέχεια, μεταβείτε στο επόμενο λογικό πρόσωπο στη λίστα. Παράκαμψη ισχύει και για τις ομάδες λόγω ημερομηνία συγκρούσεις.
Έχω ήδη μια προσωρινή [και βρώμικο] λύση που καταλαβαίνω πια, ακόμη κι αν έχω πολλά σχόλια σε αυτό που εξηγούν κάθε βήμα. αδυναμίες του είναι στην αντιμετώπιση των παραλειφθεί μέλη.
Εάν επρόκειτο να κωδικοποιήσει αυτό τον τρόπο μπορείτε να κάνετε για αυτό; Είμαι εφαρμογή αυτή σε PHP, αλλά ψευδοκώδικα θα λειτουργεί τόσο καλά.













