Assignment Kirolosmaged 202100238 AI
Assignment Kirolosmaged 202100238 AI
Assignment Kirolosmaged 202100238 AI
Id: 202100238
import numpy as np
import math
import time
def actions_array(array):
goal = np.array([1,2,3,4,5,6,7,8,0]).reshape(3,3)
possible_actions = []
new_arrays = {}
for i in range(len(array)):
for j in range(len(array)):
if array[i][j] == 0:
#for moving up
if i > 0:
up_array = array.copy()
up_array[i][j], up_array[i-1][j] = up_array[i-1][j],
up_array[i][j]
if not np.array_equal(up_array, start):
new_arrays["up"] = up_array
return new_arrays
return s
def main():
run = True
prev_step = []
array = start.copy()
ola = None
count = 0
tic = time.time()
while run:
h={}
act = actions_array(array)
for keys, values in act.items():
h[keys]=h_value(values)
if not prev_step:
prev_step.append(['start_array', array])
else:
for i in range(len(prev_step)):
if np.array_equal(act[r], prev_step[i][1]):
#check if the 2nd value in dic is = to the lowest or not
#we are taking only the top two smallest
new_h = list(new_dic.items())[1]
r, v = new_h[0], new_h[1]
if np.array_equal(act[r], goal):
print("\n")
print('''Problem Solved !. Steps included are : \n''')
prev_step.append([res[0], act[r]])
for i in prev_step:
print(i[0])
print(i[1])
print("\n")
run = False
toc = time.time()
print("Total number of steps: " + str(count))
print("Total amount of time in search: " + str(toc - tic) + "
second(s)")
else:
prev_step.append([r, act[r]])
ola = act[r]
# prev_step[res[0]] = act[res[0]]
count+=1
main()
output:
Q2 : connect four
def create_board():
return [[0 for _ in range(7)] for _ in range(6)]
def print_board(board):
for row in board[::-1]:
print("|", end="")
for cell in row:
print(" {} ".format(cell or " "), end="")
print("|")
print("+---" * 7 + "+")
def main():
board = create_board()
player_turn = 1
game_over = False
if check_win(board, player_turn):
print_board(board)
print("Player {} wins!".format(player_turn))
game_over = True
else:
player_turn = 3 - player_turn
if __name__ == "__main__":
main()
output: