Artificial Intelligence lab
WELCOME TO EXAMHELPER20
CREATED BY "NIKHIL DOPPANI"
DO FOLLOW examhelper20
CHATBOT:
print("Simple Question and Answering Program")
print("=====================================")
print(" You may ask any one of these questions")
print("Hi")
print("How are you?")
print("Are you working?")
print("What is your name?")
print("what did you do yesterday?")
print("Quit")
while True:
question = input("Enter one question from above list:")
if question in ['hi']:
print("Hello")
elif question in ['how are you?','how do you do?']:
print("I am fine")
elif question in ['are you working?','are you doing any job?']:
print("yes. I'am working in AITS-R")
elif question in ['what is your name?']:
print("My name is Emilia")
name=input("Enter your name?")
print("Nice name and Nice meeting you",name)
elif question in ['what did you do yesterday?']:
print("I saw Bahubali 5 times")
elif question in ['quit']:
break
else:
print("I don't understand what you said")
Depth first search (DFS)
graph = { '5' : ['3','7'], '3' : ['2', '4'], '7' : ['8'], '2' : [], '4' : ['8'], '8' : [] } visited = set() def dfs(visited, graph, node): if node not in visited: print (node) visited.add(node) for neighbour in graph[node]: dfs(visited, graph, neighbour) print("Following is the Depth-First Search") dfs(visited, graph, '5')
MAGIC SQUARE:def generateSquare(n): magicSquare = [[0 for x in range(n)] for y in range(n)] i = n // 2 j = n - 1 num = 1 while num <= (n * n): if i == -1 and j == n: j = n - 2 i = 0 else: if j == n: j = 0 if i < 0: i = n - 1 if magicSquare[int(i)][int(j)]: # 2nd condition j = j - 2 i = i + 1 continue else: magicSquare[int(i)][int(j)] = num num = num + 1 j = j + 1 i = i - 1 print("Magic Square for n =", n) print("Sum of each row or column", n * (n * n + 1) // 2, "\n") for i in range(0, n): for j in range(0, n): print('%2d ' % (magicSquare[i][j]),end='') if j == n - 1: print() n = 7 generateSquare(n)
8 PUZZLE:
def solve(self, board):
dict = {}
flatten = []
for i in range(len(board)):
flatten += board[i]
flatten = tuple(flatten)
dict[flatten] = 0
if flatten == (0, 1, 2, 3, 4, 5, 6, 7, 8):
return 0
return self.get_paths(dict)
def get_paths(self, dict):
cnt = 0
while True:
current_nodes = [x for x in dict if dict[x] == cnt]
if len(current_nodes) == 0:
return -1
for node in current_nodes:
next_moves = self.find_next(node)
for move in next_moves:
if move not in dict:
dict[move] = cnt + 1
if move == (0, 1, 2, 3, 4, 5, 6, 7, 8):
return cnt + 1
cnt += 1
def find_next(self, node):
moves = {
0: [1, 3],
1: [0, 2, 4],
2: [1, 5],
3: [0, 4, 6],
4: [1, 3, 5, 7],
5: [2, 4, 8],
6: [3, 7],
7: [4, 6, 8],
8: [5, 7],
}
results = []
pos_0 = node.index(0)
for move in moves[pos_0]:
new_node = list(node)
new_node[move], new_node[pos_0] = new_node[pos_0], new_node[move]
results.append(tuple(new_node))
return results
ob = Solution()
matrix = [
[3, 1, 2],
[4, 7, 5],
[6, 8, 0]]
CRYTARITHMETIC:
def isSolvable(words, result):
mp = [-1]*(26)
used = [0]*(10)
Hash = [0]*(26)
CharAtfront = [0]*(26)
uniq = ""
for word in range(len(words)):
for i in range(len(words[word])):
ch = words[word][i]
Hash[ord(ch) - ord('A')] += pow(10, len(words[word]) - i - 1)
if mp[ord(ch) - ord('A')] == -1:
mp[ord(ch) - ord('A')] = 0
uniq += str(ch)
if i == 0 and len(words[word]) > 1:
CharAtfront[ord(ch) - ord('A')] = 1
for i in range(len(result)):
ch = result[i]
Hash[ord(ch) - ord('A')] -= pow(10, len(result) - i - 1)
if mp[ord(ch) - ord('A')] == -1:
mp[ord(ch) - ord('A')] = 0
uniq += str(ch)
if i == 0 and len(result) > 1:
CharAtfront[ord(ch) - ord('A')] = 1
mp = [-1]*(26)
return True
def solve(words, i, S, mp, used, Hash, CharAtfront):
if i == len(words):
return S == 0
ch = words[i]
val = mp[ord(words[i]) - ord('A')]
if val != -1:
return solve(words, i + 1, S + val * Hash[ord(ch) - ord('A')], mp, used, Hash, CharAtfront)
x = False
for l in range(10):
if CharAtfront[ord(ch) - ord('A')] == 1 and l == 0:
continue
if used[l] == 1:
continue
mp[ord(ch) - ord('A')] = l
used[l] = 1
x |= solve(words, i + 1, S + l * Hash[ord(ch) - ord('A')], mp, used, Hash, CharAtfront)
mp[ord(ch) - ord('A')] = -1
used[l] = 0
return x
arr = [ "SIX", "SEVEN", "SEVEN" ]
S = "TWENTY"
if isSolvable(arr, S):
print("Yes")
else:
print("No")
HILL CLIMBING:import random
def randomSolution(tsp):
cities = list(range(len(tsp)))
solution = []
for i in range(len(tsp)):
randomCity = cities[random.randint(0, len(cities) - 1)]
solution.append(randomCity)
cities.remove(randomCity)
return solution
def routeLength(tsp, solution):
routeLength = 0
for i in range(len(solution)):
routeLength += tsp[solution[i - 1]][solution[i]]
return routeLength
def getNeighbours(solution):
neighbours = []
for i in range(len(solution)):
for j in range(i + 1, len(solution)):
neighbour = solution.copy()
neighbour[i] = solution[j]
neighbour[j] = solution[i]
neighbours.append(neighbour)
return neighbours
def getBestNeighbour(tsp, neighbours):
bestRouteLength = routeLength(tsp, neighbours[0])
bestNeighbour = neighbours[0]
for neighbour in neighbours:
currentRouteLength = routeLength(tsp, neighbour)
if currentRouteLength < bestRouteLength:
bestRouteLength = currentRouteLength
bestNeighbour = neighbour
return bestNeighbour, bestRouteLength
def hillClimbing(tsp):
currentSolution = randomSolution(tsp)
currentRouteLength = routeLength(tsp, currentSolution)
neighbours = getNeighbours(currentSolution)
bestNeighbour, bestNeighbourRouteLength = getBestNeighbour(tsp, neighbours)
while bestNeighbourRouteLength < currentRouteLength:
currentSolution = bestNeighbour
currentRouteLength = bestNeighbourRouteLength
neighbours = getNeighbours(currentSolution)
bestNeighbour, bestNeighbourRouteLength = getBestNeighbour(tsp, neighbours)
return currentSolution, currentRouteLength
def main():
tsp = [
[0, 400, 500, 300],
[400, 0, 300, 500],
[500, 300, 0, 400],
[300, 500, 400, 0]
]
print(hillClimbing(tsp))
if __name__ == "__main__":
main()WATER JUG:
j1 = 0
j2 = 0
x = 4
y = 3
print("Initial state = (0,0)")
print("Capacities = (4,3)")
print("Goal state = (2,y)")
while j1 != 2:
r = int(input("Enter rule"))
if(r == 1):
j1 = x
elif(r == 2):
j2 = y
elif(r == 3):
j1 = 0
elif(r == 4):
j2 = 0
elif(r == 5):
t = x - j1
j1 = x
j2 = j2-t
if(j2<0):
j2=0
elif(r == 6):
t = y - j2
j2 = y
j1 = j1-t
if(j1<0):
j1=0
elif(r == 7):
j1 = j1+j2
j2 = 0
if(j1>x):
j1=x
elif(r == 8):
j2 = j1+j2
j1 = 0
if(j2>y):
j2=y
print(j1,j2)
Comments
Post a Comment