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


in reply to Recursion: The Towers of Hanoi problem

My own code, for a class I had
#!/usr/bin/perl -w use strict; han('A','B','C',$ARGV[0]); sub han{ return if $_[3] <= 0; han($_[0],$_[2],$_[1],$_[3]-1); print "Move disc $_[3] from $_[0] to $_[2]\n"; han($_[1],$_[0],$_[2],$_[3]-1); }
Number of discs is supplied as $ARGV[0] so, yeah. You could continue to play with this to see how much more it will compress. (I really didn't like the TA's for this class and eventually started using map and grep in all the programs.)

Edit:
made it shorter.


==
Kwyjibo. A big, dumb, balding North American ape. With no chin.

Replies are listed 'Best First'.
Re^2: Recursion: the Towers of Hanoi problem
by Jasper (Chaplain) on Oct 21, 2004 at 14:02 UTC
    sub han { if (my $l = pop) { han(@_[0,2,1],$l-1); print "Move disc $l from $_[0] to $_[2]\n"; han(@_[1,0,2],$l-1); } }

    little shorter
      Try this on:
      sub a{my$l=pop;a(@_[0,2,1],--$l)."Move disc $l from $_[0] to $_[2] ".a(@_[1,0,2],$l)if$l>0;}print a 'A'..'C',shift;
      Now trying for the least number of chars. 116 in this solution.
      New rules, no #! needed.

      ==
      Kwyjibo. A big, dumb, balding North American ape. With no chin.
        In real terms, this is slightly longer than the previous version, isn't it? you need a space between print and the argument, I don't. Apart from that, this is different to the requirements. This prints out $l - 1, which is incorrect, or at least different to the 1-3 based original solution.

        Trimming whitespace from the solution in my last post, and giving it a one character sub name makes it 112 characters, 107 if you take the quotes and braces around a A..C,pop.

        Strangely, using my $l=$_[3]-- and using a(@_[0,2,1,3]) etc. doesn't work at all. @_ is not localised ($_3 ends up very negative and the solution becomes deeply recursive), which makes me wonder if the above solution works. I haven't compared the output to the original solution's output.
Re^2: Recursion: the Towers of Hanoi problem
by SpanishInquisition (Pilgrim) on Oct 20, 2004 at 17:47 UTC
    Ironically that's the way I feel about work...

    It's not about obfuscation, it's about coding 9 planes of existance higher than them because you can, and they don't want to learn...