stavros1925 Δημοσ. 13 Φεβρουαρίου 2018 Δημοσ. 13 Φεβρουαρίου 2018 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 Kercyn Δημοσ. 13 Φεβρουαρίου 2018 Moderators Δημοσ. 13 Φεβρουαρίου 2018 Θες να σου επιστρέφει μια τυχαία λέξη αλλά αυτή που σου επιστρέφει να μην την έχει ξαναεπιστρέψει; Αν κατάλαβα σωστά, μπορείς να κρατάς μια λίστα με το index των λέξεων που έχουν ήδη επιστραφεί, και μετά να παίρνεις random αριθμούς μέχρι ο αριθμός που παίρνεις να μην υπάρχει ήδη στη λίστα σου.
NickSym Δημοσ. 13 Φεβρουαρίου 2018 Δημοσ. 13 Φεβρουαρίου 2018 Φτιάξε έναν πίνακα με τόσες θέσεις όσες και οι λέξεις σου, θέσε σε αυτόν τις τιμές 0...words_length και κάνε τυχαία swap μεταξύ 2 indexes, τόσα όσα θεωρείς ότι θα τοποθετήσουν τους αριθμούς σε τυχαίες θέσεις. Μετά σειριακά από τον πίνακα αυτόν, με index 0...words_length παίρνεις το περιεχόμενο τους και το χρησιμοποιείς ως index στον πίνακα λέξεων σου. 1
the other one Δημοσ. 15 Φεβρουαρίου 2018 Δημοσ. 15 Φεβρουαρίου 2018 array permutation δεν έχει έτοιμο η java; θα το καλείς μια φορά να χεις ένα seed και μετά θα τα τραβάς ένα-ένα...
Aztec Δημοσ. 20 Φεβρουαρίου 2018 Δημοσ. 20 Φεβρουαρίου 2018 Στις 2/13/2018 στις 5:55 ΜΜ, Kercyn είπε Θες να σου επιστρέφει μια τυχαία λέξη αλλά αυτή που σου επιστρέφει να μην την έχει ξαναεπιστρέψει; Αν κατάλαβα σωστά, μπορείς να κρατάς μια λίστα με το index των λέξεων που έχουν ήδη επιστραφεί, και μετά να παίρνεις random αριθμούς μέχρι ο αριθμός που παίρνεις να μην υπάρχει ήδη στη λίστα σου. Πολύ κακη λύση ... Αν υποθέσουμε ότι έχουμε μια λίστα με 100 λέξεις και περισσεύει μια θα βαράς iterations μέχρι να μην υπάρχει ας πούμε ο index 13 που απομενει ? Το πρόβλημα εντείνεται όσο μεγαλώνει η λίστα των λέξεων . Έχω χρησιμοποιήσει αυτή την μέθοδο που λες σε παιχνίδι φιδακι . Κρατούσα τα σημεία του φιδιού και όταν ήταν να βγάλω φαγητό κοιτούσα να μην πέφτουν πάνω στο φιδακι . Guess what ! Όταν έμειναν καμιά δεκαριά κενά σημεία στην οθόνη το παιχνίδι κόλλησε 1
Moderators Kercyn Δημοσ. 20 Φεβρουαρίου 2018 Moderators Δημοσ. 20 Φεβρουαρίου 2018 5 ώρες πριν, Aztec είπε Πολύ κακη λύση ... Αν υποθέσουμε ότι έχουμε μια λίστα με 100 λέξεις και περισσεύει μια θα βαράς iterations μέχρι να μην υπάρχει ας πούμε ο index 13 που απομενει ? Το πρόβλημα εντείνεται όσο μεγαλώνει η λίστα των λέξεων . Έχω χρησιμοποιήσει αυτή την μέθοδο που λες σε παιχνίδι φιδακι . Κρατούσα τα σημεία του φιδιού και όταν ήταν να βγάλω φαγητό κοιτούσα να μην πέφτουν πάνω στο φιδακι . Guess what ! Όταν έμειναν καμιά δεκαριά κενά σημεία στην οθόνη το παιχνίδι κόλλησε Τόσο άσχημα ε; Oh well, τότε καλύτερα να μη χρησιμοποιήσει αυτή
pmav99 Δημοσ. 20 Φεβρουαρίου 2018 Δημοσ. 20 Φεβρουαρίου 2018 Αυτό που λέει ο "the other one" είναι η σωστή απάντηση.
Dinos_12345 Δημοσ. 21 Φεβρουαρίου 2018 Δημοσ. 21 Φεβρουαρίου 2018 Κάτι μου λέει ότι είναι η ίδια εργασία που έκανα πριν λίγες μέρες για τη σχολή :p. Αυτό που έκανα εγώ είναι να φτιάξω ένα class word, το οποίο έχει μέσα ένα Boolean για το αν έχει χρησιμοποιηθεί η λέξη ή όχι και ένα method που την ανακατεύει. Κάθε φορά που έπαιρνα μια λέξη, τσέκαρα αν το Boolean είναι true, αν ναι, έπαιρνα ξανά, μέχρι να βρω λέξη που να μην έχει χρησιμοποιηθεί.
pmav99 Δημοσ. 21 Φεβρουαρίου 2018 Δημοσ. 21 Φεβρουαρίου 2018 a = [1, 2, 3, 4, 5].shuffle a.pop a.pop a.pop a.pop a.pop a.pop # returns Nil b = [1, 1, 1, 2, 2, 3].uniq.shuffle b.pop b.pop b.pop b.pop # returns Nil 1 1
Lanike71 Δημοσ. 22 Φεβρουαρίου 2018 Δημοσ. 22 Φεβρουαρίου 2018 (επεξεργασμένο) 14 ώρες πριν, Dinos_12345 είπε Κάτι μου λέει ότι είναι η ίδια εργασία που έκανα πριν λίγες μέρες για τη σχολή :p. Αυτό που έκανα εγώ είναι να φτιάξω ένα class word, το οποίο έχει μέσα ένα Boolean για το αν έχει χρησιμοποιηθεί η λέξη ή όχι και ένα method που την ανακατεύει. Κάθε φορά που έπαιρνα μια λέξη, τσέκαρα αν το Boolean είναι true, αν ναι, έπαιρνα ξανά, μέχρι να βρω λέξη που να μην έχει χρησιμοποιηθεί. Έτσι θα το έκανα και εγώ, αλλά με την προϋπόθεση ότι το ανακάτεμα που λες, θα γινόταν μόνο μία φορά στο array με τα αντικείμενα, τις λέξεις δηλαδή. Γιατί αν κάθε φορά ανακάτευες και έπαιρνες, μπορεί να είχες θέμα, αν ήταν πάρα πολλά τα αντικείμενα που είχαν ήδη επιλεχθεί. Επεξ/σία 22 Φεβρουαρίου 2018 από Lanike71
k33theod Δημοσ. 22 Φεβρουαρίου 2018 Δημοσ. 22 Φεβρουαρίου 2018 Το πρόβλημα είχε τεθεί και παλιότερα ως πρόβλημα scrabble Έχουμε δηλαδή ένα σακουλάκι με γράμματα και κάθε παίκτης τραβάει 7. Τα γράμματα πρέπει να αφαιρεθούν από το σακούλι. Πιό εύκολα κατανοητό γίνεται για τον αντρικό πλυθησμό με τράπουλα όπου ανεξάρτητα το παιχνίδι που παίζεις τα φύλλα που παίρνει κάποιος παίκτης πρέπει να αφαιρεθούν από την τράπουλα. Φυσικά και μπορεί να γίνει με δείκτες και με Booleans σε ξεχωριστό πίνακα για κάθε λέξη, μόνο που γίνεται πιο περίπλοκο και σε μερικές περιπτώσεις όπως αυτή που λέει ο Aztec δεν λύνεται
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα