spring 2015. evolving lists & lights on! caesar cipher looks good!

14
Spring 2015

Upload: valerie-terry

Post on 11-Jan-2016

217 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: Spring 2015.  Evolving Lists & Lights On!  Caesar Cipher  Looks Good!

Spring 2015

Page 2: Spring 2015.  Evolving Lists & Lights On!  Caesar Cipher  Looks Good!

Evolving Lists & Lights On! Caesar Cipher Looks Good!

Page 3: Spring 2015.  Evolving Lists & Lights On!  Caesar Cipher  Looks Good!

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)

Page 4: Spring 2015.  Evolving Lists & Lights On!  Caesar Cipher  Looks Good!

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

Page 5: Spring 2015.  Evolving Lists & Lights On!  Caesar Cipher  Looks Good!

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

A B C … X Y Z

65 66 67 … 88 89 90

a b c … x y z

97 98 99 … 120 121 122

Page 6: Spring 2015.  Evolving Lists & Lights On!  Caesar Cipher  Looks Good!

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

Page 7: Spring 2015.  Evolving Lists & Lights On!  Caesar Cipher  Looks Good!

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?)

Page 8: Spring 2015.  Evolving Lists & Lights On!  Caesar Cipher  Looks Good!

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

Page 9: Spring 2015.  Evolving Lists & Lights On!  Caesar Cipher  Looks Good!

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

Page 10: Spring 2015.  Evolving Lists & Lights On!  Caesar Cipher  Looks Good!

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)

Page 11: Spring 2015.  Evolving Lists & Lights On!  Caesar Cipher  Looks Good!

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

Page 12: Spring 2015.  Evolving Lists & Lights On!  Caesar Cipher  Looks Good!

The beginningfrom modifyBase import *label = "Brighten" # change thisordinal = 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.

Page 13: Spring 2015.  Evolving Lists & Lights On!  Caesar Cipher  Looks Good!

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)

Page 14: Spring 2015.  Evolving Lists & Lights On!  Caesar Cipher  Looks Good!

Have fun + Good luck