Assignment 1: Basics of Python and Image Representation
CSE 415: Introduction to Artificial Intelligence
The University of Washington, Seattle, Autumn 2010
The reading for this assignment is Chapters 1-4 in Introduction to Python for Artificial Intelligence.
Due Friday, October 8 through Catalyst CollectIt at 2:00 PM.

You should turn in two files: (1) a file named assignment1.py of function definitions, and (2) a file a1examplesplus.txt of example calls, results and answers to questions. For the file of examples, you can use a combination of input and output together with comment lines (beginning with a pound sign) to show that you have verified each of your answers on the computer. For each function, show a demonstration on the same example shown on this page, and two additional examples: one shorter (or smaller), and one longer (or larger) and more interesting (use your imagination).
 

Defining Functions (30 points). Write Python function definitions for the following requirements (worth 5 points each, except for number 5, which is worth 10 points). You should be able to infer what each function should do by a combination of reading its name and examining the relationship between its input and ouput on the given examples. Note that the functions that accept lists as arguments must be able to handle lists of any length. For this assignment your functions do not have to validate the types of their inputs. That is, you may assume that they will be called with arguments of the proper types.
1. twelve_x_plus_1(7) -> 85

2. substitution_cipher("abc Iz this Secure?", 8) -> "ijk Qh bpqa Amkczm?"

3. triple_prods([2, 5, 1.5, 100, 3, 8, 7])  ->  [15.0, 2400, 7]

4. controlled_seq([1, 1, 0, 1, 7, -2]) -> [0, 1, 0, 3, 28, -10]

5. past_tense(['program', 'debug', 'execute', 'crash', 'repeat']) ->
 ['programmed', 'debugged', 'executed', 'crashed', 'repeated']
Use the following rules for forming the past tense of a regular verb in English: (a) If the verb ends in 'e', add 'd'. (Example: 'execute' becomes 'executed'.) (b) If the verb ends with a 'y' immediately preceded by a consonant, change the 'y' to 'i' and add 'ed'. (Example: 'try' becomes 'tried'.) (c) If the word ends in one vowel (not two vowels) followed by one consonant (but not 'y' or 'w'), then repeat the consonant and add 'ed'. (Example: 'debug' becomes 'debugged'. (d) In all other cases, add 'ed'. (Example: 'repeat' becomes 'repeated'.) You don't have to handle irregular verbs.
Generating Possibilities (10 points). Write a definition for a Python function bead_strings that takes one argument: a list that represents what beads are available, and outputs a list of all the possible strings of beads that can be constructed using all the available beads. An example input list is [['R',2],['Y',3]], which means that there are 2 red beads and 3 yellow beads. The possible strings of beads for this input are the following
'RRYYY'
'RYRYY'
'RYYRY'
'RYYYR'
'YRRYY'
'YRYRY'
'YRYYR'
'YYRRY'
'YYRYR'
'YYYRR'
Sampling Rates in Image Understanding (20 points). Do exercise 5 at the end of the "Getting Started" chapter of Pixels, Numbers, and Programs. The PixelMath software needed for this problem will become available to the class on approximately October 4. Write your answers to the questions of this exercise in the a1examplesplus.txt file that you are turning in with the sample inputs and outputs from your Python functions of the other exercises.
Updates and Corrections If necessary, updates and corrections will be posted here and mentioned in class or on the mailing list. (Note: The example for function 2 in the first part of the assignment was corrected on Sept. 30. The second parameter in the example should be 8, not 6. Also, one of the bead orderings was missing from the example in the problem on "Generating Possibilities" and has now been added.)