Роздрукуйте цю таблицю множення


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
Хтось дійсно збирається щось робити, окрім 2-х 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 output screenshot

Я провів додатковий байт, змінивши порядок ifзміни >=на <. Я не оновлював скріншот, але це впливає лише на формулу вгорі, а не на вихід.


ХА! Мені було цікаво, коли я побачу відповідь відмінне, +1.
Чарівна восьминога урна

1
Спасибі. Я думаю, що мене частково мотивували коментарі щодо того, щоб зробити це без звичного вкладеного FORциклу.
GuitarPicker

Моя теж була !!!
Чарівна восьминога урна

8

Пітон (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ý

@ Zacharý ні, що простір не потрібен
Karl Napf

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, усі перевірені рішення або мають пробіли, або не відтворюють точне форматування.
манатура

4

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

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

4

APL (Діалог), 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

Математика , 45

Дуже нудно, але, мабуть, це служить порівнянням синтаксису:

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

2
Що, ти мені кажеш, що для цього немає побудови?
Аарон

1
@Aaron Функція роздування з Mathematica не ступеня , що ще далеко, до щастя.
Mr.Wizard

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

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) syscall, щоб фактично поставити ці символи в stdout.

Зараз я оптимізував це так, що виконується лише 1 операція запису (швидше!) І має магічні цифри (вау!), І натискаючи весь результат на стек назад, перш ніж робити syscall. Я також зняв процедуру виходу, тому що кому потрібний належний код виходу?

Ось посилання на моє перше і друге спроби, в їх оригінальному синтаксисі насму.

Я вітаю всіх, хто має будь-які інші пропозиції щодо її вдосконалення. Я також можу пояснити логіку більш докладно, якщо хтось цікавий.

(Крім того, він не друкує додаткові пробіли, щоб зробити всі стовпці вирівняними, але якщо це потрібно, я можу вкласти логіку ціною на ще кілька байт).

EDIT: Тепер друкується додаткове місце та ще більше виходить в гольф! Це робить деякі досить шалені речі з регістрами, і, ймовірно, нестабільно, якщо цю програму потрібно було б розширити.


PPCG вимагає повноцінних програм або функцій. Сніппети неявно заборонені (тобто ви можете використовувати їх лише в тому випадку, якщо ОП явно це дозволила.)
Ерік Атгольфер

Ой, моя погана. Я забув, що ОП цього не вказав.
davey

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;

Безголовки:

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.
Бета-розпад

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}

Гольф, використовуючи чіткий новий рядок і, використовуючи застарілий варіант голови (спасибі манатор)

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: Я не знав про $[ ]позначення, добре знати. Заміна -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

Безголовки:

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

Пітонований для динаміків без літа:

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 у поданні виклику коду, отримайте мою нагоду! LOVE this 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

Ви можете спробувати його в онлайн-перекладачі .

Зауважте, що у кожному рядку є пробіли, які можуть зробити його неправильним (ОП не вказано на цей момент станом на цю відповідь).


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

JAVA, 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 байти.

Завдяки скелі я зміг зменшити її ще на 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), однак річ подвійних пробілів у двох цифрах не дотримується, я збирався подати це одне, але використовуючи +(9<i*j?" ":" ")замість того, щоб просто +" " редагувати: на тернарі подвійні пробіли зникли, але вони знаходяться на другій парам
ajax333221

Я буду прискіпливим, але 4x4безпосередньо не під 5x4завданням.
user902383

1

Пітон: 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

Пітон (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дужки 's; запасний 1 символ, переміщаючи призначення $ я в вираженні діапазон: map{map{printf"%dx%d=%2d ",$_,$i,$_*$i}1..($i=$_);print$/}1..9.
манатура

@manatwork: Дуже дякую.
Тото
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.