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

Re: Re: First JAPH - Spell perl in two hundred and eighty five thousand and seventy four easy steps

by Anonymous Monk
on Jan 12, 2002 at 07:35 UTC ( #138209=note: print w/ replies, xml ) Need Help??


in reply to Re: First JAPH - Spell perl in two hundred and eighty five thousand and seventy four easy steps
in thread First JAPH - Spell perl in two hundred and eighty five thousand and seventy four easy steps

#!/usr/bin/perl use strict; my $theword = @ARGV[0]; my $A='a'; FINDIT: for (0..99999999){ $A++; if ($A eq "$theword") {print "$_\n"; last FINDIT; } }


Comment on Re: Re: First JAPH - Spell perl in two hundred and eighty five thousand and seventy four easy steps
Download Code
Re: Re: Re: First JAPH - Spell perl in two hundred and eighty five thousand and seventy four easy steps
by holonaut (Initiate) on Sep 11, 2002 at 18:31 UTC
    Wow. That can take a really long time to count. This little bit o' code is much faster.
    #!/usr/bin/perl -w # Convert pseudo-base26 number (digits: a-z) to decimal # really intended to find the ending number needed in # the for loop for any given string to be used my $num = 0; my $char = "a"; my $answer = 0; until ($char eq "aa") { $equiv{$char}=$num; $num++; $char++; } print "Enter your lowercase string: "; chomp($string = <STDIN>); @strArray=reverse(split(//,$string)); for ($i = 0; $i < @strArray; $i++) { $answer += ($equiv{$strArray[($i)]} * (25 ** $i)); } print --$answer;
      I tried the code and it did not work. After a little experimenting following code did work. I added the orignal one liner to the generator to validate it. The mistakes that I saw were two fold. First base should have be 26 not 25. Second the magical text increment behavior is not equivalent to incrementing numbers.
      9 goes to 10
      z goes to aa  not a0 
      
      as a result the equivs have to run a-z === 1-26 not 0-25 and the answer offset is 2 not 1.
      #!/usr/bin/perl -w # Convert pseudo-base26 number (digits: a-z) to decimal # really intended to find the ending number needed in # the for loop for any given string to be used my $num = 1; # was $num = 1 my $char = "a"; my $answer = 0; until ($char eq "aa") { $equiv{$char}=$num; $num++; $char++; } print "Enter your lowercase string: "; chomp($string = <STDIN>); @strArray=reverse(split(//,$string)); for ($i = 0; $i < @strArray; $i++) { $answer += ($equiv{$strArray[($i)]} * (26 ** $i)); # was 25 ** $i } $offset = $answer - 2; print $offset,"\n"; my $A="a";for(0..$offset){$A++;}print"$A";

Log In?
Username:
Password:

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

How do I use this? | Other CB clients
Other Users?
Others chanting in the Monastery: (10)
As of 2014-12-21 14:27 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    Is guessing a good strategy for surviving in the IT business?





    Results (106 votes), past polls