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
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 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 |
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() |