Perl golf: Распечатайте силу числа - PullRequest
2 голосов
/ 17 октября 2008

Какой самый короткий однострочный Perl выдает первые 9 степеней двухзначного десятичного кода (скажем, например, .37), каждая в своей строке?

Вывод будет выглядеть примерно так:

1
0.37
0.1369
[etc.]

Официальные правила игры в гольф Perl:

  1. Наименьшее количество (ключевых) ударов выигрывает
  2. Ваш счетчик штрихов включает командную строку

Ответы [ 8 ]

15 голосов
/ 17 октября 2008

С perl 5.10.0 и выше:

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

В старых версиях у вас нет say и -E, но это работает:

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

Обновление: первое решение состоит из 30 нажатий клавиш. Удаление первых 0 дает 29. Можно сохранить еще один пробел, поэтому мое окончательное решение - 28 ходов:

perl -E'say.37**$_ for 0..8'
6 голосов
/ 17 октября 2008
perl -le'map{print.37**$_}0..8'

31 символов - у меня нет 5,10, чтобы попробовать очевидное улучшение, используя «сказать», но это 28:

perl -E'map{say.37**$_}0..8'
4 голосов
/ 17 октября 2008
seq 9|perl -nE'say.37**$_'

26 - Да, это обман. (И да, я делаю полномочия от 1 до 9. 0 до 8 просто глупо.)

3 голосов
/ 18 октября 2008

Просто для удовольствия в Perl 6:

  1. 28 символов:

    perl6 -e'.say for .37»**»^9'
    
  2. 27 символов:

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

(По крайней мере, на основе текущих правил пробелов.)

2 голосов
/ 17 октября 2008
perl -e 'print .37**$_,"\n" for 0..9'

Если вы добавите -l к опциям, вы можете пропустить часть "\ n"

1 голос
/ 17 октября 2008
print.37**$_.$/for 0..8

23 ударов, если вы порежете программу перед отправкой. : -Р

1 голос
/ 17 октября 2008
print join("\n", map { 0.37**$_ } (0..9));
0 голосов
/ 17 октября 2008
perl -e "for(my $i = 1; $i < 10; $i++){ print((.37**$i). \"\n\"); }"

Просто быстрая запись. :)

Исправлен разрыв строки!

...