Επισκέπτης Δημοσ. 9 Μαρτίου 2020 Δημοσ. 9 Μαρτίου 2020 2 ώρες πριν, archer100 είπε n=int(input('type the count of bottles:')) bottles=[bin(i)[2:] for i in range(1,n+1)] tasters_count=max([len(i) for i in bottles]) result='' for i in range(tasters_count): result+=input('Type 1 if taster-i died else type 0: ') print('The poisoned bottle is bottle:' + str(bottles.index(result))) Ένα παράδειγμα σε Python. Αν οι tasters είναι πολλοί, απλά να εισαχθεί το αποτέλεσμα σαν αλυσίδα 1 και 0, ΝΑΙ και ΟΧΙ, κλπ δεν έχει σημασία Καλο αλλα κατι δεν παει καλα ας πουμε για 11 μπουκαλια αν δωσεις 0010 δεν δουλευει
archer100 Δημοσ. 9 Μαρτίου 2020 Δημοσ. 9 Μαρτίου 2020 (επεξεργασμένο) 2 ώρες πριν, Kugashira είπε Καλο αλλα κατι δεν παει καλα ας πουμε για 11 μπουκαλια αν δωσεις 0010 δεν δουλευει To bin(2) το έβγαζε ως '10' και όχι όπως το θέλαμε '0010' (και πολύ σωστά έκανε) Πρόσθεσα μία γραμμή ακόμα, την 4η, τώρα πρέπει να δουλεύει n=int(input('type the count of bottles:')) bottles=[bin(i)[2:] for i in range(1,n+1)] tasters_count=max([len(i) for i in bottles]) bottles = ['0'*(tasters_count-len(i))+i for i in bottles] print('ok thanks, your total tasters are: ' + str(tasters_count)) result='' for i in range(tasters_count): result+=input('Type 1 if taster-i died else type 0: ') print('The poisoned bottle is bottle:' + str(bottles.index(result)+1)) Επεξ/σία 9 Μαρτίου 2020 από archer100
Επισκέπτης Δημοσ. 9 Μαρτίου 2020 Δημοσ. 9 Μαρτίου 2020 21 λεπτά πριν, archer100 είπε To bin(2) το έβγαζε ως '10' και όχι όπως το θέλαμε '0010' (και πολύ σωστά έκανε) Πρόσθεσα μία γραμμή ακόμα, την 4η, τώρα πρέπει να δουλεύει n=int(input('type the count of bottles:')) bottles=[bin(i)[2:] for i in range(1,n+1)] tasters_count=max([len(i) for i in bottles]) bottles = ['0'*(tasters_count-len(i))+i for i in bottles] print('ok thanks, your total tasters are: ' + str(tasters_count)) result='' for i in range(tasters_count): result+=input('Type 1 if taster-i died else type 0: ') print('The poisoned bottle is bottle:' + str(bottles.index(result)+1)) Ναι τωρα δουλευει κανονικα και με 21 που δοκιμασα !! ευχαριστώ !! Θα μου αρεσε να δω και μια εναλλακτική σε C
nikolaou1982 Δημοσ. 14 Απριλίου 2020 Δημοσ. 14 Απριλίου 2020 Σε matlab ειναι καπως ετσι : function PoisonedBottleLocation = PoisonedBottle(n) % n is the number of bottles you wish to have Poison = randi([1 n]) % location of poisoned bottle which you dont know about Deck = zeros([1 n]) ; % a vector with all the bottles (0 for good ones 1 for poisoned ones) Deck(Poison)=1 ; % place the poisoned bottle in the random location generated by the variable Poison Portion = [] ; % initialise an empty vector Decimation = []; % Same as above i=1; % counting variable for the loop while numel(Portion)~=1 Portion= Deck(i:end-i); % each tester tastes all bottles -1 one from the start and one from the end each iteration Decimation=[Decimation; sum(Portion)]; % column vector containing all testers 1 for dead 0 for alive i=i+1; end deadList = find(Decimation) ; % find all dead testers in the column lastdead = deadList(end) % last dead tester (super unlucky one) t1 = sum(Deck(1:numel(Deck)/2)) ; % Scan the first half of the wine deck if t1==1 PoisonedBottleLocation = lastdead % location of poisoned bottle else PoisonedBottleLocation = n - lastdead end end
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα