Why does index error appear?

Asked 2 years ago, Updated 2 years ago, 21 views

Obviously, the minimum value of mn is 8, so 8 - 7 is 1 and 1 - 0 is 1, but I don't know why

stwiwh = [['W','B','W','B','W','B','W','B'],['B','W','B','W','B','W','B','W'],['W','B','W','B','W','B','W','B'],['B','W','B','W','B','W','B','W'],['W','B','W','B','W','B','W','B'],['B','W','B','W','B','W','B','W'],['W','B','W','B','W','B','W','B'],['B','W','B','W','B','W','B','W']]
stwibl = [['B','W','B','W','B','W','B','W'],['W','B','W','B','W','B','W','B'],['B','W','B','W','B','W','B','W'],['W','B','W','B','W','B','W','B'],['B','W','B','W','B','W','B','W'],['W','B','W','B','W','B','W','B'],['B','W','B','W','B','W','B','W'],['W','B','W','B','W','B','W','B']]
mnn = input()
m = int(mnn.split()[0])
n = int(mnn.split()[1])
counter = 0
board = []
# Below is for submission
while counter == m - 1 :
  line = input()
  board.append([])
  for a in range(0,len(line)) :
    board[counter].append(line[a])
  counter += 1
min = 2501
# Below is for testing purposes
#board = [['B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B'],['B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B'],['B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B'],['B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B'],['B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B'],['B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B'],['B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B'],['B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B'],['B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','W']]
alp = m - 7
bet = n - 7
for a in range(0,alp) :
  for b in range(0,bet) :
    whcounter = 0
    blcounter = 0
    done = False
    al = a + 8
    be = b + 8
    stancouY = -1
    stancouX = -1
    for c in range(a,al) :
      if done == True :
        break
      stancouY += 1
      stancouX = -1
      for d in range(b,be) :
        stancouX += 1   
        if board[c][d] != stwiwh[stancouY][stancouX] :
          whcounter += 1
        if board[c][d] != stwibl[stancouY][stancouX] :
          blcounter += 1
        if whcounter > min and blcounter > min :
          done = True
    if whcounter < min or blcounter < min :
        if whcounter < blcounter :
          min = whcounter
        else :
          min = blcounter

if min == 2501 :
  print(0)
else :
  print(min) 

What's even more strange is that

for e in range(8,51) :

  for f in range(8,51) :
    a = str(e)
    b = str(f)

    stwiwh = [['W','B','W','B','W','B','W','B'],['B','W','B','W','B','W','B','W'],['W','B','W','B','W','B','W','B'],['B','W','B','W','B','W','B','W'],['W','B','W','B','W','B','W','B'],['B','W','B','W','B','W','B','W'],['W','B','W','B','W','B','W','B'],['B','W','B','W','B','W','B','W']]
    stwibl = [['B','W','B','W','B','W','B','W'],['W','B','W','B','W','B','W','B'],['B','W','B','W','B','W','B','W'],['W','B','W','B','W','B','W','B'],['B','W','B','W','B','W','B','W'],['W','B','W','B','W','B','W','B'],['B','W','B','W','B','W','B','W'],['W','B','W','B','W','B','W','B']]
    mnn = a + ' ' + b
    print('mnn :',mnn)
    m = int(mnn.split()[0])
    n = int(mnn.split()[1])
    counter = 0
    board = []
    # Below is for submission
    for a in range(0,m) :
        board.append([])
        for b in range(0,n):
            board[a].append('W')
    min = 2501
# Below is for testing purposes
#board = [['B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B'],['B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B'],['B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B'],['B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B'],['B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B'],['B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B'],['B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B'],['B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B'],['B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','B','W']]
    alp = m - 7
    bet = n - 7
    for a in range(0,alp) :
      for b in range(0,bet) :
        whcounter = 0
        blcounter = 0
        done = False
        al = a + 8
        be = b + 8
        stancouY = -1
        stancouX = -1
        for c in range(a,al) :
          if done == True :
            break
          stancouY += 1
          stancouX = -1
          for d in range(b,be) :
            stancouX += 1   
            if board[c][d] != stwiwh[stancouY][stancouX] :
              whcounter += 1
            if board[c][d] != stwibl[stancouY][stancouX] :
              blcounter += 1
            if whcounter > min and blcounter > min :
              done = True
        if whcounter < min or blcounter < min :
            if whcounter < blcounter :
              min = whcounter
            else :
              min = blcounter

    if min == 2501 :
      print(0)
    else :
      print(min) 

If you run these codes, you won't get any errors. What's the problem?

python

2022-09-20 10:39

1 Answers

counter = 0
board = []
# Below is for submission
while counter == m - 1 :

If counter = 0, counter == m-1 is false


2022-09-20 10:39

If you have any answers or tips


© 2024 OneMinuteCode. All rights reserved.