Распечатать эту таблицу умножения

17

Введите кратчайший код для печати следующей таблицы умножения:

1×1=1
1×2=2  2×2=4
1×3=3  2×3=6  3×3=9
1×4=4  2×4=8  3×4=12 4×4=16
1×5=5  2×5=10 3×5=15 4×5=20 5×5=25
1×6=6  2×6=12 3×6=18 4×6=24 5×6=30 6×6=36
1×7=7  2×7=14 3×7=21 4×7=28 5×7=35 6×7=42 7×7=49
1×8=8  2×8=16 3×8=24 4×8=32 5×8=40 6×8=48 7×8=56 8×8=64
1×9=9  2×9=18 3×9=27 4×9=36 5×9=45 6×9=54 7×9=63 8×9=72 9×9=81
matrix89
источник
6
Кто-нибудь действительно собирается делать что-нибудь, кроме двух forпетель? Где сложная (интересная) часть?
jdstankosky
3
Я не использую for. Хорошо, я использую while.
Йоханнес Кун
3
Важны ли конечные пробелы?
Восстановите Монику
почему в первом столбце 2 пробела, а не 1? (как и другие колонны)
РосЛюП
1
@jdstankosky, возможно, вы найдете мой ответ немного более интересным - никаких зацикливаний
Тейлор Скотт

Ответы:

13

Excel, 92 91 байт

В непосредственном окне редактора VBA выполните следующую команду: Range("A1:I9").Formula="=IF(ROW()<COLUMN(),"""",COLUMN()&""×""&ROW()&""=""&COLUMN()*ROW())" Выходные данные находятся непосредственно на активном рабочем листе. Скриншот вывода в Excel

Я golfed дополнительных байт, меняя порядок , ifчтобы изменить >=к <. Я не обновлял скриншот, но он влияет только на формулу вверху, а не на вывод.

GuitarPicker
источник
ХА! Я задавался вопросом, когда я увижу ответ Excel, +1.
Волшебная Урна Осьминога
1
Благодарю. Я думаю, что я был частично мотивирован комментариями о том, как делать это без обычного вложенного FORцикла.
GuitarPicker
Мой тоже был !!!
Волшебная Урна Осьминога
8

Python (75)

r=range(1,10)
for i in r:print''.join('%sx%s=%-3s'%(j,i,i*j)for j in r[:i])

немного лучше, чем в двух других версиях Python.

Даниил
источник
Использование Python 3.6 с F-строк для -1 байт: TiO
connectyourcharger
7

C ++, 106 98 байт

Я использовал две петли и несколько трюков.

#import <cstdio>
main(){for(int i,j;i++-9;j=0)while(j++-i)printf("%dx%d=%d%c",j,i,i*j,j<i?32:10);}
FoxyZ
источник
Добро пожаловать в PPCG! Хороший первый пост!
Rɪᴋᴇʀ
1
#import <stdio.h> main(){for(int i=0,j;i++-9;j=0)while(j++-i)printf("%dx%d=%d%s",j,i,i*j,j<i?"\n":" ";}на 3 байта короче.
DJMcMayhem
Вам нужно пространство между #importи <cstdio>?
Захари
@ Zacharý нет, это место не нужно
Карл Напф
5

J: 57 51 символов

([:;"2*\#"2(":@],'x',":@[,'=',":@*,' '"_)"0/~)>:i.9

Нет петель.

SL2
источник
Соединения (и наречия) имеют более высокий приоритет, чем глаголы, поэтому вы можете удалить 3 пары скобок. ([:;"2*\#"2(":@],'x',":@[,'=',":@*,' '"_)"0/~)>:i.9
randomra
@randomra Хороший звонок. Спасибо за чаевые!
SL2
4

APL (37)

∆∘.{⊃(⍺≥⍵)/,/(⍕⍺)'×'(⍕⍵)'=',⍕⍺×⍵}∆←⍳9

И это даже не две петли. В APL следующая конструкция:

x ∘.F y

где xи yсписки, и Fявляется функцией, применяетсяF к каждой паре элементов в xи yи дает вам матрицу.

Итак: ∆∘.×∆←⍳9получает таблицу умножения от 1 до 9. Вышеуказанная функция генерирует необходимую строку для каждой пары, то есть (⍕⍺)строковое представление первого числа, за которым ×следует (⍕⍵)строковое представление второго числа, затем следует =, а затем следует ⍕⍺×⍵До тех пор, пока ⍺≥⍵.

Мэринус
источник
4

Рубин: 60 59 символов

1.upto(9){|i|puts (1..i).map{|j|"%dx%d=%-3d"%[j,i,i*j]}*""}

Образец прогона:

bash-4.2$ ruby -e '1.upto(9){|i|puts (1..i).map{|j|"%dx%d=%-3d"%[j,i,i*j]}*""}'
1x1=1 
1x2=2  2x2=4 
1x3=3  2x3=6  3x3=9 
1x4=4  2x4=8  3x4=12 4x4=16
1x5=5  2x5=10 3x5=15 4x5=20 5x5=25
1x6=6  2x6=12 3x6=18 4x6=24 5x6=30 6x6=36
1x7=7  2x7=14 3x7=21 4x7=28 5x7=35 6x7=42 7x7=49
1x8=8  2x8=16 3x8=24 4x8=32 5x8=40 6x8=48 7x8=56 8x8=64
1x9=9  2x9=18 3x9=27 4x9=36 5x9=45 6x9=54 7x9=63 8x9=72 9x9=81
manatwork
источник
Можно сохранить один символ, изменив начальный (1..9).map{на 1.upto(9){!
Пол Престиж
Есть пробелы (первые 3 строки). Оригинальная таблица не имеет их. Я не уверен, если это имеет значение, хотя ...
Восстановить Монику
@WolframH, все решения, которые я проверял, либо имеют конечные пробелы, либо не воспроизводят точное форматирование.
manatwork
4

Perl, 54 персонажа

printf"%dx$?=%-3d"x$?.$/,map{$_,$_*$?}1..$?while$?++<9

источник
4

АПЛ (Дьялог), 28

↑{⍵{⍕⍵,'×',⍺,'=',⍺×⍵}¨⍳⍵}¨⍳9

Аналог двойного цикла на других языках

{⍵{...}¨⍳⍵}¨⍳9устанавливает двойной цикл
⍕⍵,'×',⍺,'=',⍺×⍵создает строку для каждой пары
Конвертировать массив из массива строк в матрицу строк

Выход

1 × 1 = 1                                                                                                 
1 × 2 = 2  2 × 2 = 4                                                                                      
1 × 3 = 3  2 × 3 = 6   3 × 3 = 9                                                                          
1 × 4 = 4  2 × 4 = 8   3 × 4 = 12  4 × 4 = 16                                                             
1 × 5 = 5  2 × 5 = 10  3 × 5 = 15  4 × 5 = 20  5 × 5 = 25                                                 
1 × 6 = 6  2 × 6 = 12  3 × 6 = 18  4 × 6 = 24  5 × 6 = 30  6 × 6 = 36                                     
1 × 7 = 7  2 × 7 = 14  3 × 7 = 21  4 × 7 = 28  5 × 7 = 35  6 × 7 = 42  7 × 7 = 49                         
1 × 8 = 8  2 × 8 = 16  3 × 8 = 24  4 × 8 = 32  5 × 8 = 40  6 × 8 = 48  7 × 8 = 56  8 × 8 = 64             
1 × 9 = 9  2 × 9 = 18  3 × 9 = 27  4 × 9 = 36  5 × 9 = 45  6 × 9 = 54  7 × 9 = 63  8 × 9 = 72  9 × 9 = 81
TwiNight
источник
Вы можете удалить некоторые запятые с тем же эффектом: ↑{⍵{⍕⍵'×'⍺'=',⍺×⍵}¨⍳⍵}¨⍳9или даже использовать новый «ключевой оператор»:{⍕⍵'×'⍺'=',⍺×⍵}¨∘⍳⌸⍳9
ngn
4

Mathematica , 45

Довольно скучно, но я думаю, что это служит для сравнения синтаксиса:

Grid@Table[Row@{a, "x", b, "=", a b}, {a, 9}, {b, a}]
Mr.Wizard
источник
2
Что, вы говорите мне, что для этого нет встроенного?
Аарон
1
@Aaron Функция раздувание из Mathematica не степени , что еще далеко, к счастью.
Мистер Волшебник
4

D, 75 символов

foreach(i,1..10){foreach(j,1..i+1){writef("%dx%d=%d ",i,j,i*j);}writeln();}

Вы только что сказали, что код не функционирует или полная программа

чокнутый урод
источник
1
По умолчанию фрагменты запрещены; требуется функция или полная программа.
спагетто
@quartata Этот ответ предшествует нашим значениям по умолчанию на полтора года.
Деннис
@ Деннис О, я не осознавал, что правило «никакие фрагменты не разрешены» было таким новым Сожалею.
спагетто
Будет ли это работать? foreach(i,1..10){foreach(j,1..i+1)writef("%dx%d=%d ",i,j,i*j);writeln;}
Захари
3

VBScript (133); без петель.

g=""
sub m(x,y)
    g=x&"x"&y&"="&x*y&vbTab&g
    if x>1 then 
        m x-1,y
    elseif y>1 then 
        g=vbLf&g 
        m y-1,y-1
    end if
end sub
m 9,9
wscript.echo g

По запросу претендента: петель нет. Этот код использует рекурсивные вызовы подпрограмм.

AutomatedChaos
источник
3

Клен, 64

seq(printf(seq(printf("%ax%a=%a ",j,i,i*j),j=1..i),"\n"),i=1..9)
DSkoog
источник
3

машинный код x86_64 (linux), 175 99 76 байт

0000000000400080 <_start>:
  400080:   66 bf 09 00             mov    $0x9,%di

0000000000400084 <_table.L2>:
  400084:   6a 0a                   pushq  $0xa
  400086:   89 fe                   mov    %edi,%esi

0000000000400088 <_table.L3>:
  400088:   89 f0                   mov    %esi,%eax
  40008a:   f7 e7                   mul    %edi

000000000040008c <_printInteger>:
  40008c:   6a 20                   pushq  $0x20
  40008e:   3c 0a                   cmp    $0xa,%al
  400090:   7d 02                   jge    400094 <_printInteger.L1>
  400092:   6a 20                   pushq  $0x20

0000000000400094 <_printInteger.L1>:
  400094:   66 31 d2                xor    %dx,%dx
  400097:   b3 0a                   mov    $0xa,%bl
  400099:   66 f7 f3                div    %bx
  40009c:   83 c2 30                add    $0x30,%edx
  40009f:   52                      push   %rdx
  4000a0:   66 85 c0                test   %ax,%ax
  4000a3:   75 ef                   jne    400094 <_printInteger.L1>
  4000a5:   6a 3d                   pushq  $0x3d
  4000a7:   66 57                   push   %di
  4000a9:   80 04 24 30             addb   $0x30,(%rsp)
  4000ad:   6a 78                   pushq  $0x78
  4000af:   66 56                   push   %si
  4000b1:   80 04 24 30             addb   $0x30,(%rsp)
  4000b5:   ff ce                   dec    %esi
  4000b7:   75 cf                   jne    400088 <_table.L3>
  4000b9:   ff cf                   dec    %edi
  4000bb:   75 c7                   jne    400084 <_table.L2>

00000000004000bd <_printChars>:
  4000bd:   66 ba 00 08             mov    $0x800,%dx
  4000c1:   b0 01                   mov    $0x1,%al
  4000c3:   66 bf 01 00             mov    $0x1,%di
  4000c7:   48 89 e6                mov    %rsp,%rsi
  4000ca:   0f 05                   syscall

Это дамп двоичного файла, и все это составляет 175 байтов. По сути, он выполняет те же два цикла, что и все ответы, но печать на консоль немного сложнее и, в основном, требует нажатия символов для печати в стек в обратном порядке, а затем создания (специфичного для Linux) системного вызова для фактического размещения этих символов. в стандартный вывод.

Я теперь оптимизировал это так, чтобы только 1 операция записи выполнялась (быстрее!) И имела магические числа (вау!) И помещала весь результат в стек назад перед выполнением системного вызова. Я также вынул процедуру выхода, потому что кому нужен правильный код выхода?

Вот ссылка на мой первый и второй попытки в их оригинальном синтаксисе.

Я приветствую всех, кто имеет какие-либо другие предложения о том, как это можно улучшить. Я также могу объяснить логику более подробно, если кому-то интересно.

(Кроме того, он не печатает лишние пробелы, чтобы выровнять все столбцы, но если это необходимо, я могу добавить логику за счет еще нескольких байтов).

РЕДАКТИРОВАТЬ: Теперь печатает дополнительные пробелы и еще больше! Он делает довольно сумасшедшие вещи с регистрами и, вероятно, нестабилен, если эту программу расширить.

Davey
источник
PPCG требует полных программ или функций. Фрагменты неявно запрещены (т.е. вы можете использовать их, только если OP явно разрешил их.)
Эрик Outgolfer
О, мой плохой. Я забыл, что OP не указал это.
Дэйви
3

Javascript, 190 байт

Поздно к вечеринке, но я был задет комментарием @jdstankosky и решил пойти другим путем. Вот запись Javascript, которая искажает шаблон и пробует себя на этом пути.

t="a*b=c ";u="";r=u;for(i=1;i<10;i++){a=0;u=u+t;r+=u.split(' ').map(x=>x.replace('a',++a).replace('b',i)).map(x=>x.replace('*','x').replace('c',eval(x.substr(0,3)))).join(' ')+'\n'}alert(r);

Версия без игры в гольф (немного более старая версия, в которой функция возвращает таблицу вместо скрипта, предупреждающего об этом, но применяются те же принципы):

function f()
{
    t="a*b=c "; // template for our multiplication table
    u="";r="";  // tmp- and return values
    for(i=1;i<10;i++)
    {
        a=0;    // is auto-incremented in MAP
        u=u+t;// extend the template once per iteration
        v=u.split(' '); // Smash the template to pieces
        w=v.map(x=>x.replace('a', ++a).replace('b', i)) // MAP replaces the A and B's with the correct numbers
        w=w.map(x=>x.replace('*', 'x').replace('c', eval(x.substring(0,3)))).join(' '); // second map evals that and replaces c with the answer, makes the asteriks into an X
        r=r+w+'\n'  // results get concatenated
    }
    return r;
}
steenbergh
источник
1
Я сделал этот комментарий давно, ха-ха. Я на самом деле рад это видеть.
jdstankosky
3

Паскаль, 128 байт

Одна рекурсивная процедура заботится обо всем. Позвони с m(9,9).

procedure m(i,j:integer);begin if i<1then Exit;if i=j then begin m(i-1,j-1);writeln;end;m(i-1,j);write(i,'x',j,'=',i*j,' ');end;

Ungolfed:

procedure mul(i, j: integer);
begin
  if i<1 then
    Exit;
  if i=j then
  begin
    mul(i-1, j-1);
    writeln;
  end;
  mul(i-1, j);
  write(i,'x',j,'=',i*j,' ');
end;
hdrz
источник
3

Фурье, 756 632 байта

Спасибо @BetaDecay за 124 байта!

1o120~Ea1o61a1o10~Na1oEa2o61a2o32~Saa2oEa2o61a4oNa1oEa3o61a3oSaa2oEa3o61a6oSaa3oEa3o61a9o^a1oEa4o61a4oSaa2oEa4o61a8oSaa3oEa4o61a12oSa4oEa4o61a16oNa1oEa5o61a5oSaa2oEa5o61aNoSa3oEa5o61a15oSa4oEa5o61a20oSa5oEa5o61a25oNa1oEa6o61a6oSaa2oEa6o61a12oSa3oEa6o61a18oSa4oEa6o61a24oSa5oEa6o61a30oSa6oEa6o61a36oNa1oEa7o61a7oSaa2oEa7o61a14oSa3oEa7o61a21oSa4oEa7o61a28oSa5oEa7o61a35oSa6oEa7o61a42oSa7oEa7o61a49oNa1oEa8o61a8oSaa2oEa8o61a16oSa3oEa8o61a24oSa4oEa8o61aSoa5oEa8o61a40oSa6oEa8o61a48oSa7oEa8o61a56oSa8oEa8o61a64oNa1oEa9o61a9oSaa2oEa9o61a18oSa3oEa9o61a27oSa4oEa9o61a36oSa5oEa9o61a45oSa6oEa9o61a54oSa7oEa9o61a63oSa8oEa9o61a72oSa9oEa9o61a81o
Оливер Ни
источник
1
Мне удалось забить 124 байта из вашей программы , сохранив число 120 как переменную E, число 32 как S и 10 как N.
Beta Decay
2

VBA 55

(непосредственное окно)

for f=1 to 9:for j=1 to f:?f;"x";j;"=";f*j,:next:?:next

примечание - GWBasic нужно только 2 дополнительных символа:

1 for f=1 to 9:for j=1 to f:?f;"x";j;"=";f*j,:next:?:next
SeanC
источник
2

Javascript, 75

for(s="",a=b=1;a<10;b=a==b?(a++,alert(s),s="",1):b+1)s+=b+"x"+a+"="+a*b+" "

Интересно, возможно ли что-то лучше, чем два (вместе?) Для петель ...

tomsmeding
источник
ну, единственное, что я уверен, это то, что можно получить 75 на разделенных циклах ( мой старый комментарий )
ajax333221
2

Coreutils / Bash: 147 136 135

for i in {1..9}; do
  yes $'\n' | head -n $[i-1] > $i
  paste -dx= <(yes $i) <(seq $i 9) <(seq $[i*i] $i $[9*i]) |head -n$[10-i] >> $i
done
paste {1..9}

Гольф, использование явного перевода строки и использование устаревшей опции головы (спасибо manatwork):

for i in {1..9};do yes '
'|head -$[i-1]>$i;paste -dx= <(yes $i) <(seq $i 9) <(seq $[i*i] $i $[9*i])| head -$[10-i]>>$i;done;paste {1..9}

Выход:

1x1=1                               
1x2=2   2x2=4                           
1x3=3   2x3=6   3x3=9                       
1x4=4   2x4=8   3x4=12  4x4=16                  
1x5=5   2x5=10  3x5=15  4x5=20  5x5=25              
1x6=6   2x6=12  3x6=18  4x6=24  5x6=30  6x6=36          
1x7=7   2x7=14  3x7=21  4x7=28  5x7=35  6x7=42  7x7=49      
1x8=8   2x8=16  3x8=24  4x8=32  5x8=40  6x8=48  7x8=56  8x8=64  
1x9=9   2x9=18  3x9=27  4x9=36  5x9=45  6x9=54  7x9=63  8x9=72  9x9=81
Тор
источник
Оставьте 8 символов, заменив все $(( ))арифметические оценки на $[ ]; разделить 2 символа, заменив $'\n'экранированный символ новой строки буквальным (я имею yes 'в виду, в одной строке, затем 'в следующей); сэкономить 2 символа, не используя явно опцию head's -n, просто -и число.
manatwork
@ Manatwork: я не знал о $[ ]нотации, приятно знать. Замена -nна -только один символ меньше, так что всего их 11, большое спасибо :).
Тор
2

LOLCODE, 202 байта

IM IN YR o UPPIN YR b TIL BOTH SAEM b AN 10
c R ""
IM IN YR i UPPIN YR a TIL BOTH SAEM a AN SUM OF b AN 1
c R SMOOSH c SMOOSH a "x" b "=" PRODUKT OF a AN b " " MKAY
IM OUTTA YR i
VISIBLE c
IM OUTTA YR o

Ungolfed:

HAI 1.3 BTW Unnecessary in current implementations
IM IN YR outer UPPIN YR multiplicand TIL BOTH SAEM multiplicand AN 10
    I HAS A output ITZ ""
    IM IN YR inner UPPIN YR multiplier TIL BOTH SAEM multiplier AN SUM OF multiplicand AN 1
        output R SMOOSH output AN SMOOSH multiplier AN "x" AN multiplicand AN "=" AN PRODUCKT OF multiplicand AN multiplier AN " " MKAY MKAY BTW AN is optional to separate arguments, a linebreak is an implicit MKAY.
    IM OUTTA YR inner
    VISIBLE output
IM OUTTA YR outer
KTHXBYE BTW Unnecessary in current implementations

Pythonated для не-динамиков:

for multiplicand in range(1, 10):
    output = ""
    for multiplier in range(1, multiplicand + 1):
        output = output + (multiplier + "x" + multiplicand + "=" + str(multiplicand * multiplier) + " ")
    print(output)
OldBunny2800
источник
Как человек, который также использовал LOLCODE в подаче заявки на вызов кода, приветствую меня! ЛЮБЛЮ этот lang
jdstankosky
2

c #, 142 байта

Enumerable.Range(1,9).ToList().ForEach(i =>Enumerable.Range(1,i).ToList().ForEach(j=>Console.Write("{0}x{1}={2}{3}",j,i,j*i,j==i?"\n":"\t")));

И не для в поле зрения ...

supermeerkat
источник
ForEach "не в поле зрения" хорошо ... XD
HyperNeutrino
2

> <> , 50 байтов

1v
 1
?\::n"x"o{::n"="o}*n" "o1+:{:})
 \~1+:a=?;ao

Вы можете попробовать это на онлайн-переводчике .

Обратите внимание, что в каждой строке есть завершающие пробелы, что может сделать его неправильным (OP не указал на этот момент на этот ответ).

Аарон
источник
2

/// , 268 байт

/_/\/\///x/×_N/x9=_E/x8=_V/x7=_S/x6=_F/x5=_R/x4=_O/
1_t/  2_h/ 3/1x1=1Ox2=2tx2=4Ox3=3tx3=6 hx3=9OR4tR8 hR12 4R16OF5tF10hF15 4F20 5F25OS6tS12hS18 4S24 5S30 6S36OV7tV14hV21 4V28 5V35 6V42 7V49OE8tE16hE24 4E32 5E40 6E48 7E56 8E64ON9tN18hN27 4N36 5N45 6N54 7N63 8N72 9N81
Эрик Outgolfer
источник
2

ЯВА, 103 94 92 90 байт

Использование JShell из Java 9 SDK позволяет мне сэкономить большое количество места

for(int i=0,j;i++<9;)for(j=1;j<=i;)System.out.print(i+"*"+j+"="+i*j+"\t"+(j++<i?"":"\n"))

Следуя предложению Кевина, я уменьшил решение на 2 байта.

Благодаря Cliffroot, я смог уменьшить его еще на 1 байт

user902383
источник
1
Вы можете сохранить несколько байтов, удалив int второй цикл for и добавив ,jпервый. Так вот так:for(int i=0,j;++i<=9;)for(j=1;j<=i;)System.out.print(i+"*"+j+"="+i*j+"\t"+(j++<i?"":"\n"));
Кевин Круйссен
Кажется, что вы можете заменить ++i<=9наi++<9
Cliffroot
2

C 79 байт

i=1,j=1;f(){printf("%dx%d=%d ",j,i,i*j);++i>j?++j,i=1,j<=9?puts(""),f():0:f();}

главный

main(){f();}

Таблица

1x1=1 
2x1=2 2x2=4 
3x1=3 3x2=6 3x3=9 
4x1=4 4x2=8 4x3=12 4x4=16 
5x1=5 5x2=10 5x3=15 5x4=20 5x5=25 
6x1=6 6x2=12 6x3=18 6x4=24 6x5=30 6x6=36 
7x1=7 7x2=14 7x3=21 7x4=28 7x5=35 7x6=42 7x7=49 
8x1=8 8x2=16 8x3=24 8x4=32 8x5=40 8x6=48 8x7=56 8x8=64 
9x1=9 9x2=18 9x3=27 9x4=36 9x5=45 9x6=54 9x7=63 9x8=72 9x9=81 
RosLuP
источник
2

Tcl 98 символов

while {[incr a]<10} {set b 0;while {[incr b]<=$a} {puts -nonewline "$a×$b=[expr $a*$b] "};puts ""}
Йоханнес Кун
источник
1

Javascript: 82 символа

o="";for(a=1;a<10;a++){for(b=1;b<=a;b++){o+=a+"x"+b+"="+(a*b)+" "}o+="\n"}alert(o)
Майк Кларк
источник
1
Ваш код может быть сокращен до 75, как это for(i=0,s="";9>i++;){for(j=0;j++<i;)s+=j+"x"+i+"="+j*i+" ";s+="\n"}alert(s), однако вещь с двумя пробелами на 2 цифры не соблюдается, я собирался представить тот, но +(9<i*j?" ":" ")вместо простого +" " редактирования: на троице исчезли двойные пробелы, но они на втором param
ajax333221
Я буду разборчив, но 4x4не прямо под, 5x4как в задаче.
user902383
1

Python: 87

Я смотрю на решения, которые выложили другие, и большинство из них, кажется, не получают правильный интервал.

for i in range(1,10):print''.join(('%s×%s=%s'%(j,i,i*j)).ljust(7)for j in range(1,i+1))
Fraxtil
источник
У вас есть пробелы, это считается? ;-)
Восстановить Монику
1

Python (79)

или ( 77 ), если я использую, range(10)за исключением того, что в начале выдает пустую строку

for i in range(1,10):print' '.join('%dx%d=%-2d'%(j,i,j*i)for j in range(1,i+1))

1x1=1 
1x2=2  2x2=4 
1x3=3  2x3=6  3x3=9 
1x4=4  2x4=8  3x4=12 4x4=16
1x5=5  2x5=10 3x5=15 4x5=20 5x5=25
1x6=6  2x6=12 3x6=18 4x6=24 5x6=30 6x6=36
1x7=7  2x7=14 3x7=21 4x7=28 5x7=35 6x7=42 7x7=49
1x8=8  2x8=16 3x8=24 4x8=32 5x8=40 6x8=48 7x8=56 8x8=64
1x9=9  2x9=18 3x9=27 4x9=36 5x9=45 6x9=54 7x9=63 8x9=72 9x9=81
jamylak
источник
1

Perl: 65 , 62 символа

map{map{printf"%dx%d=%2d ",$_,$i,$_*$i}1..($i=$_);print$/}1..9
Toto
источник
Оставьте 2 символа, убрав printfкруглые скобки; запасной 1 символ, перемещая назначение $ я в выражении диапазон: map{map{printf"%dx%d=%2d ",$_,$i,$_*$i}1..($i=$_);print$/}1..9.
manatwork
@ Manatwork: Большое спасибо.
Тото