Skip to content

Commit 8cbec50

Browse files
committed
solves all chapter 6 problems
1 parent fd5eb03 commit 8cbec50

File tree

8 files changed

+437
-0
lines changed

8 files changed

+437
-0
lines changed

Chapter 6/problems/Problem6_32.py

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
import random
2+
def manhattan(rows, col):
3+
grid = []
4+
direction = ['N', 'S', 'E', 'W']
5+
for a in range(rows):
6+
grid.append([])
7+
for i in range(col):
8+
grid[a].append(0)
9+
positiony = rows//2
10+
positionx = col//2
11+
choice = ''
12+
while positiony > 0 and positiony <= rows-1 and positionx > 0 and positionx <= col-1:
13+
grid[positiony][positionx] += 1
14+
choice = random.choice(direction)
15+
if choice == 'N':
16+
positiony -= 1
17+
elif choice == 'S':
18+
positiony += 1
19+
elif choice == 'E':
20+
positionx += 1
21+
elif choice == 'W':
22+
positionx -= 1
23+
for line in grid:
24+
print(line)

Chapter 6/problems/Problem6_33.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
import random
2+
def diceprob(roll):
3+
rolls = 0
4+
total = 0
5+
while rolls != 100:
6+
dice1, dice2 = random.randrange(1, 7),random.randrange(1, 7)
7+
if dice1 + dice2 == roll:
8+
rolls += 1
9+
total += 1
10+
print('It took {} rolls to get 100 rolls of {}'.format(total, roll))
11+

Chapter 6/problems/Problem6_34a.py

Lines changed: 171 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,171 @@
1+
import random
2+
def war():
3+
battles = 0
4+
wars = 0
5+
twowar = 0
6+
choice1 = 0
7+
choice2 = 0
8+
wardeck1 = []
9+
wardeck2 = []
10+
baralho = [14, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,
11+
14, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,
12+
14, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,
13+
14, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13]
14+
random.shuffle(baralho)
15+
player1 = []
16+
player2 = []
17+
for i in range(len(baralho)):
18+
if i < (len(baralho)//2) - 1:
19+
player1.append(baralho[i])
20+
else:
21+
player2.append(baralho[i])
22+
while len(player1) != 0 or len(player2) != 0:
23+
if len(player1) == 0 or len(player2) == 0:
24+
break
25+
elif player1[-1] > player2[-1]:
26+
random.shuffle(player1)
27+
player1.insert(0, player2[-1])
28+
player2.pop()
29+
battles += 1
30+
elif player2[-1] > player1[-1]:
31+
random.shuffle(player2)
32+
player2.insert(0, player1[-1])
33+
player1.pop()
34+
battles += 1
35+
else:
36+
wars += 1
37+
war = True
38+
if len(player1) > 3 or len(player2) > 3:
39+
if len(player1) < len(player2):
40+
for i in range(-2, -len(player1), -1):
41+
wardeck1.append(player1[i])
42+
wardeck2.append(player2[i])
43+
else:
44+
for i in range(-2, -len(player2), -1):
45+
wardeck1.append(player1[i])
46+
wardeck2.append(player2[i])
47+
elif len(player1) < 2 or len(player2) < 2:
48+
wardeck1.append(player1[-1])
49+
wardeck2.append(player2[-1])
50+
elif len(player1) <= 3 or len(player2) <= 3:
51+
if len(player1) < len(player2):
52+
for i in range(-len(player1), 0):
53+
wardeck1.append(player1[i])
54+
wardeck2.append(player2[i])
55+
else:
56+
for i in range(-len(player2), 0):
57+
wardeck1.append(player1[i])
58+
wardeck2.append(player2[i])
59+
while war == True:
60+
if len(player1) == 0 or len(player2) == 0:
61+
war = False
62+
break
63+
if len(wardeck1) > 0 and len(wardeck2) > 0:
64+
choice1 = random.choice(wardeck1)
65+
choice2 = random.choice(wardeck2)
66+
elif len(wardeck1) == 0 or len(wardeck2) == 0:
67+
war = False
68+
break
69+
if choice1 > choice2:
70+
if len(player2) > 4:
71+
for i in range(-1, -4, -1):
72+
random.shuffle(player1)
73+
player1.insert(0, player2[i])
74+
player2.remove(player2[i])
75+
elif len(player2) < 2 :
76+
random.shuffle(player1)
77+
player1.insert(0, player2[-1])
78+
player2.pop()
79+
elif len(player2) <= 3 :
80+
for i in range(-(len(player2)), 0):
81+
random.shuffle(player1)
82+
player1.insert(0, player2[i])
83+
player2.pop()
84+
battles += 1
85+
war = False
86+
elif choice2 > choice1:
87+
if len(player1) > 4:
88+
for i in range(-1, -4, -1):
89+
random.shuffle(player2)
90+
player2.insert(0, player1[i])
91+
player1.remove(player1[i])
92+
elif len(player1) < 2 :
93+
random.shuffle(player1)
94+
player2.insert(0, player1[-1])
95+
player1.pop()
96+
elif len(player1) <= 3 :
97+
for i in range(-(len(player1)), 0):
98+
random.shuffle(player2)
99+
player2.insert(0, player1[i])
100+
player1.pop()
101+
battles += 1
102+
war = False
103+
else:
104+
if len(wardeck1) > 0 and len(wardeck2) > 0:
105+
wardeck1.remove(choice1)
106+
wardeck2.remove(choice2)
107+
battles += 1
108+
else:
109+
twowar += 1
110+
if len(player1) > 7 or len(player2) > 7:
111+
for i in range(-5, -8, -1):
112+
wardeck1.append(player1[i])
113+
wardeck2.append(player2[i])
114+
elif len(player1) < 2 or len(player2) < 2:
115+
wardeck1.append(player1[-1])
116+
wardeck2.append(player2[-1])
117+
elif len(player1) <= 3 or len(player2) <= 3:
118+
if len(player1) < len(player2):
119+
for i in range(-len(player1), 0):
120+
wardeck1.append(player1[i])
121+
wardeck2.append(player2[i])
122+
else:
123+
for i in range(-len(player2), 0):
124+
wardeck1.append(player1[i])
125+
wardeck2.append(player2[i])
126+
choice1 = random.choice(wardeck1)
127+
choice2 = random.choice(wardeck2)
128+
if choice1 > choice2:
129+
if len(player2) > 3:
130+
for i in range(-1, -4, -1):
131+
random.shuffle(player1)
132+
player1.insert(0, player2[i])
133+
player2.remove(player2[i])
134+
elif len(player2) < 2 :
135+
random.shuffle(player1)
136+
player1.insert(0, player2[-1])
137+
player2.pop()
138+
elif len(player2) <= 3 :
139+
for i in range(-(len(player2)), 0):
140+
random.shuffle(player1)
141+
player1.insert(0, player2[i])
142+
player2.pop()
143+
battles += 1
144+
war = False
145+
elif choice2 > choice1:
146+
if len(player1) > 3:
147+
for i in range(-1, -4, -1):
148+
random.shuffle(player2)
149+
player2.insert(0, player1[i])
150+
player1.remove(player1[i])
151+
elif len(player1) < 2 :
152+
random.shuffle(player1)
153+
player2.insert(0, player1[-1])
154+
player1.pop()
155+
elif len(player1) <= 3 :
156+
for i in range(-(len(player1)), 0):
157+
random.shuffle(player2)
158+
player2.insert(0, player1[i])
159+
player1.pop()
160+
battles += 1
161+
war = False
162+
else:
163+
if len(wardeck1) > 0 and len(wardeck2) > 0:
164+
wardeck1.remove(choice1)
165+
wardeck2.remove(choice2)
166+
battles += 1
167+
168+
wardeck1.clear()
169+
wardeck2.clear()
170+
result = (battles, wars, twowar)
171+
return result

Chapter 6/problems/Problem6_34b.py

Lines changed: 172 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,172 @@
1+
import random
2+
def warStats(n):
3+
battles = 0
4+
wars = 0
5+
twowar = 0
6+
choice1 = 0
7+
choice2 = 0
8+
wardeck1 = []
9+
wardeck2 = []
10+
for a in range(n):
11+
baralho = [14, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,
12+
14, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,
13+
14, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,
14+
14, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13]
15+
random.shuffle(baralho)
16+
player1 = []
17+
player2 = []
18+
for i in range(len(baralho)):
19+
if i < (len(baralho)//2) - 1:
20+
player1.append(baralho[i])
21+
else:
22+
player2.append(baralho[i])
23+
while len(player1) != 0 or len(player2) != 0:
24+
if len(player1) == 0 or len(player2) == 0:
25+
break
26+
elif player1[-1] > player2[-1]:
27+
random.shuffle(player1)
28+
player1.insert(0, player2[-1])
29+
player2.pop()
30+
battles += 1
31+
elif player2[-1] > player1[-1]:
32+
random.shuffle(player2)
33+
player2.insert(0, player1[-1])
34+
player1.pop()
35+
battles += 1
36+
else:
37+
wars += 1
38+
war = True
39+
if len(player1) > 3 or len(player2) > 3:
40+
if len(player1) < len(player2):
41+
for i in range(-2, -len(player1), -1):
42+
wardeck1.append(player1[i])
43+
wardeck2.append(player2[i])
44+
else:
45+
for i in range(-2, -len(player2), -1):
46+
wardeck1.append(player1[i])
47+
wardeck2.append(player2[i])
48+
elif len(player1) < 2 or len(player2) < 2:
49+
wardeck1.append(player1[-1])
50+
wardeck2.append(player2[-1])
51+
elif len(player1) <= 3 or len(player2) <= 3:
52+
if len(player1) < len(player2):
53+
for i in range(-len(player1), 0):
54+
wardeck1.append(player1[i])
55+
wardeck2.append(player2[i])
56+
else:
57+
for i in range(-len(player2), 0):
58+
wardeck1.append(player1[i])
59+
wardeck2.append(player2[i])
60+
while war == True:
61+
if len(player1) == 0 or len(player2) == 0:
62+
war = False
63+
break
64+
if len(wardeck1) > 0 and len(wardeck2) > 0:
65+
choice1 = random.choice(wardeck1)
66+
choice2 = random.choice(wardeck2)
67+
elif len(wardeck1) == 0 or len(wardeck2) == 0:
68+
war = False
69+
break
70+
if choice1 > choice2:
71+
if len(player2) > 4:
72+
for i in range(-1, -4, -1):
73+
random.shuffle(player1)
74+
player1.insert(0, player2[i])
75+
player2.remove(player2[i])
76+
elif len(player2) < 2 :
77+
random.shuffle(player1)
78+
player1.insert(0, player2[-1])
79+
player2.pop()
80+
elif len(player2) <= 3 :
81+
for i in range(-(len(player2)), 0):
82+
random.shuffle(player1)
83+
player1.insert(0, player2[i])
84+
player2.pop()
85+
battles += 1
86+
war = False
87+
elif choice2 > choice1:
88+
if len(player1) > 4:
89+
for i in range(-1, -4, -1):
90+
random.shuffle(player2)
91+
player2.insert(0, player1[i])
92+
player1.remove(player1[i])
93+
elif len(player1) < 2 :
94+
random.shuffle(player1)
95+
player2.insert(0, player1[-1])
96+
player1.pop()
97+
elif len(player1) <= 3 :
98+
for i in range(-(len(player1)), 0):
99+
random.shuffle(player2)
100+
player2.insert(0, player1[i])
101+
player1.pop()
102+
battles += 1
103+
war = False
104+
else:
105+
if len(wardeck1) > 0 and len(wardeck2) > 0:
106+
wardeck1.remove(choice1)
107+
wardeck2.remove(choice2)
108+
battles += 1
109+
else:
110+
twowar += 1
111+
if len(player1) > 7 or len(player2) > 7:
112+
for i in range(-5, -8, -1):
113+
wardeck1.append(player1[i])
114+
wardeck2.append(player2[i])
115+
elif len(player1) < 2 or len(player2) < 2:
116+
wardeck1.append(player1[-1])
117+
wardeck2.append(player2[-1])
118+
elif len(player1) <= 3 or len(player2) <= 3:
119+
if len(player1) < len(player2):
120+
for i in range(-len(player1), 0):
121+
wardeck1.append(player1[i])
122+
wardeck2.append(player2[i])
123+
else:
124+
for i in range(-len(player2), 0):
125+
wardeck1.append(player1[i])
126+
wardeck2.append(player2[i])
127+
choice1 = random.choice(wardeck1)
128+
choice2 = random.choice(wardeck2)
129+
if choice1 > choice2:
130+
if len(player2) > 3:
131+
for i in range(-1, -4, -1):
132+
random.shuffle(player1)
133+
player1.insert(0, player2[i])
134+
player2.remove(player2[i])
135+
elif len(player2) < 2 :
136+
random.shuffle(player1)
137+
player1.insert(0, player2[-1])
138+
player2.pop()
139+
elif len(player2) <= 3 :
140+
for i in range(-(len(player2)), 0):
141+
random.shuffle(player1)
142+
player1.insert(0, player2[i])
143+
player2.pop()
144+
battles += 1
145+
war = False
146+
elif choice2 > choice1:
147+
if len(player1) > 3:
148+
for i in range(-1, -4, -1):
149+
random.shuffle(player2)
150+
player2.insert(0, player1[i])
151+
player1.remove(player1[i])
152+
elif len(player1) < 2 :
153+
random.shuffle(player1)
154+
player2.insert(0, player1[-1])
155+
player1.pop()
156+
elif len(player1) <= 3 :
157+
for i in range(-(len(player1)), 0):
158+
random.shuffle(player2)
159+
player2.insert(0, player1[i])
160+
player1.pop()
161+
battles += 1
162+
war = False
163+
else:
164+
if len(wardeck1) > 0 and len(wardeck2) > 0:
165+
wardeck1.remove(choice1)
166+
wardeck2.remove(choice2)
167+
battles += 1
168+
169+
wardeck1.clear()
170+
wardeck2.clear()
171+
result = (battles/n, wars/n, twowar/n)
172+
return result

Chapter 6/problems/Problem6_35.py

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
import random
2+
def game(n):
3+
number1 = 0
4+
number2 = 0
5+
correct = 0
6+
for i in range(n):
7+
number1 = random.randrange(0, 9)
8+
number2 = random.randrange(0, 9)
9+
answer = int(input('{} + {} ='.format(number1, number2)))
10+
if answer == (number1 + number2):
11+
correct += 1
12+
print('Correct.')
13+
else:
14+
print('Incorrect.')
15+
print('You got {} correct answers out of {}'.format(correct, n))

0 commit comments

Comments
 (0)