http://www.perlmonks.org?node_id=294412


in reply to Friday Golf: All 2-digit combinations

My half-assed try... 67

for('00'..'99'){$a.=$_ unless $x{$_} or $x{reverse $_}++};print $a; #234567890#234567890#234567890#234567890#234567890#234567890#234567 # 1 2 3 4 5 6

Note, it includes '00' which some people are missing...

Update... 59? (similar to hardburn's solution)

for('00'..'99'){$x{$_}++unless $x{reverse()}};print keys%x;

Update 2 ...50?

for$a(0..9){for(0..9){$x.="$a$_"if$_>=$a}}print$x;

Update 3: after a clarification, i guess i've misunderstood the problem. I thought it needed all unique pairs, separately (ie. 00, 01, 02, 03...). My bad.

Update 4: Here's one that actually passes the checker (60)

$_=9;for$a(0..9){for$b($a..9){$_.="$a$b"}s/$a{3}/$a$a/}print

Update... 57!

$_=9;for$a(0..9){for$b($a..9){$_.="$a$b"}s/$a$a/$a/}print

--
"To err is human, but to really foul things up you need a computer." --Paul Ehrlich

Replies are listed 'Best First'.
Re: Re: Friday Golf: All 2-digit combinations
by hardburn (Abbot) on Sep 26, 2003 at 14:30 UTC

    Take out two ';' and the whitespace after the unless and you're down three more strokes:

    for('00'..'99'){$x{$_}++unless$x{reverse()}}print keys%x

    56

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

Re: Re: Friday Golf: All 2-digit combinations
by BrowserUk (Patriarch) on Sep 26, 2003 at 18:58 UTC

    56! {He he}

    $_=9;for$a(0..9){for$b($a..9){$_.=$a.$b}s/$a$a/$a/}print

    Examine what is said, not who speaks.
    "Efficiency is intelligent laziness." -David Dunham
    "When I'm working on a problem, I never think about beauty. I think only how to solve the problem. But when I have finished, if the solution is not beautiful, I know it is wrong." -Richard Buckminster Fuller
    If I understand your problem, I can solve it! Of course, the same can be said for you.

      53.

      for$a(9,0..9){for$b($a..9){$_.=$a.$b}s/$a$a/$a/}print

      --
      "To err is human, but to really foul things up you need a computer." --Paul Ehrlich

        Scratch! Too eager:)


        Examine what is said, not who speaks.
        "Efficiency is intelligent laziness." -David Dunham
        "When I'm working on a problem, I never think about beauty. I think only how to solve the problem. But when I have finished, if the solution is not beautiful, I know it is wrong." -Richard Buckminster Fuller
        If I understand your problem, I can solve it! Of course, the same can be said for you.