Προς το περιεχόμενο

Προτεινόμενες αναρτήσεις

Δημοσ.
public  class Easy extends MainActivity implements View.OnClickListener {

    public static final Random RANDOM = new Random();
    public static final String[] WORDS = {"ΠΕΝΑ", "ΜΗΛΟ", "ΚΟΤΑ", "ΝΕΡΟ", "ΤΥΡΙ", "ΞΥΔΙ", "ΜΑΤΙ", "ΨΑΡΙ", "ΔΩΡΟ", "ΞΥΛΟ"};
    protected static String word;

    public static String randomWord() {

        
            return WORDS[RANDOM.nextInt(WORDS.length)];

    }


    public static String shuffleWord(String word) {
        Easy.word = word;
        if (word != null && !"".equals(word)) {

            char a[] = word.toCharArray();

            for (int i = 0; i < a.length; i++) {
                int j = RANDOM.nextInt(a.length);
                char tmp = a[i];
                a[i] = a[j];
                a[j] = tmp;
            }

            return new String(a);
        }

return  word;
    }
}

 

  • Moderators
Δημοσ.

Θες να σου επιστρέφει μια τυχαία λέξη αλλά αυτή που σου επιστρέφει να μην την έχει ξαναεπιστρέψει; Αν κατάλαβα σωστά, μπορείς να κρατάς μια λίστα με το index των λέξεων που έχουν ήδη επιστραφεί, και μετά να παίρνεις random αριθμούς μέχρι ο αριθμός που παίρνεις να μην υπάρχει ήδη στη λίστα σου.

Δημοσ.

Φτιάξε έναν πίνακα με τόσες θέσεις όσες και οι λέξεις σου, θέσε σε αυτόν τις τιμές 0...words_length και κάνε τυχαία swap μεταξύ 2 indexes, τόσα όσα θεωρείς ότι θα τοποθετήσουν τους αριθμούς σε τυχαίες θέσεις.

Μετά σειριακά από τον πίνακα αυτόν,  με index 0...words_length παίρνεις το περιεχόμενο τους και το χρησιμοποιείς ως index στον πίνακα λέξεων σου.

  • Like 1
Δημοσ.
Στις 2/13/2018 στις 5:55 ΜΜ, Kercyn είπε

Θες να σου επιστρέφει μια τυχαία λέξη αλλά αυτή που σου επιστρέφει να μην την έχει ξαναεπιστρέψει; Αν κατάλαβα σωστά, μπορείς να κρατάς μια λίστα με το index των λέξεων που έχουν ήδη επιστραφεί, και μετά να παίρνεις random αριθμούς μέχρι ο αριθμός που παίρνεις να μην υπάρχει ήδη στη λίστα σου.

Πολύ κακη λύση ... Αν υποθέσουμε ότι έχουμε μια λίστα με 100 λέξεις και περισσεύει μια θα βαράς iterations μέχρι να μην υπάρχει ας πούμε ο index 13 που απομενει ? Το πρόβλημα εντείνεται όσο μεγαλώνει η λίστα των λέξεων . 

Έχω χρησιμοποιήσει αυτή την μέθοδο που λες σε παιχνίδι φιδακι . Κρατούσα τα σημεία του φιδιού και όταν ήταν να βγάλω φαγητό κοιτούσα να μην πέφτουν πάνω στο φιδακι . Guess what ! Όταν έμειναν καμιά δεκαριά κενά σημεία στην οθόνη το παιχνίδι κόλλησε :)

  • Like 1
  • Moderators
Δημοσ.
5 ώρες πριν, Aztec είπε

Πολύ κακη λύση ... Αν υποθέσουμε ότι έχουμε μια λίστα με 100 λέξεις και περισσεύει μια θα βαράς iterations μέχρι να μην υπάρχει ας πούμε ο index 13 που απομενει ? Το πρόβλημα εντείνεται όσο μεγαλώνει η λίστα των λέξεων . 

Έχω χρησιμοποιήσει αυτή την μέθοδο που λες σε παιχνίδι φιδακι . Κρατούσα τα σημεία του φιδιού και όταν ήταν να βγάλω φαγητό κοιτούσα να μην πέφτουν πάνω στο φιδακι . Guess what ! Όταν έμειναν καμιά δεκαριά κενά σημεία στην οθόνη το παιχνίδι κόλλησε :)

Τόσο άσχημα ε; Oh well, τότε καλύτερα να μη χρησιμοποιήσει αυτή :P

Δημοσ.

Κάτι μου λέει ότι είναι η ίδια εργασία που έκανα πριν λίγες μέρες για τη σχολή :p.

Αυτό που έκανα εγώ είναι να φτιάξω ένα class word, το οποίο έχει μέσα ένα Boolean για το αν έχει χρησιμοποιηθεί η λέξη ή όχι και ένα method που την ανακατεύει. Κάθε φορά που έπαιρνα μια λέξη, τσέκαρα αν το Boolean είναι true, αν ναι, έπαιρνα ξανά, μέχρι να βρω λέξη που να μην έχει χρησιμοποιηθεί. 

Δημοσ. (επεξεργασμένο)
14 ώρες πριν, Dinos_12345 είπε

Κάτι μου λέει ότι είναι η ίδια εργασία που έκανα πριν λίγες μέρες για τη σχολή :p.

Αυτό που έκανα εγώ είναι να φτιάξω ένα class word, το οποίο έχει μέσα ένα Boolean για το αν έχει χρησιμοποιηθεί η λέξη ή όχι και ένα method που την ανακατεύει. Κάθε φορά που έπαιρνα μια λέξη, τσέκαρα αν το Boolean είναι true, αν ναι, έπαιρνα ξανά, μέχρι να βρω λέξη που να μην έχει χρησιμοποιηθεί. 

Έτσι θα το έκανα και εγώ, αλλά με την προϋπόθεση ότι το ανακάτεμα που λες, θα γινόταν μόνο μία φορά στο array με τα αντικείμενα, τις λέξεις δηλαδή. Γιατί αν κάθε φορά ανακάτευες και έπαιρνες, μπορεί να είχες θέμα, αν ήταν  πάρα πολλά τα αντικείμενα που είχαν ήδη επιλεχθεί.

Επεξ/σία από Lanike71
Δημοσ.

Το πρόβλημα είχε τεθεί και παλιότερα ως πρόβλημα scrabble

Έχουμε δηλαδή ένα σακουλάκι με γράμματα και κάθε παίκτης τραβάει 7. Τα γράμματα πρέπει να αφαιρεθούν από το σακούλι.

Πιό εύκολα κατανοητό γίνεται για τον αντρικό πλυθησμό με τράπουλα όπου ανεξάρτητα το παιχνίδι που παίζεις τα φύλλα που παίρνει κάποιος παίκτης πρέπει να αφαιρεθούν από την τράπουλα.

Φυσικά και μπορεί να γίνει με δείκτες και με Booleans σε ξεχωριστό πίνακα για κάθε λέξη, μόνο που γίνεται πιο περίπλοκο και σε μερικές περιπτώσεις όπως αυτή που λέει ο Aztec δεν λύνεται

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...