问题
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:
- Smallest number of (key)strokes wins
- Your stroke count includes the command line
回答1:
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'
回答2:
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'
回答3:
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.)
回答4:
Just for fun in Perl 6:
28 characters:
perl6 -e'.say for .37»**»^9'
27 characters:
perl6 -e'say .37**$_ for^9'
(At least based on current whitespace rules.)
回答5:
perl -e 'print .37**$_,"\n" for 0..9'
If you add -l to options you can skip the ,"\n" part
回答6:
print join("\n", map { 0.37**$_ } (0..9));
回答7:
print.37**$_.$/for 0..8
23 strokes if you chop the program before submitting. :-P
回答8:
perl -e "for(my $i = 1; $i < 10; $i++){ print((.37**$i). \"\n\"); }"
Just a quick entry. :)
Fixed to line break!
来源:https://stackoverflow.com/questions/210068/perl-golf-print-the-powers-of-a-number