P is for Practical PerlMonks

### 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 ( #197029=note: print w/ replies, xml ) Need Help??

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

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));
}

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

Replies are listed 'Best First'.
Re: Re: Re: Re: First JAPH - Spell perl in two hundred and eighty five thousand and seventy four easy steps
by admiraln (Acolyte) on Sep 11, 2002 at 20:47 UTC
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";

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
}
print \$offset,"\n";

my \$A="a";for(0..\$offset){\$A++;}print"\$A";

Create A New User
Node Status?
node history
Node Type: note [id://197029]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others taking refuge in the Monastery: (10)
As of 2016-07-27 16:56 GMT
Sections?
Information?
Find Nodes?
Leftovers?
Voting Booth?
What is your favorite alternate name for a (specific) keyboard key?

Results (245 votes). Check out past polls.