Posts

Showing posts with the label recursion

turtle triangle fun

Image
Just Wrote this piece of code. First just copy-paste the code, run and have fun. Then try to write it yourself and have more fun. :) import turtle def draw_triangle(side_length, depth): if depth == 0: return counter = 0 while counter < 3: counter += 1 brad.forward(side_length/2) if depth > 1: brad.left(120) draw_triangle(side_length/2, depth-1) brad.forward(side_length/2) brad.right(120) brad.left(240) if __name__ == "__main__": window = turtle.Screen() window.bgcolor("white") brad = turtle.Turtle() brad.shape("turtle") brad.color("green", "green") brad.speed(5) brad.begin_fill() brad.right(120) brad.forward(128) brad.left(120) brad.forward(256) brad.left(120) brad.forward(256) brad.left(120) brad.forward(128) brad.left(120) brad.end_...

generate all subsets using recursion | how to

Yesterday I wrote another program to generate all subsets of a set (array / list) during my preparation for today's class on backtracking at National Programming Camp. I wrote the code in C but just converted it into Python for the readers of the blog, so that they can understand and appreciate the beauty of recursion / backtracking. taken = [] def process(X): print X def generate_all_subsets(li, X, i, k, m): process(X[0:i]) for j in range(k, m): if taken[j] == False: if i > 0: if li[j] <= X[i-1]: continue taken[j] = True X.append(li[j]) generate_all_subsets(li, X, i+1, j+1, m) taken[j] = False X.pop(i) if __name__ == "__main__": li = [1, 2, 3, 4] X = [] taken.extend([False, False, False, False]) generate_all_subsets(li,...

generate permutation using recursion | how to

Here is a Python program to generate all permutations using recursion. I just wrote the code while preparing for a class in national programming camp. If you study it carefully, you will have some idea about backtracking. taken = [] def process(X): print X def recurse(li, X, i, n): if i == n: process(X[0:i]) else: for j in range(0, n): if taken[j] == False: taken[j] = True X.append(li[j]) recurse(li, X, i+1, n) taken[j] = False X.pop(i) if __name__ == "__main__": li = [1, 2, 3, 4] X = [] taken.extend([False, False, False, False]) print taken recurse(li, X, 0, li.__len__())