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


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

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чтобы изменить >=к <. Я не обновлял скриншот, но он влияет только на формулу вверху, а не на вывод.


ХА! Я задавался вопросом, когда я увижу ответ 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);}

Добро пожаловать в 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

Нет петель.


Соединения (и наречия) имеют более высокий приоритет, чем глаголы, поэтому вы можете удалить 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

Можно сохранить один символ, изменив начальный (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

Вы можете удалить некоторые запятые с тем же эффектом: ↑{⍵{⍕⍵'×'⍺'=',⍺×⍵}¨⍳⍵}¨⍳9или даже использовать новый «ключевой оператор»:{⍕⍵'×'⍺'=',⍺×⍵}¨∘⍳⌸⍳9
— ngn

4

Mathematica , 45

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

Grid@Table[Row@{a, "x", b, "=", a b}, {a, 9}, {b, a}]

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

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



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 операция записи выполнялась (быстрее!) И имела магические числа (вау!) И помещала весь результат в стек назад перед выполнением системного вызова. Я также вынул процедуру выхода, потому что кому нужен правильный код выхода?

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

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

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

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


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

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;

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

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

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


ну, единственное, что я уверен, это то, что можно получить 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)

Как человек, который также использовал 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")));

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


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

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 байт


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 


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

У вас есть пробелы, это считается? ;-)
— Восстановить Монику

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

1

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

map{map{printf"%dx%d=%2d ",$_,$i,$_*$i}1..($i=$_);print$/}1..9

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

@ Manatwork: Большое спасибо.
— Тото
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.