본문 바로가기
Programming/Python

[python] 지뢰 찾기 (Minesweeper) - 이중 배열

by NAMP 2015. 10. 27.

이중 배열


# 배열를 선언합니다. 

map = []       


# append 함수를 통해서 다시 배열을 추가 합니다.

map.append([])


# 접근은 인덱스를 통해 가능합니다.

map[1][2]



file = 'p002.Minesweeper.in'
f = open(file, 'r')


def getCount(map, r, c, h, w):
    cnt = 0

    for rowOffset in range(-1,2):
        for colOffset in range(-1,2):
            if rowOffset == 0 and colOffset == 0:
                continue
            row = r + rowOffset
            col = c + colOffset
            if row < 0 or row > h-1 or col <0 or col > w-1:
                continue
            if map[row][col] == '*':
                cnt += 1
    return cnt


idx = 0
while 1:
    line = f.readline().strip()
    #print 'line is ' + line
    if line == '0 0':
        break

    idx += 1
    map = []
    h, w = [int(x) for x in line.split()]

    for row in xrange(h):
        line = f.readline().strip()
        map.append(list(line))

    print "Field #{0}".format(idx)
    for r in xrange(h):
        pRow = ""
        for c in xrange(w):
            if map[r][c] == '*':
                cnt = '*'
            else:
                cnt = getCount(map, r, c, h, w)
            pRow += str(cnt)
        print pRow

    print


입력 데이터는 아래와 같습니다.


4 4

*...

....

.*..

....

3 5

**...

.....

.*...

0 0



출력


Field #1

*100

2210

1*10

1110


Field #2

**100

33200

1*100


댓글