Cetak Tabel Multiplikasi ini

17

Tulis kode terpendek untuk mencetak Tabel Multiplikasi berikut:

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
sumber
6
Adakah yang benar-benar akan melakukan sesuatu selain 2 forloop? Di mana bagian yang menantang (menarik)?
jdstankosky
3
Saya tidak menggunakan for. Ok saya gunakan while.
Johannes Kuhn
3
Apakah spasi tambahan penting?
Pasang kembali Monica
mengapa di kolom pertama ada 2 spasi dan bukan 1? (seperti
colum
1
@ jdstankosky mungkin Anda mungkin menemukan jawaban saya sedikit lebih menarik - tidak ada loop yang terlibat
Taylor Scott

Jawaban:

13

Excel, 92 91 Bytes

Dari jendela langsung editor VBA, jalankan perintah berikut: Range("A1:I9").Formula="=IF(ROW()<COLUMN(),"""",COLUMN()&""×""&ROW()&""=""&COLUMN()*ROW())" Output langsung pada lembar kerja aktif. Tangkapan layar keluaran Excel

Aku golfed sebuah byte ekstra dengan menukar urutan dari suatu ifberubah >=ke <. Saya tidak memperbarui tangkapan layar, tetapi hanya memengaruhi rumus di bagian atas, bukan output.

GuitarPicker
sumber
HA! Saya bertanya-tanya kapan saya melihat jawaban excel, +1.
Magic Gurita Guci
1
Terima kasih. Saya pikir saya sebagian termotivasi oleh komentar tentang melakukannya tanpa FORloop bersarang biasa .
GuitarPicker
Punyaku juga !!!
Magic Gurita Guci
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])

sedikit bermain golf lebih baik daripada dua versi Python lainnya.

Daniel
sumber
Gunakan Python 3.6 dengan f-string untuk -1 byte: TIO
connectyourcharger
7

C ++, 106 98 byte

Saya menggunakan dua loop dan beberapa trik.

#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
sumber
Selamat datang di PPCG! Posting pertama yang bagus!
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":" ";}lebih pendek 3 byte.
DJMcMayhem
Apakah Anda membutuhkan ruang antara #importdan <cstdio>?
Zacharý
@ Zacharý no space itu tidak diperlukan
Karl Napf
5

J: 57 51 karakter

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

Tidak ada loop.

SL2
sumber
Konjungsi (dan kata keterangan) memiliki prioritas lebih tinggi dari kata kerja sehingga Anda dapat menghapus 3 pasang tanda kurung. ([:;"2*\#"2(":@],'x',":@[,'=',":@*,' '"_)"0/~)>:i.9
randomra
@randomra Panggilan bagus. Terima kasih atas tipnya!
SL2
4

APL (37)

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

Dan itu bukan hanya dua for-loop. Di APL, konstruk berikut:

x ∘.F y

di mana xdan yadalah daftar, dan Fmerupakan fungsi, berlaku Funtuk setiap pasangan item di xdany dan memberi Anda sebuah matriks.

Jadi: ∆∘.×∆←⍳9memberi Anda tabel perkalian dari 1 hingga 9. Fungsi di atas menghasilkan string yang diperlukan untuk setiap pasangan, yaitu (⍕⍺), representasi string dari angka pertama, diikuti oleh ×, diikuti oleh (⍕⍵), representasi string dari angka kedua, diikuti oleh =, diikuti oleh, diikuti oleh, ⍕⍺×⍵, selama ⍺≥⍵.

marinus
sumber
4

Ruby: 60 59 karakter

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

Contoh dijalankan:

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
sumber
Bisa menyimpan satu karakter dengan mengubah awal (1..9).map{menjadi 1.upto(9){!
Paul Prestidge
Ada spasi tambahan (3 baris pertama). Tabel asli tidak memilikinya. Saya tidak yakin apakah itu membuat perbedaan, ...
Reinstate Monica
@ Wolfram, semua solusi yang saya periksa memiliki spasi tambahan atau tidak mereproduksi format yang tepat.
manatwork
4

Perl, 54 Karakter

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

sumber
4

APL (Dyalog), 28

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

Dianalogikan dengan loop ganda dalam bahasa lain

{⍵{...}¨⍳⍵}¨⍳9 mengatur loop ganda
⍕⍵,'×',⍺,'=',⍺×⍵ membuat string untuk setiap pasangan
Mengkonversi array array string ke matriks sengatan

Keluaran

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
sumber
Anda dapat menghapus beberapa koma dengan efek yang sama: ↑{⍵{⍕⍵'×'⍺'=',⍺×⍵}¨⍳⍵}¨⍳9atau bahkan menggunakan "operator kunci" yang baru:{⍕⍵'×'⍺'=',⍺×⍵}¨∘⍳⌸⍳9
ngn
4

Mathematica , 45

Cukup membosankan, tapi saya kira ini berfungsi sebagai perbandingan sintaks:

Grid@Table[Row@{a, "x", b, "=", a b}, {a, 9}, {b, a}]
Tuan Wisaya
sumber
2
Apa, kamu bilang tidak ada builtin untuk ini?
Aaron
1
@ Harun Fungsi mengasapi Mathematica belum sejauh itu , untungnya.
Mr.Wizard
4

D, 75 karakter

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

Anda baru saja mengatakan kode tidak berfungsi atau program penuh

ratchet freak
sumber
1
Secara default, snippet tidak diperbolehkan; sebuah fungsi atau program lengkap diperlukan.
spaghetto
@quartata Jawaban ini lebih dulu dari standar kami setengah tahun.
Dennis
@ Dennis Oh, saya tidak menyadari aturan tidak boleh ada cuplikan yang baru. Maaf.
spaghetto
Apakah ini akan berhasil? foreach(i,1..10){foreach(j,1..i+1)writef("%dx%d=%d ",i,j,i*j);writeln;}
Zacharý
3

VBScript (133); tanpa loop.

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

Atas permintaan penantang: tidak ada loop. Kode ini menggunakan panggilan subrutin rekursif.

AutomatedChaos
sumber
3

Maple, 64

seq(printf(seq(printf("%ax%a=%a ",j,i,i*j),j=1..i),"\n"),i=1..9)
DSkoog
sumber
3

kode mesin x86_64 (linux), 175 99 76 byte

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

Ini adalah dump dari file biner, dan semua ini adalah 175 byte. Ini pada dasarnya melakukan dua loop yang sama seperti yang dilakukan semua jawaban, tetapi mencetak ke konsol sedikit lebih sulit dan pada dasarnya mengharuskan mendorong karakter untuk mencetak ke stack secara terbalik, dan kemudian membuat syscall (khusus linux) untuk benar-benar memasukkan karakter-karakter itu. ke stdout.

Saya sekarang telah mengoptimalkan ini sehingga hanya 1 operasi tulis dilakukan (lebih cepat!) Dan memiliki angka ajaib (wow!) Dan dengan mendorong seluruh hasil ke tumpukan ke belakang sebelum melakukan syscall. Saya juga mengeluarkan rutin keluar karena siapa yang butuh kode keluar yang benar?

Berikut ini tautan ke pertama dan kedua saya upaya , dalam sintaks nasm aslinya.

Saya menyambut siapa saja yang memiliki saran lain tentang bagaimana hal itu dapat ditingkatkan. Saya juga bisa menjelaskan logikanya lebih terinci jika ada yang penasaran.

(Juga, itu tidak mencetak ruang ekstra untuk membuat semua kolom sejajar, tetapi jika itu diperlukan saya bisa memasukkan logika dengan biaya beberapa byte lagi).

EDIT: Sekarang mencetak ruang ekstra dan bermain golf lebih banyak lagi! Itu melakukan beberapa hal yang sangat gila dengan register, dan mungkin tidak stabil jika program ini akan diperluas.

davey
sumber
PPCG membutuhkan program atau fungsi lengkap. Cuplikan secara implisit dilarang (yaitu Anda dapat menggunakannya hanya jika OP telah secara eksplisit mengizinkannya.)
Erik the Outgolfer
Oh, salahku. Saya lupa OP tidak menentukan itu.
Davey
3

Javascript, 190 byte

Terlambat ke pesta, tapi aku jengkel dengan komentar @jdstankosky dan memutuskan untuk mengambil pendekatan yang berbeda. Berikut adalah entri Javascript yang membuat template dan mengevaluasi dirinya sendiri sepanjang jalan.

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

Versi un-golfed (versi yang sedikit lebih tua di mana fungsi mengembalikan tabel alih-alih skrip yang menyiagakannya, tetapi prinsip yang sama berlaku):

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
sumber
1
Saya membuat komentar itu beberapa waktu yang lalu, haha. Saya sebenarnya senang melihat ini.
jdstankosky
3

Pascal, 128 byte

Satu prosedur rekursif menangani semuanya. Panggil dengan 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;

Tidak Disatukan:

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
sumber
3

Fourier, 756 632 byte

Terima kasih @BetaDecay untuk 124 byte!

1o120~Ea1o61a1o10~Na1oEa2o61a2o32~Saa2oEa2o61a4oNa1oEa3o61a3oSaa2oEa3o61a6oSaa3oEa3o61a9o^a1oEa4o61a4oSaa2oEa4o61a8oSaa3oEa4o61a12oSa4oEa4o61a16oNa1oEa5o61a5oSaa2oEa5o61aNoSa3oEa5o61a15oSa4oEa5o61a20oSa5oEa5o61a25oNa1oEa6o61a6oSaa2oEa6o61a12oSa3oEa6o61a18oSa4oEa6o61a24oSa5oEa6o61a30oSa6oEa6o61a36oNa1oEa7o61a7oSaa2oEa7o61a14oSa3oEa7o61a21oSa4oEa7o61a28oSa5oEa7o61a35oSa6oEa7o61a42oSa7oEa7o61a49oNa1oEa8o61a8oSaa2oEa8o61a16oSa3oEa8o61a24oSa4oEa8o61aSoa5oEa8o61a40oSa6oEa8o61a48oSa7oEa8o61a56oSa8oEa8o61a64oNa1oEa9o61a9oSaa2oEa9o61a18oSa3oEa9o61a27oSa4oEa9o61a36oSa5oEa9o61a45oSa6oEa9o61a54oSa7oEa9o61a63oSa8oEa9o61a72oSa9oEa9o61a81o
Oliver Ni
sumber
1
Saya berhasil melepaskan 124 byte dari program Anda dengan menyimpan angka 120 sebagai variabel E, angka 32 sebagai S dan 10 sebagai N.
Beta Decay
2

vba 55

(jendela langsung)

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

note - GWBasic hanya membutuhkan 2 karakter tambahan:

1 for f=1 to 9:for j=1 to f:?f;"x";j;"=";f*j,:next:?:next
SeanC
sumber
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+" "

Saya ingin tahu apakah sesuatu yang lebih baik dari dua (gabungan?) Untuk loop adalah mungkin ...

tommeding
sumber
baik, satu-satunya hal yang saya yakin adalah mungkin untuk mendapatkan 75 pada loop yang terpisah ( komentar lama saya )
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}

Golf, menggunakan baris baru yang eksplisit dan, menggunakan opsi kepala yang tidak digunakan lagi (terima kasih 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}

Keluaran:

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
Thor
sumber
Buat 8 karakter dengan mengganti semua $(( ))evaluasi aritmatika dengan $[ ]; bagikan 2 karakter dengan mengganti $'\n'karakter baris baru yang keluar dengan karakter literal (maksud saya, yes 'dalam satu baris, kemudian 'pada baris berikutnya); cadang 2 karakter dengan tidak menggunakan head's -npilihan eksplisit, hanya -dan jumlah.
manatwork
@Manatwork: Saya tidak tahu tentang $[ ]notasi, senang tahu. Mengganti -noleh -hanya satu karakter kurang sehingga totalnya 11, terima kasih banyak :).
Thor
2

LOLCODE, 202 byte

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

Tidak Disatukan:

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 untuk non-leetspeakers:

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
sumber
Sebagai seseorang yang juga menggunakan LOLCODE dalam pengiriman tantangan kode, dapatkan upvote saya! LOVE this lang
jdstankosky
2

c #, 142 byte

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

Dan bukan untuk di depan mata ...

supermeerkat
sumber
ForEach"bukan untuk di depan mata" yah ... xD
HyperNeutrino
2

> <> , 50 byte

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

Anda dapat mencobanya di penerjemah online .

Perhatikan bahwa ada spasi tambahan di setiap baris, yang mungkin membuatnya salah (OP belum menyatakan poin ini pada jawaban ini).

Harun
sumber
2

/// , 268 byte

/_/\/\///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
Erik the Outgolfer
sumber
2

JAVA, 103 94 92 90 byte

Menggunakan JShell dari Java 9 SDK memungkinkan saya untuk menghemat banyak ruang

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

Mengikuti saran Kevin, saya mengurangi solusi sebanyak 2 byte.

Berkat cliffroot, saya dapat menguranginya dengan 1 byte lagi

pengguna902383
sumber
1
Anda dapat menyimpan beberapa byte dengan menghapus int dari for-loop kedua, dan menambahkan ,jyang pertama. Jadi seperti ini:for(int i=0,j;++i<=9;)for(j=1;j<=i;)System.out.print(i+"*"+j+"="+i*j+"\t"+(j++<i?"":"\n"));
Kevin Cruijssen
Sepertinya Anda dapat mengganti ++i<=9dengani++<9
cliffroot
2

C 79 byte

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

yang utama

main(){f();}

meja

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
sumber
2

Tcl 98 karakter

while {[incr a]<10} {set b 0;while {[incr b]<=$a} {puts -nonewline "$a×$b=[expr $a*$b] "};puts ""}
Johannes Kuhn
sumber
1

Javascript: 82 karakter

o="";for(a=1;a<10;a++){for(b=1;b<=a;b++){o+=a+"x"+b+"="+(a*b)+" "}o+="\n"}alert(o)
Mike Clark
sumber
1
kode Anda dapat disingkat menjadi 75 seperti ini for(i=0,s="";9>i++;){for(j=0;j++<i;)s+=j+"x"+i+"="+j*i+" ";s+="\n"}alert(s), namun hal spasi ganda pada 2 digit tidak dihormati, saya akan mengirimkan yang satu tetapi menggunakan +(9<i*j?" ":" ")alih-alih hanya +" " mengedit: pada ternary ruang ganda menghilang, tetapi mereka berada di yang kedua param
ajax333221
Saya akan pilih-pilih tetapi 4x4tidak langsung di bawah 5x4seperti dalam tugas.
user902383
1

Python: 87

Saya sedang melihat-lihat solusi yang telah diposting orang lain dan kebanyakan dari mereka tampaknya tidak mendapatkan spasi yang benar.

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
sumber
Anda memiliki spasi tambahan, apakah itu diperhitungkan? ;-)
Pasang kembali Monica
1

Python (79)

atau ( 77 ) jika saya menggunakan range(10)kecuali yang menghasilkan garis kosong di awal

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
sumber
1

Perl: 65 , 62 karakter

map{map{printf"%dx%d=%2d ",$_,$i,$_*$i}1..($i=$_);print$/}1..9
Toto
sumber
Buat cadangan 2 karakter dengan menghapus printftanda kurung; cadang 1 karakter dengan memindahkan penugasan $ i ke dalam ekspresi kisaran: map{map{printf"%dx%d=%2d ",$_,$i,$_*$i}1..($i=$_);print$/}1..9.
manatwork
@manatwork: Terima kasih banyak.
Toto