Beefy Boxes and Bandwidth Generously Provided by pair Networks
Welcome to the Monastery
 
PerlMonks  

Re: Friday Golf: All 2-digit combinations

by hardburn (Abbot)
on Sep 26, 2003 at 13:55 UTC ( #294419=note: print w/ replies, xml ) Need Help??


in reply to Friday Golf: All 2-digit combinations

for('00'..'99'){$h{$_}++if(!($h{$_}||$h{reverse$_}))}print keys%h

78 76 64

Update: Slight bumming of the if statement to use statement-modifier form instead of a block. Saves 2 characters.

Update 2: Realized that the exists were unnecessary. Saves 12 characters.

Update 3: Old versions, added back after tye's response:

for('00'..'99'){if(!(exists$h{$_}||exists$h{reverse$_})){$h{$_}++}prin +t keys%h
for('00'..'99'){$h{$_}++if(!(exists$h{$_}||exists$h{reverse$_}))print +keys%h

----
I wanted to explore how Perl's closures can be manipulated, and ended up creating an object system by accident.
-- Schemer

Note: All code is untested, unless otherwise stated


Comment on Re: Friday Golf: All 2-digit combinations
Select or Download Code
Re2: Friday Golf: All 2-digit combinations
by dragonchild (Archbishop) on Sep 26, 2003 at 14:39 UTC
    Generating ... 3738553956575859777879990001020304052206230724082509262744284529464748 +49666768698889111213141516173318341935361 Checking ... '00' appears 0 times

    Also, you can drop the braces for the if statement and go to 62.

    ------
    We are the carpenters and bricklayers of the Information Age.

    The idea is a little like C++ templates, except not quite so brain-meltingly complicated. -- TheDamian, Exegesis 6

    Please remember that I'm crufty and crochety. All opinions are purely mine and all code is untested, unless otherwise specified.

      I'm not so sure about your checker:

      $ ./two_digit_combo.pl | perl -ne 'print join " ", sort unpack("A2" x +(length()/2), $_)' 00 01 02 03 04 05 06 07 08 09 11 12 13 14 15 16 17 18 19 22 23 24 25 2 +6 27 28 29 33 34 35 36 37 38 39 44 45 46 47 48 49 55 56 57 58 59 66 6 +7 68 69 77 78 79 88 89 99 $ cat two_digit_combo.pl #!/usr/local/bin/perl for('00'..'99'){$h{$_}++if(!($h{$_}||$h{reverse$_}))}print keys%h $

      Clearly, '00' is right at the beginning of the output.

      ----
      I wanted to explore how Perl's closures can be manipulated, and ended up creating an object system by accident.
      -- Schemer

      Note: All code is untested, unless otherwise stated

        When I run that code: for('00'..'99'){$h{$_}++if(!($h{$_}||$h{reverse$_}))}print keys%h
        I get this: 67330568261704029988180316064455272528015714695907498924003511787948227708461323293936581215473834566637451909
        which is clearly incorrect. It does not contain 10, 20, 41, 42, 43, 50, 53, 62, 75, 76, 85, 86, 91, 96, 97, and it duplicates 03, 15, 17, 27, 29, 32, 40, 45, 46, 51, 52, 56, 61, 66, 70, 73, 74, 80, 81, 82, 90, 93, 98.
Re^2: Friday Golf: All 2-digit combinations (revisionist history)
by tye (Cardinal) on Sep 26, 2003 at 15:17 UTC

    Part of the fun of golf is watching the code get whittled away. Please don't destroy your previous versions when you update.

    I'm glad you left in the previous stroke counts, but sad that you destroyed the code that went along with those.

                    - tye

Log In?
Username:
Password:

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

How do I use this? | Other CB clients
Other Users?
Others examining the Monastery: (15)
As of 2014-08-22 16:10 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The best computer themed movie is:











    Results (160 votes), past polls