Question

What's the shortest Perl one-liner that print out the first 9 powers of a hard-coded 2 digit decimal (say, for example, .37), each on its own line?

The output would look something like:

1
0.37
0.1369
[etc.]

Official Perl golf rules:

  1. Smallest number of (key)strokes wins
  2. Your stroke count includes the command line
Was it helpful?

Solution

With perl 5.10.0 and above:

perl -E'say 0.37**$_ for 0..8'

With older perls you don't have say and -E, but this works:

perl -le'print 0.37**$_ for 0..8'

Update: the first solution is made of 30 key strokes. Removing the first 0 gives 29. Another space can be saved, so my final solution is this with 28 strokes:

perl -E'say.37**$_ for 0..8'

OTHER TIPS

perl -le'map{print.37**$_}0..8'

31 characters - I don't have 5.10 to try out the obvious improvement using "say" but this is 28:

perl -E'map{say.37**$_}0..8'
seq 9|perl -nE'say.37**$_'

26 - Yes, that's cheating. (And yes, I'm doing powers from 1 to 9. 0 to 8 is just silly.)

Just for fun in Perl 6:

  1. 28 characters:

    perl6 -e'.say for .37»**»^9'
    
  2. 27 characters:

    perl6 -e'say .37**$_ for^9'
    

(At least based on current whitespace rules.)

perl -e 'print .37**$_,"\n" for 0..9'

If you add -l to options you can skip the ,"\n" part

print join("\n", map { 0.37**$_ } (0..9));
print.37**$_.$/for 0..8

23 strokes if you chop the program before submitting. :-P

perl -e "for(my $i = 1; $i < 10; $i++){ print((.37**$i). \"\n\"); }"

Just a quick entry. :)

Fixed to line break!

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top