Beefy Boxes and Bandwidth Generously Provided by pair Networks
Don't ask to ask, just ask
 
PerlMonks  

Re: Golf challange: match U.S. State names

by Brovnik (Hermit)
on Jun 06, 2001 at 02:48 UTC ( [id://86055]=note: print w/replies, xml ) Need Help??


in reply to Golf challange: match U.S. State names

How many states are you including ?

E.g. Are you going to count dependent territories as per the USPS codes, or just 52 states.
--
Brovnik

  • Comment on Re: Golf challange: match U.S. State names

Replies are listed 'Best First'.
Re (tilly) 2: Golf challange: match U.S. State names
by tilly (Archbishop) on Jun 06, 2001 at 03:29 UTC
    I think it is the principle of the thing that counts. How about:
    AK AL AR AZ CA CO CT DC DE FL GA HI IA ID IL IN KS KT KY LA MA MD ME MI MN MO MS MT NC ND NE NH NJ NM NV NY OH OK OR PA RI SC SD TN TX UT VA VT WA WI WV WY
    And the obvious answer is, of course,
    sub state { grep$_[0]eq$_,'AKALARAZCACOCTDCDEFLGAHIIAIDILINKSKTKYLAMAMDMEMIMNMOMSM +TNCNDNENHNJNMNVNYOHOKORPARISCSDTNTXUTVAVTWAWIWVWY'=~/../g }
    at 127 characters. I don't see an obviously better approach...
      124 chars, using that set :)
      sub state { pop=~/^(A[KLRZ]|C[AOT]|D[CE]|FL|GA|HI|I[ADLN]|K[STY]|LA|M[ADEINOST]| +N[CDEHJMVY]|O[HKR]|PA|RI|S[CD]|T[NX]|UT|V[AT]|W[AIVY])$/ }
         MeowChow                                   
                     s aamecha.s a..a\u$&owag.print
        Your subroutine will accept "AK\n" as a state. Fixing that takes it to 125. But I can beat that with the following 122 character solution (which is what I was trying to figure out when I posted my first):
        sub state{ $_[0]=~/^\w\w\z/&&grep/$_[0]/,'WVTNHINMSCORIDCAKSDE WIALAR MNCTX NVAZ' +,'FLGAILKTKYMAMDMEMIMOMTNDNENJNYOHOKPAUTWAWY'=~/../g }
        OTOH I can improve your idea down to 119:
        sub state { pop=~/^([CGILPVW]A|[CKUV]T|[HRW]I|A[KLRZ]|CO|DC|DE|FL|I[DLN]|KS|KY|M[A +DEINOST]|N[CDEHJMVY]|O[HKR]|SC|SD|TN|TX|WV|WY)\z/ }

        And 2 characters less by group the first letters too:

        sub state { pop=~/^(A[KLRZ]|C[AOT]|D[CE]|I[ADLN]|K[STY]|M[ADEINOST]|N[CDEHJMVY +]|O[HKR]|S[CD]|T[NX]|V[AT]|[GLP]A|[HR]I|FL|UT|W[AIVY])$/ }

        --bwana147

      But the match isn't just on the names, but also on the abutment of names. I think you will get some false positives Eg. 'ZC' and 'OC' etc...

      Have fun,
      Carl Forde

        Not so, the regex returns matches in pairs, ie:
        @list = 'foobarbazo' =~ /../g; # sets @list to ('fo','ob','ar','ba',' +zo')
           MeowChow                                   
                       s aamecha.s a..a\u$&owag.print
      Hmm, that's indeed 52 names. 50 states plus DC plus what?
        KT.

        Kentucky is supposed to be KY, but that list was pulled from a mapping that had to account for several mistakes. Sorry. (Similarly Quebec is PQ, but is often mistakenly written as QC.)

        BTW the US state abbreviations also include GU, PR and VI.

Re: Re: Golf challange: match U.S. State names
by Vynce (Friar) on Jun 06, 2001 at 03:28 UTC
    or just 52 states

    uh.. fifty-howmany? last i heard, the U.S. only had 50 states and one district.

    update: re: tilly's list:
    uh... 'KT'? since when is Kentucky Tavern whiskey its own state?

    .
Re: Re: Golf challange: match U.S. State names
by SparkeyG (Curate) on Jun 06, 2001 at 20:20 UTC
    For the canonical list, I'd suggest looking at what the USPS has to say on the issue of State Abberivation Codes.

    The lists being used don't include any of our possestions or the overseas military 'states'.

    --SparkeyG

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://86055]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others examining the Monastery: (3)
As of 2024-04-24 19:40 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found