Brick

1001

กำหนดให้ input[i][j]input[i][j] เป็น array สองมิติที่บ่งบอกถึงสถานะเริ่มต้นของเกม ซึ่งมาจากการแบ่งข้อมูลนำเข้าเป็นแต่ละ char แล้วนำใส่ char[][]

ในทางคล้ายๆกัน เราจะนิยาม result[i][j]result[i][j] เป็น array สองมิติที่บ่งบอกทถึงสถานะตอนท้ายของเกมเมื่อโปรแกรมทำงานเสร็จ ฉนั้น resultresult จะเท่ากับ inputinput เมื่อโปรแกรมเริ่มทำงานแล้วเราจะเปลี่ยนแปลงค่าในนี้ให้กลายเป็นสถานะตอนท้ายของเกมในที่สุด

กำหนดให้ free[i][j]free[i][j] เป็น array สองมิติที่บ่งบอกว่าในช่องที่ (i,j)(i, j) ของตารางเกมมีสิ่งกีดขวางหรือไม่ (รวมไปถึงก้อนอิฐที่อยู่ในตำแหน่งนั้นอยู่แล้ว)

Pseudocode ของอัลกอริทึมในการวางก้อนอิฐจะเป็นดังนี้:

for i in [1, n]:
	for j in [1, m]:
		result[i][j] = input[i][j]
		free[i][j] = true

for j in [1, m]:
	let i = 1
	while i <= n and free[i][j]:
		i += 1
	free[i][j] = false
	result[i][j] = '#'

print(result)