Skip to main content
Loading...

More Python Posts

import random
import time

def generate_maze(width, height):
    """Generate a random maze using depth-first search"""
    maze = [[1 for _ in range(width)] for _ in range(height)]
    
    def carve(x, y):
        maze[y][x] = 0
        directions = [(1, 0), (-1, 0), (0, 1), (0, -1)]
        random.shuffle(directions)
        
        for dx, dy in directions:
            nx, ny = x + dx*2, y + dy*2
            if 0 <= nx < width and 0 <= ny < height and maze[ny][nx] == 1:
                maze[y + dy][x + dx] = 0
                carve(nx, ny)
    
    carve(1, 1)
    maze[0][1] = 0  # Entrance
    maze[height-1][width-2] = 0  # Exit
    return maze

def print_maze(maze, path=None):
    """Print the maze with ASCII characters"""
    if path is None:
        path = []
    
    for y in range(len(maze)):
        for x in range(len(maze[0])):
            if (x, y) in path:
                print('◍', end=' ')
            elif maze[y][x] == 0:
                print(' ', end=' ')
            else:
                print('▓', end=' ')
        print()

def solve_maze(maze, start, end):
    """Solve the maze using recursive backtracking"""
    visited = set()
    path = []
    
    def dfs(x, y):
        if (x, y) == end:
            path.append((x, y))
            return True
        
        if (x, y) in visited or maze[y][x] == 1:
            return False
            
        visited.add((x, y))
        path.append((x, y))
        
        for dx, dy in [(1, 0), (-1, 0), (0, 1), (0, -1)]:
            if dfs(x + dx, y + dy):
                return True
                
        path.pop()
        return False
    
    dfs(*start)
    return path

# Generate and solve a maze
width, height = 21, 11  # Should be odd numbers
maze = generate_maze(width, height)
start = (1, 0)
end = (width-2, height-1)

print("Generated Maze:")
print_maze(maze)

print("\nSolving Maze...")
time.sleep(2)
path = solve_maze(maze, start, end)

print("\nSolved Maze:")
print_maze(maze, path)
from itertools import product
V='∀'
E='∃'


def tt(f,n) :
  xss=product((0,1),repeat=n)
  print('function:',f.__name__)
  for xs in xss : print(*xs,':',int(f(*xs)))
  print('')

# p \/ (q /\ r) = (p \/ q) /\ (p \/ r)

def prob1(p,q,r) :
  x=p or (q and r)
  y= (p or q) and (p or r)
  return x==y

tt(prob1,3)

# p/\(q\/r)=(p/\q)\/(p/\r)

def prob2(p,q,r) :
  x=p and ( q or r )
  y=(p and q) or (p and r)
  return x==y

tt(prob2,3)

#~(p/\q)=(~p\/~q)

def prob3(p,q) :
  x=not (p and q)
  y=(not p) or (not q)
  return x==y
tt(prob3,2)

#(~(p\/q))=((~p)/\~q)

def prob4(p, q):
   x = not(p or q)
   y = not p and not q
   return x == y

tt(prob4, 2)

#(p/\(p=>q)=>q)

def prob5(p,q):
  x= p and ( not p or q)
  return not x or q
    
tt(prob5,2)

# (p=>q)=((p\/q)=q)

def prob6(p,q) :
  x = (not p or q)
  y=((p or q) == q)
  return x==y
 
tt(prob6,2)


#((p=>q)=(p\/q))=q
def prob7(p,q):
  if ((not p or q)==(p or q))==q:
    return 1
 
tt(prob7,2)



#(p=>q)=((p/\q)=p)
def prob8(p,q):
  if (not p or q)==((p and q)==p):
    return 1
 
tt(prob8,2)


#((p=>q)=(p/\q))=p

def prob9(p,q):
  if ((not p or q)==(p and q))==p:
    return '1'

tt(prob9,2)



#(p=>q)/\(q=>r)=>(p=>r)
def prob10(p,q,r) :
  x = not ((not p or q) and (not q or r)) or (not p or r)
  return x
 
tt(prob10, 3)


# (p = q) /\ (q => r)  => (p => r)
#answer 1
def prob11(p,q,r) :
  x = not((p is q) and (not q or r)) or (not p or r)
  return x
 
tt(prob11, 3)

#(p=q)/\(q=>r)=>(p=>r)
#answer 2
def prob11(p,q,r):
  x=(p==q) and (not q or r)
  y=not p or r
  return not x or y

tt(prob11,3)

#((p=>q)/\(q=r))=>(p=>r)

def prob12(p,q,r):
  x=(not p or q) and ( q==r )
  y=not p or r
  return not x or y

tt(prob12,3)

#(p=>q)=>((p/\r)=>(q/\r))

def prob13(p,q,r):
  x=not p or q
  y=(not(p and r) or ( q and r))
  return not x or y

tt(prob13,3)

#Question#2----------------------------------------

#(p=>q)=>r=p=>(q=>r)

def prob14(p,q,r):
  x=(not(not p or q) or r)
  y=(not p or (not q or r))
  return x==y

tt(prob14,3) 


def prob15(p, q):
    x = not(p and q)
    y = not p and not q
    return x == y

tt(prob15, 2)


def prob16(p, q):
    x = not(p or q)
    y = not p or not q
    return x == y

tt(prob16, 2)



def prob17(p):
    x = p
    y = not p
    return x == y

tt(prob17, 1)