ࡱ> ` U-bjbjss 2^'%+4448ld\,r8(`(. qqqqqqqsh8q/#!q/#/#Oho, /4_!kLqq0,r[kv}"vovo !!/#!!!!!qq/#!!!,r!!!!$ $ CSE 142, Summer 2008 Programming Assignment #6: Baby Names (20 points) Due: Friday, August 8, 2008, 11:00 PM Special thanks to Stanford lecturer Nick Parlante for the original concept of this assignment! also see:  HYPERLINK "http://www.peggyorenstein.com/articles/2003_baby_names.html" http://www.peggyorenstein.com/articles/2003_baby_names.html This assignment focuses on reading input data from files. Turn in a file named BabyNames.java. You will also need DrawingPanel.java, which you used on previous assignments. Program Description: Every 10 years, the Social Security Administration gives data about the 1000 most popular boy and girl names for children born in the US. This data is provided on the web at  HYPERLINK "http://www.ssa.gov/OACT/babynames/" http://www.ssa.gov/OACT/babynames/. Your task in this program is to prompt the user for a name, and then to display the name's meaning and popularity statistics about that name for each decade since 1900. You will display the data as console text and as a graphical bar chart on a DrawingPanel. The input data about names' popularity rankings and meanings comes from two input files provided on our web site. Your program gives an introduction and then prompts the user for a first name. It reads a file searching for that name, case-insensitively (that is, you should find the name regardless of the capitalization the user uses when typing it). If the name is found in the file, you will print a line of statistics about that name's popularity in each decade. You will also look up that name's meaning in a second file and display information about its meaning. This program graphs the popularity of a name in statistics recorded since the year 1900. Type a name: lisa Lisa 0 0 0 0 464 38 1 6 31 113 298 LISA f English, German, Swedish Short form of ELIZABETH or ELISABETH.  Input Data and Files: Your program will read data from two files: names.txt: popularity rankings for each name in each decade from 1900-2000 meanings.txt: descriptions of the meanings of each name Download these files from our web site, and save them to the same directory as your program. Each line of names.txt contains a name, followed by the rank of that name in 1900, 1910, 1920, and so on. The default input file has 11 numbers per line, meaning that the last number represents the ranking in the year 2000. A rank of 1 was the most popular name that year, while a rank of 999 was not very popular. A rank of 0 means the name did not appear in the top 1000 that year at all. Here is a sample of the data: Lionel 387 344 369 333 399 386 408 553 492 829 972 Lisa 0 0 0 0 464 38 1 6 31 113 298 Lise 0 0 0 0 0 997 0 0 0 0 0 Lisette 0 0 0 0 0 0 0 816 958 0 864 "Lionel" was #387 in 1900 and is slowly decreasing. "Lisa" first made the list in 1940 and peaked in 1960 at #1. Once the user types a name, you should search each line of names.txt to see if it contains data about that name. If the name is found, you should output the line of data about the name to the console. You must then construct a DrawingPanel to graph the data. A description of the graphical output is on the next page. Your panel must exactly reproduce the window appearance of the examples for the same user input. If the name is not found, output a "not found" message and not draw any data. No DrawingPanel should appear. This program graphs the popularity of a name in statistics recorded since the year 1900. Type a name: zOIDberG "zOIDberG" not found. Though the input data shown above has 11 decades' worth of data, your program may not assume this. Your program should work properly with any number of decades of data (at least 1). Since there is a limit to the size of the DrawingPanel, you'd only be able to see data from roughly 12 decades, but your code should process as many decades' worth of data as it finds in the appropriate line of the file. Again, do not assume that there will be exactly 11 decades when writing this program. On the course website is a file named names2.txt with 8 decades of data to help you test this behavior. If the name typed by the user is found in names.txt, you should also read meanings.txt to find the meaning of that name. The line containing the name's meaning should be printed to the console and also drawn on the DrawingPanel. Every name found in names.txt is also found in meanings.txt, so you do not need to worry about a name having rankings but no meaning data. Each line of meanings.txt contains a name in upper case, followed by the name's meaning. For example: LIONEL m French Pet form of LON LISA f English, German, Swedish Short form of ELIZABETH or ELISABETH. LISE f French French short form of ELISABETH LISETTE f French French pet form of ELIZABETH Note that even though the two input files contain different data, the task of searching for a name in names.txt is very similar to the task of searching for a name in meanings.txt; both contain the name as the first token of each line. Your code should take advantage of this fact and should avoid redundancy. Graphical Output: The panel's overall size is 720x560 pixels. Its background is white. It has yellow filled rectangles along its top and bottom, each being 30 pixels tall and spanning across the entire panel, leaving an open area of 720x500 pixels in the middle. The line of data about the name's meaning appears on the panel at (0, 16). Each decade is represented by a width of 60 pixels. The bottom yellow rectangle contains black labels for each decade, at y=546. For example, the text "1900" is at (0, 546) and "1910" is at (60, 546). RankTop y1302, 3314, 532......998, 9995290530Starting at the same x-coordinate, a red bar shows the name ranking data over each decade. The bar is 30px thick (half as wide as each decade). The table at right shows the mapping between rankings and y-values of the tops of these bars. The y-values start at 30, and there is a vertical scaling factor of 2 between pixels and rankings, so you should divide a ranking by 2 when calculating its y-coordinate. For example, a ranking of 38 in 1950 results in a 30x481 bar occupying the pixels from (300, 49) through (329, 529). At the same coordinate as the top-left of each red bar, black text shows the name's rank for that decade. For example, Lisa was #38 in 1950, so "38" appears at (300, 49). A 0 rank means the name wasn't in the top 1000. No red bar should appear in such a case, and "0" should be drawn at the bottom at y=530. For example, Lisa's 0 in 1910 is drawn at (60, 530). Implementation Guidelines: We suggest you begin with the text output and file processing, then any "fixed" graphical output, and then the red bars. The 0-ranking case is particularly tricky to draw, so you may want to do this last. (Hint: Treat rank 0 as a rank of 1000.) Your program should work correctly regardless of the capitalization the user uses to type the name. If the user types "LiSa" or "lisa", you should find it even though the input files have it as "Lisa". and "LISA". Draw text labels on the DrawingPanel using the drawString method of the Graphics object. Some text you'll want to write will be ints, but you can convert them into Strings using the + operator with an empty string. For an int named n with value 100, the expression "" + n yields the string "100". To draw this at (50, 120): g.drawString("" + n, 50, 120); All text is drawn using bold "SansSerif" font, size 16. Set this using the Graphics object's setFont method: g.setFont(new Font("SansSerif", Font.BOLD, 16)); Stylistic Guidelines: You should have the following two class constants. If the constant values are changed, your output should adapt. The starting year of the input data, as an integer (default of 1900) e.g. If you change the start year to 1825, the program should assume the data comes from 1825, 1835, etc. The width of each decade on the DrawingPanel, as an integer (default of 60) e.g. If you change the width to 50, each red decade bar is 50px apart and 25px thick. The panel's width should also adjust. The original width of 720 mentioned previously really comes from 60px per decade times 12 decades. But if you change the constant to 50, the panel's width becomes 600px. We will be especially picky about redundancy. For full credit, your methods should obey these constraints: The main method should not draw on a DrawingPanel, nor read lines of input from a file (nextLine). The method that asks the user for a name must not also read lines of input from a file. Split the displaying of graphical data into at least two methods. For example, you could have one method to draw "fixed" graphics (yellow bars, decade labels) and another for graphics that come from the file (red bars, ranks). Your methods should be well-structured and avoid redundancy, and your main method should be a concise summary of the overall program. Avoid "chaining," which is when many methods call each other without ever returning to main. For this assignment you are limited to the language features in Chapters 1 through 6 of the textbook. In particular, you are not allowed to use arrays on this assignment. Follow past stylistic guidelines about indentation, line lengths, identifier names, and localizing variables, and commenting at the beginning of your program, at the start of each method, and on complex sections of code. For reference, our solution occupies ~100 lines and has 4 methods other than main.      PAGE 2 of  NUMPAGES 3  GHL\bdfjlm ! " ] ^ _   ! #  üôyuquiujhAfUh)hAf hCJ hAfCJh"n0JCJh?h"n hhAfhh0Jjh6rUhjhU h(6] hAf6] hAfCJ h)CJ hf>CJ h"nCJ hcCJ h@?CJ hf>CJ h"nCJ hAfCJ)m_  # lABD[ g & F#  gd'gd"n$a$gd,gd"n&$d%d&d'dNOPQgd=gd"n$a$$a$'-R-T-   ' ( {     ! - .  @E_clABCDY[r޿ʿʿބބh,hDh"n0JCJh"n0JCJjhQh?CJU h"nCJh=h"n5>* h?5>* h=h"nh7Oh?h=hAf0JCJhah"nhAf hAf0JjhAfUjhAfU3  0?@CDLUgt}~QZ %&'abKļhegehH\h?5h?h?0Jh? h,h,h=h,5>*h h=h,h3-0JCJh3- h7Oh"nh,h,0Jh"nh'hh=h'h,0JCJh,h"n0JCJ2gAd'TvCpgd=gd>gd,&$d%d&d'dNOPQgd7Ogd"n.7NZ&v EQ )*+5U`ν}}hLZhAfCJhLZh3-CJhLZh?CJhLZh,CJhLZhAf0JCJhD0JCJh'h'0Jh=h'h7Oh7O0Jh7Oh3-h>0Jh7Oh>0Jh>hegehege0JhegehH\ hegehege1+Kkdb$$IfTl0* t 6 0644 lae4T$$& #$/Ifa$b$gddSgdM#gd,gdM#`9:[^cfgmq~(J ȾҵܞzzzqhܕhLZhdSCJhLZhFrCJhLZhURCJhLZh![CJhLZhAfCJhLZhaCJhLZh-CJhLZhFr5CJ\aJhLZhFrCJhLZha5CJhLZh75CJhLZhFr5CJhLZh?CJhLZh+CJhLZht+CJhLZhCJ(  akd[c$$IfTl0* t 6 0644 lae4T$& #$/Ifb$gdXuaa$& #$/Ifb$gdXkdc$$IfTl0* t 6 0644 lae4T $uaa$& #$/Ifb$gdXkdMd$$IfTl0* t 6 0644 lae4T$%.2uaa$& #$/Ifb$gdXkdd$$IfTl0* t 6 0644 lae4T2359uaa$& #$/Ifb$gdXkd?e$$IfTl0* t 6 0644 lae4T9:K !!"#$ %y%upkb[YTOTgdo 2gdWgdM#gd-gd(gd?kde$$IfTl0* t 6 0644 lae4T   0 5 C J ! !!&!B!E!R!V!W!X!Y!Z!x!!!!!!!!!!4"ͻӨypghLZh uCJhLZhAfCJhLZhegeCJ\hLZh_CJ\hLZh(CJ\hLZhdSCJ\ hLZCJ\hLZhAfCJ\hLZhegeCJhLZh_CJhLZhLZCJ hLZCJhLZh(CJhLZh-CJhLZh?CJhLZhaCJhLZh7CJ(4"9">"B"J"M"""""""""/#0#;#@#A#F#G#K#Q#d##################"$%$+$/$F$L$X$Y$z${$~$$$$͹ͮͮĹhLZhHkCJhLZhW0JCJhLZhWCJhLZhAf0JCJhLZhege0JCJhLZhegeCJhLZhAfCJ hLZCJhLZhLZCJhLZh`-CJhLZh(CJhLZh uCJ6$$$$$$$$$$$$$$$$$$$$$ %#%(%3%8%:%D%S%W%_%f%i%p%w%x%Ͻƴؗؗxod[hLZh;CJhLZh7#0JCJhLZh@?CJhLZh@?0JCJhLZh7#CJhLZhHk0JCJhLZh![CJhLZh u5CJhLZho 25CJhLZho 2CJhLZhegeCJhLZho 2CJhLZh uCJhLZhHkCJhLZhW0JCJhLZhWCJhLZh u0JCJ#x%y%{%%%%%%%%%%5&6&7&:&G&Y&h&u&y&z&&&&&&&&''-'ʺʟ~sjc[cPchLZh(0JCJhLZh(5 hLZh(hLZhCJhLZhege0JCJhLZh0JCJ hLZh,bhLZh5 hLZh hLZhegehLZh5CJhLZh3-5CJhLZhege5CJ hLZCJhLZhCJhLZhegeCJhLZhAfCJhLZh;CJhLZh8mCJhLZh@?CJy%%%6&&Z(()))e*I+'-)-*-,---/-0-2-3-P-$a$ & FgdUR & Fgdygd`- & Fxgdege & FgdgdM#gd-gd;-'.'/'0'1'6'Y(Z([((((((((((((())))&)')))*)-)3)[)`)))))tmf_f hLZh![ hLZhQo hLZh)hLZhLZ0JCJ hLZhLZ hLZh+ hLZhyhLZhAf0JCJ hLZhAfhLZhAfCJhLZhyCJhLZh`-CJhLZhegeCJhLZh(CJhLZhegeCJ hLZhege hLZh(hLZh(0JCJhLZh?0JCJ$))))))**-*1*C*W*[*]*b*d*e**** +++++1+C+G+I++++++*,6,,,,¹ypghLZhCJhLZhToCJhLZhf>CJhLZhAfCJhLZh`-5CJhLZh@?5CJhLZh@?CJ hLZCJhLZhLZ0JCJhLZhLZCJ h'CJ hLZhHk hLZh( hLZh- hLZh`- hLZhege hLZhQo hLZhLZ hLZhr=&,,,!-%-&-'-(-*-+---.-0-1-3-4-:-;-<-=-A-B-L-M-N-O-Q-R-T-U-ŻŦhAfh2iv0JmHnHu hAf0JjhAf0JUh8/2jh8/2UhLZhAfCJhLZhTo0JCJhLZhToCJhLZhCJhLZh,CJP-Q-R-S-T-U-01h/R / =!"#$% DyK yK xhttp://www.peggyorenstein.com/articles/2003_baby_names.htmlDyK yK Fhttp://www.ssa.gov/OACT/babynames/BaDd *%VV>  # A"`b`,PUQlF\`n`,PUQlF\PNG  IHDR :[sRGB`-IDATx^ 񞽸D#o4AFD J hD_1\"/D_A%BP ȋG䟨܇{OM;S[3ψ3=]OU}@yy㙆}s@@i1n:O8q&GzD@vڹoޯF(ܤ$H.v)sssB@ J?5|HT:su9xd$y;o 6g?}}۷>CIja@@ Ѩef͛7^/V58Yo7l߽"l$ F`[IǴ:VǺ/Ԥ_ 춰YFڷn}iv(WijRe@@X|%W]%O>Wސǝ(ͰpӮ-?a}ʏoUh㔩{s']^~j놵=j{EKCȐ?߻СBcD " @MX9|ώ?F7X~_9=Kw ԗ?8&cW1gE4ߤY}Ytdǎ=ey@%ΒGXRZVy9cxW.zz4kXܤ~y|$)K\Ky{ v,., {m&lѢ#9.trbpM( Z`:TTDbZXTTVTXr[]q()ٴ[~)ϯ1V,/D#J0GfjjHdK.g|uo;89Ni?z٫ʫs6k]9\d& :kK!SY$s=$'VU~2Gj:U@HK@\\\"_)r5'xra e6,uɟ)sJM3G"jɒr)%e%jX0a+ I5$G˗?R2e+]y" aYރ9xg=xIdoZZp.1fݵƽA@ /fB@T@.</?*oȟ~(jCX@GRҲrR,)xM_^^weYR=˥mrƿH2*Sqn"S)Շd8;Z>O^ {;ky\5avY`W標W?YEϞSCyf^ZoBP\v~}A}U[uB{{ITL-.t5?;AA~v{Z̽ыw.rb[뜷"׵}-cu9^PpʫWq=7WbNutUg? *7ګ]۹QBIZ;S{Mz{Efg|b } *xy)+;-`1ےŀs fXFk:.u&y/8SH Ύș]vI"rgNo+cZd[+/,/\Irr=c䥼| e.G/QSJs>?,Ά*O[Mݧ}.?9oW Ȝ@9³Z޹]:u!}Tm3ϧNZm4@xsÒum׼ "v=/n{TW8#Z-O`w@ gDjS@2l&^au$e%U˚G͉XL N /$$HrͱPQR1vgf.7asy֪u șY8XJMUikN M,,QR{wS}fB{?T/|Sxޓ^}9?Yl9UQ'-TMG^yFqs<``;}ZU>Vrς5{v9:|u߃Fne5sw{u+_*3yז'q 3f&@ d/W2JKyNyD.)$^X@}Č^"^&Xx@ߨᲒQU}li~ F5YR|wY^JIY="P$!2G'_ȭߓb#.'g^zީ> u#)Sg Ś%P)1S:Џ[]Ӌޮ #.WBϞ~ݳ]Г7n>ym.͟OqΎ^xSrM -:pmc|E]J իr9qrw`m}_JZه_m[Jg3I›*PZ&Nb}zFp旛Օ lqݵ>'hԩ߰eO\RL ^ͩ‹{./ݨc99[bMn@cȿyPV" K>ya3|8s+^??wK~p\{!lA/_ +Hz#q='WXFcܙsBL'I:!3gxT`?~>%+Z⒮gcVcnK`)JNٷ?x:]ܧze CzKtv K+PpےWs^ йB=Q\@?ip䄜oF gB:w(af<5ҿ{pɟ\vzcV=EsmIt+*nHn՞z2aɯ/ӏ&ruϡ4:'sJ"J:א'x~6!HydE5yH=~递$HDyRV().rґo;/ ߰DTW9d&H,g?2䋾bM#I ސtX>rjo}L&!L,,)z\LL8g~ؙ5ri\1Q'WB]ߛ7h,?|%.#FZo(KkB!9wcVc VYoUŶK pE[I$iԸjO^~X*[PMn$L?͚6m|?3HH0㑐!@z vzw#+@ {>lT:"@YmT. _#K\dݐK!2HP*s>Y[Tݙ;ygt?L \|+ЊKQꁎ#fP-1۸_& 'xufMܫ;+y%`P}jCy[_{Ǝ#~.a'*1Rjte|Pz%?IGzXixD9 v篯u8|sdEAr_z%]H`8y+wr9qNH: @=JGF>ɑGXOW35 {#vޅU6l[m-ڴk=vjwEN|)u`ۺ+JѶI]~o,I~o%҅Q]X8 is)ubf Sb W}4q]WӺYɱaF.7zԇs)rOK&HYqy 6>u7R5r$'?_ґސ_Ϫt;n8Ѻo:gJ? 6H`&R"[[YRe3:Z}v?w^0PKǷY\)ѷC#j1TY$wq<c&=m>A{Rv_zٱǴ rTV`cq"l׃:ݎ]u -[v9pLHiu2; H ͬh.ӆW}(We3j5̎{6fڊf^~;6OhբBAػy݀rrnY#' IB8uM}?C9Ŷm['O#wmJL>; ,?_g:/"?rWv 6 Sh Z$۷3 Hj!:^7" b56d$5i"G~ u!-6Mi'BuVߌsGY٤Dò Yjӑʕoգ ~m"zrƙ`$};U{ݾZ G]㮋P'O)NdՐޯ3,6v 5)0 uXt$*g D5NDMM+ ] ϔ-Rlr>ݲi_d'Ft^:E1@ã8$VU\~FWL/*NϗL l@WXH(@2Ff:">)VrˊXWj_E2|d{F `ՈQ(cPjl />-8 -`9 oYC?Ƒ#V_sୱ8~_ WQ+GGJi /Zoqx@!uذS7{E.@( 'S7B@ &Oz 9jjΎDVXI4VX~{jT @ TTyH/IUJcoLOu Ԛ#F"\t$嫀  #پ@R.@:U@@v*?{A@@VVotdڴ *A@l>|\t]݆# @lY,f:2~hZi  @ mo:P9 i"@:&+f  #ٻ9 i"% yĚ_99H//ZR4lbʿ<ִxӹ#Qe)]iG=[WEmҥ;MʿW\|q;zJQMVzÊgjٌRggOV~} U)yWcuWJ{U%Z<챍g6llqIY'y<yoB6n|yJMJv?#sq.ᮻt%?bߑ\2UoII]SxW9 [`3h5lEӰO5T~4|$v'Vߍy}vv7 RůZ톭k7{LxH!I<ŚV={~ӻovН5K-vߗ_AۼYs 5}z|v߭v_%+Ɏk>8';έ$p ƹ2k*=r $O5Vjd -[:SeݓJKiT SzGk\j熝m)YTZ@MΎԫ{υlؠ4hPA|ct5S%_2lȽC>ȹU<vo7T]FX%1JZ.7wnHQ)̈wUsCNU3gOgʙ zi4T4m{nWYRyy6-rN9EJnXY|Xuk_Cu}SuٳV/;u UO _)(oI)itP5U\J? pgkV/qnޕ3nc}SwʾBٳݓD#3e㉳%OOV%m@ xT-aikb~ qj\vP/'TuI$ijϪe.o?|s+ Ure`)nm\V;><=V-럵]V f*z~W{n˽Ky:^=MݻWK,X_LR_|5OQȵfeMU1Z{I䛽~Ef䭄"'Uxŧ>8yH =>|6f]c.Oܵ1]5.*kY8 |{ )LacޫݓDm̔ r.݈(Va]HԻIx|2P"5K~w3E~:{.qL ҩSo2?+֧=Gu0Zrݺs?Xƻn^-_hb1J}^ʹK >Gx]QW\6IFH!s"Dq7r ="O}nXݔ5쿑SK&T' PK*ɷLzUѥ׫[;3/O݌h{BQv튫`nAs38깸Weq}u͋^Ju[+ܳ%4F&x+hbQ+MI~$~kʚG8e!xK$i-RxM%#(6F>aչ7 HI4rX;_MJ`Oe&XzNI|!7 uxE>ױۀOSc7{4ٯ֍SY؋x/TvrfȐMd~K0ن)׸kQWI}YzE_Z"rƻbWPDwxMml=_n#Y?pU~X$Wl $9/ b=dz' +.@>C~SE> >3RHib_cyrX:#S7{E.=sC~Id[r2_pW4GPrFR?cOR10Tԗ:: Pg?Uz^mFNM3E_=/2C#^?[ucK}k^ uR + a!D<3fLVucK}k${!#s[i~Ȋt#)Soy,'ޛDESS]KX# 'c@"IH@@`5tT9&@ QґDXu/f+9j7;gRi+uIt.M@Ԉ?y#ĭwL4(7&?C_~cVL%%% ڹsg#L 5G@ ͛נASJ.RZZ`Q/a͚5g}6[7HGz P$9x ˓!rvDܾ}{:kڵ/b݇uQt.U>O.G: <1cF\q1bD֭m@Nuk$"eHH#PUg|c=6d9'/Cd'fUt8PVV̮Lґ\o 2zQ4i$yg2e_-Q7?Uvt[z>v!}7n IbݙQZm. `ʔ)b(@ͪ!TpEr s{2Qyg2e^ڤIm۶fCcdɊ'9>g9sǎh./My}FrFD >\NbիQ0 !^#>h @={lذK$?bMl32ZHni/w9ꨣYf<@:,@:RW.]lxƍPֻ{7pCf-бc˗S~+C߿ʕ+O:餸 +@:놖ee˖;UKUvBecSO;E :9sN:?SlԤ%@:^ 3>UVsPVOso  #hyJ#hd(LrF^zZW #YbF 6l؜9sw.C$9sfϞ}ueTh, Et4py/Y"CJJKW\yŀ H@ ac@@ xP=   @HGR@HG@@ #)^T #l  bґG@@HHW#  Xt$+@@tm@R,@:@  @:6 ) I z@ a@@ xP=   @HGR@HG@@ #)^T #l  bґG@@ ߿E@ o͚5[n 6,((8&L&RAJHGRO @ 4hΝ}֓O>9p>СCׯ?~1c*{H:랞# f͚>{ܹuzk޼y 4:u" ,?p-*R%@:*yEBଳZv/XoI:r#G9;"e۷o^Iґl]95"]| _q1bD֭g̘Q+ƝZ@,XjU׮]v-,8p,KIJ#ٹ5 _ 5jԾ}F-#rCHWL2EYzuk#|*HGRO ^zi&Mmۦ*,,D UL@ 3"rufw@^247ґDX@ &Mjܸܪ䨣'#f͚=ɯR&@:2z*F*бc˗S~+C߿ʕ+O:$H^t HG}}֩EEE˜9'|rxT $ $,@:0@@]O! @# Q@ $ $,@:0@@]O! @# Q@ $ $,@:0@@]O! @# Q@ $ $,@:0@@]O! @# Q@ $ $,@:0@@]O! @# Q@ $ $,@:0@@]O! @# Q@ $ $,@:0@@]O! @# Q@ $ $,@:0@@]O! @# Q@ $ $,@:0@@]O! @# Q@ $ $,@:0@@]O! @# Q@ $ $,@:0@@]O! @# Q@ $ $,@:0@@]O! @# Q@ $ $,@:0@@]O! @# Q@ $ $,@:0@@]O! @# Q@ $ $,@:0@@]O! @# Q@ $ $,@:0@@]O! @# Q@ $ $,@:0@@]O! @# Q@ $ $,@:0@@]O! @# Q@ $ $,@:0@@]O! @# Q@ $ $,@:0@@]O! @# Q@ $ @ ,['?IÆ :Yf]Zb_~#8bvrߚ>},,d'3fxZH-bS @ c…*..^f{9iի%K8p੧֭{lȐ!I )ow}-t)=)ґxX@ [Fƍ~a3f-[_#N2%//E<\`cwܸqLݻE$1!@ŋۤI'@#?pXVV7mT]j{EɿrfE-))ĝYlґ$@ m&G v۵kWwԨQ/,,<Lɹ;v|#/MݯƓԦ6u!dW_}u9ȿ2(oРO?-WsO|XH7zԈeA$rڵu &!I".@2N@l֧OHnq6o|pX"Kebi3 #ih5_{qÕ{7n,..޷oߣ>:vذJYk @<#lY!0cƌ{s-Yo߾ 4XpwRYE'@Z ur*u;vr-mڴ֬iӦmV}LRv*DBt$+VswrĈwuXhQӦM߮]֯_GW.TK}@ I#I%lꫳg4h_m $^|yQQ{׭[77#U*]zE;@%@:R'*k׮_W[fذa2UoQѣGbՖ@]O"۷o'>谖3u#F^XB)^ݣ5 @] +k~D9s߿nĽ~ҹsgW΋ryyyoND@ #P%fGZy/hJJJe֚M @ sy"I#sߑ#Gvaܹ-[߉'bB@ #P%fؑKPƍK"ҽ{ŋw%N@:'@:RV) 0CΊ#sn|SOݷpqKt=5%dN9ynLtvdɔ'+2m``H~'q?ΖUz^mFN?;"Y|' ڲe9B\;Q&:׎ P k  g;;  PQo-@@ HG| ^ f:ӢEVp?_q3|kWeʹbGn&~yN>oHͺҶ˖9?B.(p:˙5+ݺ| 3 h-[#AHmCnX({gPĘ1Nvj{nĹfb)=, >].Y̘AÍcٞ6RG~[\R:sɸgޖ_ɣعPcy|_:8iݺ[RfF$6ԧ;VI˗;ɳϦOD٪+]}V QuGҶͥN>GU;H6GFiL6nlp%P;q$CIB|!mM7dePCj8Q%;={Ce[;lf=V)}(ءC}ٕO^|Z;Р3ul 6˜46~Bn3g^sM˃wCM6?thqjo Cnۆ4R>۫o/mnF9> f=mʏ_kqOGX>`zr[Vz)[szyEt$oIb+T>YjUʧ;m6n>Y/ m^T%'mY3~v۸nL 쑶m_Y"fo;o]_fHϠ>m_ v0;יiS~ZS}:rَuaQKd<e emcNmN:ufIG&'-lҡΟ_%Imc@OTٕ˞Q#sӦ<Թ61 nrj9/Wv%U]ǎU//$ $z0Ӧ8'/l[KGx:Ey3bz_ny+j][dmӝi֭#WA= ڕ+ӽͯl vې:l$͝ƢI 3uv?MݦjH6oެ>$/ef:YiHp}]{9&!1M.lW ʰNG|JF6#/TCFd<8Ğm/:l(lۆ\lRő'NF2FG.-MreLӶz=l#hoiBVU$m׭s=ʞ[|yZofǔs4H6ND'2DʹVORJ#:NԷðtħ>OwҡͲdW(ifz׭Ӷǜ9![Fm2Tm!m09m΋Uf?_raF眓ۆ9=m:$/Zo2Sʤ fV2:jO:m^V} ;oҶrZ>H#ifENzjgg}^ |56K#S(*F)lpڶ9vmö87g=m-:$5TX:]Y#u yp&u4`#ξV{\>o[fZҶr9{θqUzmSekf˶/ŶalrRKusBjg=|8m =;ghk״n^m_|${unJ5{2gr:ofU2f{ڴ=bIzA HNpw+޸I&>o%#튿>gGҶz\rZt'9f̶AHmC\wjY>J;Ʌ`}u }R}meDQilvuL1ӦqЖC_[rRɩ? %M䊻׿zzo6>Ia\tҳҰ>SdÐ}]"ifl5mvG8˗* o1Fo(Ҽ2JxeÐ=;ݝ7V{49ZA aH@ΎL}|ً] 8s@@K}{˪e=/6`@Q#'$0vR T a@@ xP=   @HGR@HG@@ #)^T #l  bґG@@HHW#  Xt$+@@ /" Ԃ/:Æ-.)9o @@@$CyRSOM\! I8vۀ=Gؑj@ ވ%@@ #I%8 T/@:RK  @RHGKp@^tz#@@ $  PHF, I I*/@@zґX@*@:T^# @# $Ut$G@8+OXE@@ xH!I< S7{E.  @|=/6`@Q#'T#d)@@@tZT! Ύ$Re@@d}IENDB`w$$If!vh55#v#v:Vl t 6 655e4Tw$$If!vh55#v#v:Vl t 6 655e4Tw$$If!vh55#v#v:Vl t 6 655e4Tw$$If!vh55#v#v:Vl t 6 655e4Tw$$If!vh55#v#v:Vl t 6 655e4Tw$$If!vh55#v#v:Vl t 6 655e4Tw$$If!vh55#v#v:Vl t 6 655e4T@@@ NormalCJ_HaJmH sH tH \@\ Heading 2$<@& 56CJOJQJ\]^JaJV@V  Heading 3$<@&5CJOJQJ\^JaJJ@J Heading 4$<@&5CJ\aJ`@`  Heading 6$ & F x*$@&5CJOJPJQJ\aJtHDA@D Default Paragraph FontVi@V  Table Normal :V 44 la (k(No List DZ@D Plain TextCJOJQJ^JaJ0O0 Code CJOJQJ2B@2 Body Textx>O!> Code Fragment CJOJQJ@O2@ Bp Paragraph$dda$CJ< @B< Footer !0U@Q0 Hyperlink>*B*4@b4 Header  !.)@q.  Page Number^O^ Heading 3 Char*5CJOJQJ\^J_HaJmH sH tH j@j Fr Table Grid7:V0RO1R DStyle Heading 3 + 13 ptxCJ^O^ DHeading 6 Char*5CJOJPJQJ\_HaJmH sH tHU%U%^m_#lABD[ g A d  ' T vCp+   $%.2359:K y6Z )!!e"I#'%)%*%,%-%/%0%2%3%P%Q%R%S%V%X 000(0000000000000# 0# 0000000000000000000000000000 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 00(0000000(00 0P 0P0 0 0 000@0h00@0h00@0h00@0h00@0@0h00d0rm_#ABD[ d ' T Cp+2359:K y6Z )!!e"I#V%j00j00j004j005j002j00b00'j00`0 0*`0 0*`0 0*b0 0*@!0lj00(j00&j0 0j0 0 <j0 0j0 0j00@0@j0 0 h00h0 0 h00b0 0#b0 0!b0"0!b0 0@!0lj0#0j00j00Gcj00 j00Hcj00 j00 h00  h00 h0!0j00j00j00j0&0 j00h00h00h00@0`00b00j0506hCh050h0500j00j00 ***- ` 4"$x%-'),U-&'()+,-g$29y%P-U- !"#$%*.T-!]'U%XX %'-!/Xb$sEOO"U+b$FFGO5ņ5;@0(  B S  ?U% OLE_LINK1 OLE_LINK2mmV%DDV%H I J K L M d h k l m n o p q r y z { | } ~  QWBFLP"&)2ip}'%'%)%)%*%*%,%-%/%0%2%3%Q%R%V%EF@T V Bz}yz/0 '%'%)%)%*%*%,%-%/%0%2%3%Q%R%V%3333333333333333#:'%'%)%)%*%*%,%-%/%0%2%3%=%A%Q%R%V%#| b}p Z~t؀"7澠^َv㐗*30j U^jo@0]"m*^p 6,,j#Ot@X]*Z/~ ԟX4ˮ<9}=0yB( 9KKr.P&L["&S(W2nwY^[r֚&;_[=fiYh24jZj*drԆz.sD^`.^`.88^8`.^`. ^`OJQJo( ^`OJQJo( 88^8`OJQJo( ^`OJQJo(hh^h`. hh^h`OJQJo(hhh^h`OJQJo(hHh88^8`OJQJ^Jo(hHoh^`OJQJo(hHh  ^ `OJQJo(hHh  ^ `OJQJ^Jo(hHohxx^x`OJQJo(hHhHH^H`OJQJo(hHh^`OJQJ^Jo(hHoh^`OJQJo(hHh hh^h`OJQJo(h 88^8`OJQJo(oh ^`OJQJo(h   ^ `OJQJo(h   ^ `OJQJo(oh xx^x`OJQJo(h HH^H`OJQJo(h ^`OJQJo(oh ^`OJQJo(h ^`OJQJo(h ^`OJQJo(oh pp^p`OJQJo(h @ @ ^@ `OJQJo(h ^`OJQJo(oh ^`OJQJo(h ^`OJQJo(h ^`OJQJo(oh PP^P`OJQJo(h^`OJQJo(hHh^`OJQJ^Jo(hHohpp^p`OJQJo(hHh@ @ ^@ `OJQJo(hHh^`OJQJ^Jo(hHoh^`OJQJo(hHh^`OJQJo(hHh^`OJQJ^Jo(hHohPP^P`OJQJo(hHh ^`OJQJo(h ^`OJQJo(oh pp^p`OJQJo(h @ @ ^@ `OJQJo(h ^`OJQJo(oh ^`OJQJo(h ^`OJQJo(h ^`OJQJo(oh PP^P`OJQJo(h hh^h`OJQJo(h 88^8`OJQJo(oh ^`OJQJo(h   ^ `OJQJo(h   ^ `OJQJo(oh xx^x`OJQJo(h HH^H`OJQJo(h ^`OJQJo(oh ^`OJQJo(h^`OJQJo(hHh^`OJQJ^Jo(hHohpp^p`OJQJo(hHh@ @ ^@ `OJQJo(hHh^`OJQJ^Jo(hHoh^`OJQJo(hHh^`OJQJo(hHh^`OJQJ^Jo(hHohPP^P`OJQJo(hHhhh^h`OJQJo(hHh88^8`OJQJ^Jo(hHoh^`OJQJo(hHh  ^ `OJQJo(hHh  ^ `OJQJ^Jo(hHohxx^x`OJQJo(hHhHH^H`OJQJo(hHh^`OJQJ^Jo(hHoh^`OJQJo(hHh hh^h`OJQJo(h 88^8`OJQJo(oh ^`OJQJo(h   ^ `OJQJo(h   ^ `OJQJo(oh xx^x`OJQJo(h HH^H`OJQJo(h ^`OJQJo(oh ^`OJQJo(h^`OJQJo(hHh^`OJQJ^Jo(hHohpp^p`OJQJo(hHh@ @ ^@ `OJQJo(hHh^`OJQJ^Jo(hHoh^`OJQJo(hHh^`OJQJo(hHh^`OJQJ^Jo(hHohPP^P`OJQJo(hHhhh^h`OJQJo(hHh88^8`OJQJo(hHoh^`OJQJo(hHh  ^ `OJQJo(hHh  ^ `OJQJo(hHohxx^x`OJQJo(hHhHH^H`OJQJo(hHh^`OJQJo(hHoh^`OJQJo(hHh^`OJQJo(hHh^`OJQJo(hHohpp^p`OJQJo(hHh@ @ ^@ `OJQJo(hHh^`OJQJo(hHoh^`OJQJo(hHh^`OJQJo(hHh^`OJQJo(hHohPP^P`OJQJo(hHh ^`OJQJo(h ^`OJQJo(oh pp^p`OJQJo(h @ @ ^@ `OJQJo(h ^`OJQJo(oh ^`OJQJo(h ^`OJQJo(h ^`OJQJo(oh PP^P`OJQJo(h^`OJQJo(hHh^`OJQJo(hHohpp^p`OJQJo(hHh@ @ ^@ `OJQJo(hHh^`OJQJo(hHoh^`OJQJo(hHh^`OJQJo(hHh^`OJQJo(hHohPP^P`OJQJo(hHh ^`OJQJo(h ^`OJQJo(oh pp^p`OJQJo(h @ @ ^@ `OJQJo(h ^`OJQJo(oh ^`OJQJo(h ^`OJQJo(h ^`OJQJo(oh PP^P`OJQJo(hhh^h`OJQJo(hHh88^8`OJQJo(hHoh^`OJQJo(hHh  ^ `OJQJo(hHh  ^ `OJQJo(hHohxx^x`OJQJo(hHhHH^H`OJQJo(hHh^`OJQJo(hHoh^`OJQJo(hHh^`OJQJo(hHh^`OJQJo(hHohpp^p`OJQJo(hHh@ @ ^@ `OJQJo(hHh^`OJQJo(hHoh^`OJQJo(hHh^`OJQJo(hHh^`OJQJo(hHohPP^P`OJQJo(hHh^`OJQJo(hHh^`OJQJo(hHohpp^p`OJQJo(hHh@ @ ^@ `OJQJo(hHh^`OJQJo(hHoh^`OJQJo(hHh^`OJQJo(hHh^`OJQJo(hHohPP^P`OJQJo(hH hh^h`OJQJo( 88^8`OJQJo(o ^`OJQJo(   ^ `OJQJo(   ^ `OJQJo(o xx^x`OJQJo( HH^H`OJQJo( ^`OJQJo(o ^`OJQJo(h^`OJQJo(hHh^`OJQJ^Jo(hHohpp^p`OJQJo(hHh@ @ ^@ `OJQJo(hHh^`OJQJ^Jo(hHoh^`OJQJo(hHh^`OJQJo(hHh^`OJQJ^Jo(hHohPP^P`OJQJo(hHh^`.h^`.hpLp^p`L.h@ @ ^@ `.h^`.hL^`L.h^`.h^`.hPLP^P`L.hhh^h`OJQJo(hHh88^8`OJQJ^Jo(hHoh^`OJQJo(hHh  ^ `OJQJo(hHh  ^ `OJQJ^Jo(hHohxx^x`OJQJo(hHhHH^H`OJQJo(hHh^`OJQJ^Jo(hHoh^`OJQJo(hHh ^`OJQJo(h ^`OJQJo(oh pp^p`OJQJo(h @ @ ^@ `OJQJo(h ^`OJQJo(oh ^`OJQJo(h ^`OJQJo(h ^`OJQJo(oh PP^P`OJQJo(h^`OJQJo(hHh^`OJQJ^Jo(hHohpp^p`OJQJo(hHh@ @ ^@ `OJQJo(hHh^`OJQJ^Jo(hHoh^`OJQJo(hHh^`OJQJo(hHh^`OJQJ^Jo(hHohPP^P`OJQJo(hH#~}| Yhj]"m9KdrOt&;_0yB]*[}=2nwYK"&S.PX4jZjU^Z/=f<9z^p ##                                                                                                                                                                                                                        }|+4SR Bv s 7S': "XAfl3-gttW)t+o 28/2W9uq9=r==>V>f>@?NA|AC1G`LnLM_NBNhO=RdST'UqW#WXsYRCZ![d[l\,bcegeGfu2ivwSz}~~)\0s2URT7 u 3@'f`._M#>7#Dsy^Z(aa-sTy;|`-*LsW,yg`   $%.2359:V%@U%P@UnknownGz Times New Roman5Symbol3& z ArialuHiragino Mincho Pro W3Times New Roman?5 z Courier New;Wingdings"1hŬF:f:fCC!4d%% 2QHP ?)2CSE 142 Homework 6 Marty SteppRegistered User#                           ! " Oh+'0 , L X d p|CSE 142 Homework 6 Marty Stepp Normal.dotRegistered User219Microsoft Office Word@ c@Ԕ@v@Ԕ՜.+,D՜.+,@ hp|  C% CSE 142 Homework 6 Titlet 8@ _PID_HLINKSA, (8#http://www.ssa.gov/OACT/babynames/<http://www.peggyorenstein.com/articles/2003_baby_names.html  !"#$%&'()*+,-./123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcefghijklmnopqrstuvwxyz{|}~Root Entry FCData 01f1TabledVwWordDocument2^SummaryInformation(DocumentSummaryInformation8CompObjq  FMicrosoft Office Word Document MSWordDocWord.Document.89q