Beefy Boxes and Bandwidth Generously Provided by pair Networks
XP is just a number
 
PerlMonks  

Re: Worst thing you ever made with Perl

by jeffa (Chancellor)
on Sep 28, 2003 at 23:06 UTC ( #294826=note: print w/ replies, xml ) Need Help??


in reply to Worst thing you ever made with Perl

Took a while to dig up ... i think i wrote this in early 1997:

#!/usr/local/bin/perl ################################################# # hanoi.pl # translated from C++ to Perl by Jeff Anderson # original C++ code by Brenda Parker ################################################# #recursive function sub Hanoi { local($number, $from, $to, $aux); ($number, $from, $to, $aux) = @_; if ($number == 1) { print "Move 1 from $from to $to<BR>"; } elsif ($number != 0) { &Hanoi($number-1,$from,$aux,$to); print "Move $number from $from to $to<BR>"; &Hanoi($number-1,$aux,$to,$from); } } #this library contains the function &GetFormInput which reads #and parses the form data require('libs/forms-lib.pl'); #read input from the form %input = &GetFormInput(); print "Content-type: text/html\n\n"; $number = $input{'pegs'}; unless ($number =~ /^[0-1]?[0-9]$/) { print "Numeric, not alpha-numeric!<BR>"; exit; } print <<"EOM"; <HTML> <HEAD> <TITLE>Towers Result</TITLE> </HEAD> <BODY> EOM if ($number < 1) { print "You are really cruel, zero pegs. Go away.<BR>"; } elsif ($number > 15) { print "I said 15 is the max, go tie up your own processor!<BR>"; } else { print "For $number pegs:<P>"; &Hanoi($number,'A','B','C'); } print <<"EOM"; </BODY> </HTML> EOM

jeffa

L-LL-L--L-LL-L--L-LL-L--
-R--R-RR-R--R-RR-R--R-RR
B--B--B--B--B--B--B--B--
H---H---H---H---H---H---
(the triplet paradiddle with high-hat)


Comment on Re: Worst thing you ever made with Perl
Download Code
2Re: Worst thing you ever made with Perl
by jeffa (Chancellor) on Sep 28, 2003 at 23:29 UTC
    And now, the re-write:
    use strict; use warnings; use CGI qw(header param); use HTML::Template; my @solution; my $tmpl = HTML::Template->new(filehandle => \*DATA); if (param('go')) { my $discs = param('discs'); $discs = 1 if $discs < 1 or $discs > 15; hanoi($discs,'A','B','C'); $tmpl->param( solution => \@solution, discs => $discs, ); } print header, $tmpl->output; # original algorithm learned from Brenda Parker sub hanoi { my ($number, $from, $to, $aux) = @_; if ($number == 1) { push @solution, {step => "Move 1 from $from to $to"}; } elsif ($number != 0) { hanoi($number-1,$from,$aux,$to); push @solution, {step => "Move $number from $from to $to"}; hanoi($number-1,$aux,$to,$from); } } __DATA__ <html> <head> <title>Towers of Hanoi</title> </head> <body> <form> <p> Enter number of discs desired (15 is MAX): <input type="text" name="discs" size="2" /> </p> <input type="submit" name="go" value="Solve" /> </form> <tmpl_if solution> <hr/> Solving for <tmpl_var discs> discs: <ol> <tmpl_loop solution> <li><tmpl_var step></li> </tmpl_loop> </ol> </tmpl_if> </body> </html>

    jeffa

    L-LL-L--L-LL-L--L-LL-L--
    -R--R-RR-R--R-RR-R--R-RR
    B--B--B--B--B--B--B--B--
    H---H---H---H---H---H---
    (the triplet paradiddle with high-hat)
    

Log In?
Username:
Password:

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

How do I use this? | Other CB clients
Other Users?
Others drinking their drinks and smoking their pipes about the Monastery: (6)
As of 2015-07-02 04:40 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The top three priorities of my open tasks are (in descending order of likelihood to be worked on) ...









    Results (27 votes), past polls