To give some conext to the code you'll find in the link below, I'm making a system which brute forces the game Peg Solataire. It's grid is laid out in the dictionary, and within that dictionary is a series of key's incrementing in base-seven numerals which are given a dictionary of there own containing their X and Y position in the 7x7 grid, as well as the symbol they are to be portrayed with. The '@' is an invalid position used basically for filler text in order to get that cross-shape. The 'O's are to symbolize any position that is currently both a valid position and occupied by a peg. The 'P's to symbolize any valid position not currently occupied.
In order to have a peg jump over another into an unoccupied position, I choose at random a position then check if the position with +2 to its X axis is occupied, if not, is there a peg +1 to its X axis to jump over. If so make current position 'P', the +1 position 'P'. And the +2 position that was 'P', now an 'O'.
My code instead adds +2 to what should be the 'Y' axis, and comes up with an error when I try to subtract from it (or if I add to it a negative number). Not only that, but when I add or subtract from what should be the 'Y' axis, it comes up with the same error.
Of course with the randomized co-ordinates, the KeyError: 'Value' changes. And if I only subtract once or twice, the error doesn't appear, but I need to be able to call it as many times as needed. I've only called 'switch_target()' once so you can see what outputs, but (as I said) the error occurs only after multiple callings, so increment the number of times according to your bandwidth.
The link to it is: link removed, code added below
In order to have a peg jump over another into an unoccupied position, I choose at random a position then check if the position with +2 to its X axis is occupied, if not, is there a peg +1 to its X axis to jump over. If so make current position 'P', the +1 position 'P'. And the +2 position that was 'P', now an 'O'.
My code instead adds +2 to what should be the 'Y' axis, and comes up with an error when I try to subtract from it (or if I add to it a negative number). Not only that, but when I add or subtract from what should be the 'Y' axis, it comes up with the same error.
Of course with the randomized co-ordinates, the KeyError: 'Value' changes. And if I only subtract once or twice, the error doesn't appear, but I need to be able to call it as many times as needed. I've only called 'switch_target()' once so you can see what outputs, but (as I said) the error occurs only after multiple callings, so increment the number of times according to your bandwidth.
The link to it is: link removed, code added below
from __future__ import print_function
import random
list = {
11: {'x': 1, 'y': 1, 'onScreen': '@'},
12: {'x': 1, 'y': 2, 'onScreen': '@'},
13: {'x': 1, 'y': 3, 'onScreen': 'O'},
14: {'x': 1, 'y': 4, 'onScreen': 'O'},
15: {'x': 1, 'y': 5, 'onScreen': 'O'},
16: {'x': 1, 'y': 6, 'onScreen': '@'},
17: {'x': 1, 'y': 7, 'onScreen': '@'},
21: {'x': 2, 'y': 1, 'onScreen': '@'},
22: {'x': 2, 'y': 2, 'onScreen': '@'},
23: {'x': 2, 'y': 3, 'onScreen': 'O'},
24: {'x': 2, 'y': 4, 'onScreen': 'O'},
25: {'x': 2, 'y': 5, 'onScreen': 'O'},
26: {'x': 2, 'y': 6, 'onScreen': '@'},
27: {'x': 2, 'y': 7, 'onScreen': '@'},
31: {'x': 3, 'y': 1, 'onScreen': 'O'},
32: {'x': 3, 'y': 2, 'onScreen': 'O'},
33: {'x': 3, 'y': 3, 'onScreen': 'O'},
34: {'x': 3, 'y': 4, 'onScreen': 'O'},
35: {'x': 3, 'y': 5, 'onScreen': 'O'},
36: {'x': 3, 'y': 6, 'onScreen': 'O'},
37: {'x': 3, 'y': 7, 'onScreen': 'O'},
41: {'x': 4, 'y': 1, 'onScreen': 'O'},
42: {'x': 4, 'y': 2, 'onScreen': 'O'},
43: {'x': 4, 'y': 3, 'onScreen': 'O'},
44: {'x': 4, 'y': 4, 'onScreen': 'P'},
45: {'x': 4, 'y': 5, 'onScreen': 'O'},
46: {'x': 4, 'y': 6, 'onScreen': 'O'},
47: {'x': 4, 'y': 7, 'onScreen': 'O'},
51: {'x': 5, 'y': 1, 'onScreen': 'O'},
52: {'x': 5, 'y': 2, 'onScreen': 'O'},
53: {'x': 5, 'y': 3, 'onScreen': 'O'},
54: {'x': 5, 'y': 4, 'onScreen': 'O'},
55: {'x': 5, 'y': 5, 'onScreen': 'O'},
56: {'x': 5, 'y': 6, 'onScreen': 'O'},
57: {'x': 5, 'y': 7, 'onScreen': 'O'},
61: {'x': 6, 'y': 1, 'onScreen': '@'},
62: {'x': 6, 'y': 2, 'onScreen': '@'},
63: {'x': 6, 'y': 3, 'onScreen': 'O'},
64: {'x': 6, 'y': 4, 'onScreen': 'O'},
65: {'x': 6, 'y': 5, 'onScreen': 'O'},
66: {'x': 6, 'y': 6, 'onScreen': '@'},
67: {'x': 6, 'y': 7, 'onScreen': '@'},
71: {'x': 7, 'y': 1, 'onScreen': '@'},
72: {'x': 7, 'y': 2, 'onScreen': '@'},
73: {'x': 7, 'y': 3, 'onScreen': 'O'},
74: {'x': 7, 'y': 4, 'onScreen': 'O'},
75: {'x': 7, 'y': 5, 'onScreen': 'O'},
76: {'x': 7, 'y': 6, 'onScreen': '@'},
77: {'x': 7, 'y': 7, 'onScreen': '@'}
}
# produces the Peg Grid, and outputs it
grid_list = []
def make_grid():
count = []
new_line = 0
for k, v in list.items():
new_line += 1;
count.append(v['onScreen'])
if new_line % 7 == 0:
count.append('\n')
return count
# converting from base-ten numbers to base-seven numbers for grid co-ords
def switch_target():
print(*make_grid(), sep="")
selection = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27,
28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48]
selectionCoords = [11, 12, 13, 14, 15, 16, 17, 21, 22, 23, 24, 25, 26, 27, 31, 32, 33, 34, 35, 36, 37, 41, 42, 43,
44, 45, 46, 47, 51, 52, 53, 54, 55, 56, 57, 61, 62, 63, 64, 65, 66, 67, 71, 72, 73, 74, 75, 76,
77]
choice = random.choice(selection)
coords = selectionCoords[choice]
print(choice)
print(coords)
if list[coords]['x'] <= 5:
twoOverKey = str(int(list[coords]['x']) + 2) + str(list[coords]['y']);
else:
twoOverKey = str(1) + str(1);
twoOver = list[int(twoOverKey)]['onScreen']
if list[int(coords)]['onScreen'] == '@' or list[int(coords)]['onScreen'] == 'P':
pass
elif list[int(coords)]['onScreen'] == 'O' and twoOver == 'P' and list[int(str(list[coords]['x'] + 1) + str(list[coords]['y']))]['onScreen'] == 'O':
list[int(coords)]['onScreen'] = 'P'
list[int(str(list[coords]['x'] + 1) + str(list[coords]['y']))]['onScreen'] = 'P'
list[int(twoOverKey)]['onScreen'] = 'O';
else:
pass
print(twoOverKey + ' l')
switch_target()
