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

Coding Challenge


Επισκέπτης

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

Επισκέπτης
Δημοσ.
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 δεν δουλευει

Δημοσ. (επεξεργασμένο)
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))

 

Επεξ/σία από archer100
Επισκέπτης
Δημοσ.
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

  • 1 μήνα μετά...
Δημοσ.

Σε 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

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

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

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

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

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

Σύνδεση

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

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