Created
February 11, 2012 08:14
-
-
Save lfzawacki/1797762 to your computer and use it in GitHub Desktop.
Coding Dojo Garoa/Matehackers Campus Party
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
def lugar_vazio(bathroom): | |
pmetade=bathroom[:len(bathroom)/2] | |
smetade=bathroom[len(bathroom)/2:] | |
if bathroom[0]==0: | |
return 0 | |
elif bathroom[-1]==0: | |
return len(bathroom)-1 | |
elif bathroom[(len(bathroom)-1)/2]==0: | |
return (len(bathroom)-1)/2 | |
else: | |
countinicio=0 | |
countfim=0 | |
for i in range ((len(bathroom)-1)/2): | |
if bathroom[i]==1: | |
countinicio+=1 | |
for i in range ((len(bathroom)-1)/2,0): | |
if bathroom[i]==1: | |
countfim+=1 | |
if countinicio>countfim: | |
return lugar_vazio(smetade) | |
else: | |
return lugar_vazio(pmetade) | |
def fill_bathroom(bathroom): | |
if (len(bathroom) % 2)==0: | |
maxi = len(bathroom)/2 | |
else: | |
maxi = (len(bathroom)+1)/2 | |
total = bathroom.count(1) | |
if total == maxi: | |
return None | |
if total == 0: | |
bathroom[0] = 1 | |
elif total == 1 and len(bathroom) > 2: | |
bathroom[len(bathroom) - 1] = 1 | |
elif total == 2 and len(bathroom) > 3: | |
bathroom[len(bathroom)/2] = 1 | |
return bathroom |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import unittest | |
from mic import * | |
class MictoriumTest(unittest.TestCase): | |
def testOneMictorium(self): | |
bathroom = [0] | |
occupied = fill_bathroom(bathroom) | |
self.assertEquals(occupied, [1]) | |
def testTwoMictoriumsAndOnePerson(self): | |
bathroom = [0,0] | |
occupied = fill_bathroom(bathroom) | |
self.assertEquals(occupied, [1,0]) | |
def testTwoMictoriumsAndTwoPeople(self): | |
bathroom = [1,0] | |
occupied = fill_bathroom(bathroom) | |
self.assertEquals(occupied, None) | |
def testThreeMictoriumAndOnePerson(self): | |
bathroom = [0,0,0] | |
occupied = fill_bathroom(bathroom) | |
self.assertEquals(occupied, [1,0,0]) | |
def testThreeMictoriumsAndTwoPeople(self): | |
bathroom = [1,0,0] | |
occupied = fill_bathroom(bathroom) | |
self.assertEquals(occupied, [1,0,1]) | |
def testTheeMictoriumsAndThreePeople(self): | |
bathroom = [1,0,1] | |
occupied = fill_bathroom(bathroom) | |
self.assertEquals(occupied, None) | |
def testFiveMictoriumsAndOnePerson(self): | |
bathroom = [0,0,0,0,0] | |
occupied = fill_bathroom(bathroom) | |
self.assertEquals(occupied, [1,0,0,0,0]) | |
def testFiveMictoriumsAndTwoPeople(self): | |
bathroom = [1,0,0,0,0] | |
occupied = fill_bathroom(bathroom) | |
self.assertEquals(occupied, [1,0,0,0,1]) | |
def testFiveMictoriumsAndThreePeople(self): | |
bathroom = [1,0,0,0,1] | |
occupied = fill_bathroom(bathroom) | |
self.assertEquals(occupied, [1,0,1,0,1]) | |
def testFourMictoriumsAndThreePeople(self): | |
bathroom = [1, 0, 0, 1] | |
occupied = fill_bathroom(bathroom) | |
self.assertEquals(occupied, None) | |
def testFiveMictoriumsAndFourPeople(self): | |
bathroom = [1,0,1,0,1] | |
occupied = fill_bathroom(bathroom) | |
self.assertEquals(occupied, None) | |
def testTwentyfourMictoriumsAndFivePeople(self): | |
bathroom = [1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,1] | |
occupied=fill_bathroom(bathroom) | |
self.assertEquals(occupied, [1,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,1]) | |
unittest.main() |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment