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

Αλγόριθμος ζάρι


k33theod

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

Προσπαθώ να  λύσω το εξής πρόβλημα

https://py.checkio.org/mission/unfair-dice/

 

Το περιγράφω λίγο γιατί είναι δυσνόητο

 

Ο αντίπαλος έχει 1 ζάρι όχι με έξι έδρες αλλά με όσες θέλει και όχι με στανταρ τιμές σε κάθε έδρα αλλά ότι 

αυτός θέλει

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

πρέπει να έχει ίδιο αριθμό εδρών και το άθροισμα των τιμών να είναι το ίδιο

πχ ο αντίπαλος έχει ένα ζάρι με τρείς έδρες με τιμές έστω 1,1,3 το δικό που πρέπει να έχει 3 έδρες και άθροισμα τιμών 1+1+3 εάν δηλαδή το δικό μου έχει τιμές 2,2,1 έχω περισσότερες πιθανότητες να κερδίσω

 

 

Σκέφτηκα αρχικά πως αν έχω μεγαλύτερη τιμή σε πάνω από τις μισές έδρες νικάω αλλά δεν μου βγαίνει πάντα πχ στο 1,2,3,4,5,6 εάν εγώ έχω 2,3,4,5 οι τιμές που μου μένουν είναι με άθροισμα 7 και εάν βάλω 1,6 έχω το ίδιο ζάρι ενώ εάν βάλω άλλες τιμές 3 και 4 πχ νομίζω οι πιθανότητες είναι ίδιες. 

Αν μεγαλώσω τις μέγιστες τιμές του δηλάδη έχω 4,5,6,7 πρέπει στις άλλες πλευρές να βάλω 1,1 και είμαι πάλι στα ίδια.

 

Έχω την εντύπωση πως αν οι τιμές είναι συνεχομένες δεν μπορείς να τον νικήσεις αλλά μόνο να έχεις 50/50 

Καμία ιδέα; 

κάπου με τις πιθανότητες το χάνω

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

  • Απαντ. 33
  • Δημ.
  • Τελ. απάντηση

Συχνή συμμετοχή στο θέμα

Δημοφιλείς Ημέρες

Έχω την εντύπωση πως αν οι τιμές είναι συνεχομένες δεν μπορείς να τον νικήσεις αλλά μόνο να έχεις 50/50 

Καμία ιδέα; 

κάπου με τις πιθανότητες το χάνω

 

Το [3,3,3,1] νικάει το [1,2,3,4]

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Προσπαθώ να  λύσω το εξής πρόβλημα

https://py.checkio.org/mission/unfair-dice/

 

Το περιγράφω λίγο γιατί είναι δυσνόητο

 

Ο αντίπαλος έχει 1 ζάρι όχι με έξι έδρες αλλά με όσες θέλει και όχι με στανταρ τιμές σε κάθε έδρα αλλά ότι 

αυτός θέλει

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

πρέπει να έχει ίδιο αριθμό εδρών και το άθροισμα των τιμών να είναι το ίδιο

πχ ο αντίπαλος έχει ένα ζάρι με τρείς έδρες με τιμές έστω 1,1,3 το δικό που πρέπει να έχει 3 έδρες και άθροισμα τιμών 1+1+3 εάν δηλαδή το δικό μου έχει τιμές 2,2,1 έχω περισσότερες πιθανότητες να κερδίσω

 

 

Σκέφτηκα αρχικά πως αν έχω μεγαλύτερη τιμή σε πάνω από τις μισές έδρες νικάω αλλά δεν μου βγαίνει πάντα πχ στο 1,2,3,4,5,6 εάν εγώ έχω 2,3,4,5 οι τιμές που μου μένουν είναι με άθροισμα 7 και εάν βάλω 1,6 έχω το ίδιο ζάρι ενώ εάν βάλω άλλες τιμές 3 και 4 πχ νομίζω οι πιθανότητες είναι ίδιες. 

Αν μεγαλώσω τις μέγιστες τιμές του δηλάδη έχω 4,5,6,7 πρέπει στις άλλες πλευρές να βάλω 1,1 και είμαι πάλι στα ίδια.

 

Έχω την εντύπωση πως αν οι τιμές είναι συνεχομένες δεν μπορείς να τον νικήσεις αλλά μόνο να έχεις 50/50 

Καμία ιδέα; 

κάπου με τις πιθανότητες το χάνω

Όπως το βλέπω και εγώ ναι, έτσι γίνεται.

 

Για να κερδίζεις πρέπει να μοιράσεις τα παραπάνω ποντάκια για να είσαι τουλάχιστον (βασικά ακριβώς θέλει) +1 απο τις περισσότερες έδρες του, και να βάλεις πολύ μικρά νούμερα αναγκαστικά σε κάποιες έδρες (ιδανικό 1) για να έχεις ίσο άθροισμα συνολικά.

 

Προφανώς με συνεχόμενα νούμερα καταλήγεις στο ίδιο ζάρι.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Δεν είναι οι συνεχόμενοι αλλά τα κενά (στην αρχή ή ενδιάμεσα) που θα σου δώσουν ευκαιρία για καλύτερες πιθανότητες, πχ δε σε νοιάζει αν είναι 3,4,5 γιατί με 5,5,2 κερδίζεις.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Το [3,3,3,1] νικάει το [1,2,3,4]

Έχεις δίκιο

 

Επιπρόσθετα με μπερδεύουν κάποια στοιχεία που δίνει που λέει ας πούμε

winning_die([3, 3, 3, 3, 6, 6]) == [4, 4, 4, 4, 4, 4] # Or [3, 3, 4, 4, 5, 5] ενώ εμένα η δεύτερη λύση μου φένεται ισοπαλία

όπως και αυτό

winning_die([2, 3, 4, 5, 6, 7]) == [1, 1, 3, 7, 7, 8] # This can be beat though.

που άν αφαιρέσουμε τα κοινά στοιχεία μένουν 2,4,5,6 και 1,1,7,8 που μου φένεται πάλι ισσοπαλία

Ίσως χάνω κάτι από την εκφώνηση

ή δεν είναι σωστό το σκεπτικό μου για τις πιθανότητες

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες


let decideWinner = (a, => {
let awins = 0,bwins = 0;
for(let i=0;i<a.length;i++) {
for(let ii = 0;ii<b.length;ii++) {
if(a[i] > b[ii]) {
awins ++;
} else if (a[i] < b[ii]) {
bwins ++;
}
}
}

return {awins: awins, bwins:bwins};
}

let c = [3, 3, 3, 3, 6, 6];
let d = [4, 4, 4, 4, 4, 4];
let e = [3, 3, 4, 4, 5, 5];
let f = [2, 3, 4, 5, 6, 7];
let g = [1, 1, 3, 7, 7, 8];

console.log(decideWinner(c,e));//{ awins: 12, bwins: 16 }
console.log(decideWinner(c,d));//{ awins: 12, bwins: 24 }
console.log(decideWinner(f,g));//{ awins: 16, bwins: 17 }

  • Like 2
Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Δεν είναι γιατί αλλάζουν οι πιθανότητες


let decideWinner = (a, => {
	let awins = 0,bwins = 0;
	for(let i=0;i<a.length;i++) {
		for(let ii = 0;ii<b.length;ii++) {
			if(a[i] > b[ii]) {
				awins ++;
			} else if (a[i] < b[ii]) {
				bwins ++;
			}
		}
	}

	return {awins: awins, bwins:bwins};
}

let c = [3, 3, 3, 3, 6, 6];
let d = [4, 4, 4, 4, 4, 4];
let e = [3, 3, 4, 4, 5, 5];
let f = [2, 3, 4, 5, 6, 7];
let g = [1, 1, 3, 7, 7, 8];

console.log(decideWinner(c,e));//{ awins: 12, bwins: 16 }
console.log(decideWinner(c,d));//{ awins: 12, bwins: 24 }
console.log(decideWinner(f,g));//{ awins: 16, bwins: 17 }

 

Αν δεν κάνω λάθος αυτός είναι ο αλγόριθμος για την σύκριση , ο TS θέλει τον αλγόριθμο για την κατασκευή του ζαριού που θα νικάει το πρώτο , σωστά?

 

Ωραίο προβληματάκι πάντος :)

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Ναι απλά και εγώ έπαιζα τώρα και ήθελα να δείξω (αν είναι σωστό το σκεπτικό μου) ότι δεν ισχύει ο προβληματισμός του για την εκφώνηση, σκέψεις μοιράζομαι :)

  • Like 1
Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

let decideWinner = (a, => {
	let awins = 0,bwins = 0;
	for(let i=0;i<a.length;i++) {
		for(let ii = 0;ii<b.length;ii++) {
			if(a[i] > b[ii]) {
				awins ++;
			} else if (a[i] < b[ii]) {
				bwins ++;
			}
		}
	}

	return {awins: awins, bwins:bwins};
}

let c = [3, 3, 3, 3, 6, 6];
let d = [4, 4, 4, 4, 4, 4];
let e = [3, 3, 4, 4, 5, 5];
let f = [2, 3, 4, 5, 6, 7];
let g = [1, 1, 3, 7, 7, 8];

console.log(decideWinner(c,e));//{ awins: 12, bwins: 16 }
console.log(decideWinner(c,d));//{ awins: 12, bwins: 24 }
console.log(decideWinner(f,g));//{ awins: 16, bwins: 17 }

Αυτό πιστεύω ότι είναι ευχαριστώ Δεν θα το σκεφτόμουν ότι οι πιθανότητες βγαίνουν έτσι

Τώρα που κατάλαβα πως βγαίνει ο νικητής θα κάνω τον αλγόριθμο να τον βρίσκω

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Δεν ξέρω αν είναι σωστή λύση (είμαι σκράπας στα μαθηματικά η αλήθεια είναι) απλά επειδή μου άρεσε σαν πρόβλημα και το ψάχνω, μάλλον πρέπει να αναπτύξεις έναν τύπο για να βρείς τις πιθανότητες και να παίξεις με αυτό.

 

Η λύση του alou κάνει σύγκριση στους αριθμούς που έχει κάθε πλευρά και αποφασίζει τον νικητή , δεν βλέπω να λαμβάνει υπόψιν την πιθανότητα που έχει κάθε αριθμός να βγεί

 

Σωστά?

 

Αυπνία θα μου προκαλέσεις ,άσε που ξαναβλέπω τύπους και καταλαβαίνω ότι έχω ξεχάσει τα πάντα :)

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Δεν ξέρω αν είναι σωστή λύση (είμαι σκράπας στα μαθηματικά η αλήθεια είναι) απλά επειδή μου άρεσε σαν πρόβλημα και το ψάχνω, μάλλον πρέπει να αναπτύξεις έναν τύπο για να βρείς τις πιθανότητες και να παίξεις με αυτό.

 

Η λύση του alou κάνει σύγκριση στους αριθμούς που έχει κάθε πλευρά και αποφασίζει τον νικητή , δεν βλέπω να λαμβάνει υπόψιν την πιθανότητα που έχει κάθε αριθμός να βγεί

 

Σωστά?

 

Αυπνία θα μου προκαλέσεις ,άσε που ξαναβλέπω τύπους και καταλαβαίνω ότι έχω ξεχάσει τα πάντα :)

Η λύση του alou πιστεύω είναι σωστή έτσι πρέπει να υπολογίζονται οι πιθανότητες. 

Το μόνο που μένει να παράγουμε τον αριθμός που νικάει (αν υπάρχει)

αν όχι σήμερα  αύριο πιστεύω θα το βρώ  :X  (ας μη λεω πολλά)

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Στο link που έβαλες

 

winning_die([3, 3, 3, 3, 6, 6]) == [4, 4, 4, 4, 4, 4] # Or [3, 3, 4, 4, 5, 5]

 

Αυτό σημαίνει ότι θα έχουν το ίδιο αποτέλεσμα? 

Είναι ακριβώς το παράδειγμα του alou

 

console.log(decideWinner(c,e));//{ awins: 12, bwins: 16 }

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Προσπαθώ να  λύσω το εξής πρόβλημα

https://py.checkio.org/mission/unfair-dice/

 

Το περιγράφω λίγο γιατί είναι δυσνόητο

 

Ο αντίπαλος έχει 1 ζάρι όχι με έξι έδρες αλλά με όσες θέλει και όχι με στανταρ τιμές σε κάθε έδρα αλλά ότι 

αυτός θέλει

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

πρέπει να έχει ίδιο αριθμό εδρών και το άθροισμα των τιμών να είναι το ίδιο

πχ ο αντίπαλος έχει ένα ζάρι με τρείς έδρες με τιμές έστω 1,1,3 το δικό που πρέπει να έχει 3 έδρες και άθροισμα τιμών 1+1+3 εάν δηλαδή το δικό μου έχει τιμές 2,2,1 έχω περισσότερες πιθανότητες να κερδίσω

 

 

Σκέφτηκα αρχικά πως αν έχω μεγαλύτερη τιμή σε πάνω από τις μισές έδρες νικάω αλλά δεν μου βγαίνει πάντα πχ στο 1,2,3,4,5,6 εάν εγώ έχω 2,3,4,5 οι τιμές που μου μένουν είναι με άθροισμα 7 και εάν βάλω 1,6 έχω το ίδιο ζάρι ενώ εάν βάλω άλλες τιμές 3 και 4 πχ νομίζω οι πιθανότητες είναι ίδιες. 

Αν μεγαλώσω τις μέγιστες τιμές του δηλάδη έχω 4,5,6,7 πρέπει στις άλλες πλευρές να βάλω 1,1 και είμαι πάλι στα ίδια.

 

Έχω την εντύπωση πως αν οι τιμές είναι συνεχομένες δεν μπορείς να τον νικήσεις αλλά μόνο να έχεις 50/50 

Καμία ιδέα; 

κάπου με τις πιθανότητες το χάνω

Γιατι να εχεις μεγαλυτερες τιμες στις μισες εδρες; Ο σκοπος ειναι να εχεις μεγαλυτερη πιθανοτητα απο τον αντιπαλο.

 

Αυτο που θες ειναι περισσοτερες εδρες νικης απο τον αντιπαλο. Για να το πετυχεις αυτο, θες μια εδρα που να χανει απο ολες τις εδρες του αντιπαλου.

Πχ αν ο αντιπαλος εχει 1,2,3,4 και εσυ 1,2,3,4

Τοτε οι πιθανότητες ειναι 50-50

Εαν ομως εχεις 1,3,3,3

Τοτε εχεις 50% να κεδρισεις και 25% να χασεις.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

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

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

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

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

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

Σύνδεση

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

Συνδεθείτε τώρα

  • Δημιουργία νέου...