Beefy Boxes and Bandwidth Generously Provided by pair Networks
good chemistry is complicated,
and a little bit messy -LW
 
PerlMonks  

Re: Friday Golf: All 2-digit combinations

by hardburn (Abbot)
on Sep 26, 2003 at 13:55 UTC ( [id://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

Replies are listed 'Best First'.
Re^2: Friday Golf: All 2-digit combinations (revisionist history)
by tye (Sage) 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
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%hI get this: 67330568261704029988180316064455272528015714695907498924003511787948227708461323293936581215473834566637451909which 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.

Log In?
Username:
Password:

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

How do I use this?Last hourOther CB clients
Other Users?
Others taking refuge in the Monastery: (4)
As of 2024-04-16 12:25 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found