Presentation is loading. Please wait.

Presentation is loading. Please wait.

Spring 2015.  Evolving Lists & Lights On!  Caesar Cipher  Looks Good!

Similar presentations


Presentation on theme: "Spring 2015.  Evolving Lists & Lights On!  Caesar Cipher  Looks Good!"— Presentation transcript:

1 Spring 2015

2  Evolving Lists & Lights On!  Caesar Cipher  Looks Good!

3  encipher(S, n)  Rotates the string S by n characters  Example:  encipher('AbC', 2) returns 'CdE'  encipher('xYz', 4) returns 'bCd'  decipher(S)  Retrieve the original string from an enciphered version (with unknown rotation)

4  Recursion  Rotate character individually  Rules:  Lower-case → lower-case  Upper-case → upper-case  Otherwise → unchanged  Character checking:  'a' <= c <= 'z'  'A' <= c <= 'Z'  Character rotation: using ASCII values

5  ASCII values  Useful functions:  ord( ' a ' ) returns 97  chr(66) returns ' B '  Example: rotate 'b' by 22 characters: chr(ord('b') + 22) returns 'x'  Note: need to take care of wrapping around ABC…XYZ 656667…888990 abc…xyz 979899…120121122

6  Unknown number of rotation → Test 26 cases and pick out the best  Techniques:  English letter appearance probability (provided!)  Scrabble scores (roughly a reverse of the above)  Any other heuristics (i.e. rules of thumb)  Should work well on large strings

7  Create a list of all possibilities (there are 26) #['Dmc', 'End', 'Foe',...]  For each possibility, calculate the sum of the probability of the letters #[0.0766, 0.1943, 0.1802,...]  Return the one with the largest sum (using recursion? using for loop?)

8  See class web-site for set-up instruction  Goals:  Write basic image editing tools  At least 3, one from each of the following: ▪ Group 1: negative, gray scale ▪ Group 2: vertical flip, horizontal flip, vertical mirror, horizontal mirror ▪ Group 3: scale, blur, random grid

9  An image is a 2 dimensional list (i.e. list of lists) of pixels  Example: pixels = [[pixel, pixel], [pixel, pixel], [pixel, pixel]]  Note:  An image is a list of rows A row is a list of pixels  len(pixels) returns height  len(pixels[0]) returns width

10  A pixel is a tuple of 3 colors red, green, blue  Color value is from 0 to 255  Example:  (255,0,0) is red  (100,100,100) is gray  (112, 48, 160) is purple  List uses [ ], tuple uses ( )  No difference (for now)

11 pixels = [[(255,0,0), (0,255,0)], [(0,0,255), (100,100,100)], [ (0,0,0), (112,48,160)]]

12  The beginning from modifyBase import * label = "Brighten" # change this ordinal = 1  Similarity in roles to problem 1:  modify(pic) is similar to evolve(L)  setNewPixel is similar to setNewElement  In general, modifying setNewPixel is enough, but feel free to do anything else.

13  Group 1 (individual pixel):  Negative: new color value = 255 – original value  Grayscale (values of red, green & blue are equal)  Group 2 (change pixel position):  Flip/Mirror horizontally/vertically  Group 3 (using multiple pixels):  Scale  Blur: take an average of surrounding pixels  Random Grid: Use random.shuffle(L)

14 Have fun + Good luck


Download ppt "Spring 2015.  Evolving Lists & Lights On!  Caesar Cipher  Looks Good!"

Similar presentations


Ads by Google