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

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.


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.


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

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.


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 ⍺≥⍵.


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

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

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

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

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


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.


3

Maple, 64

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

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.


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

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;

3

Fourier, 756 632 byte

Terima kasih @BetaDecay untuk 124 byte!

1o120~Ea1o61a1o10~Na1oEa2o61a2o32~Saa2oEa2o61a4oNa1oEa3o61a3oSaa2oEa3o61a6oSaa3oEa3o61a9o^a1oEa4o61a4oSaa2oEa4o61a8oSaa3oEa4o61a12oSa4oEa4o61a16oNa1oEa5o61a5oSaa2oEa5o61aNoSa3oEa5o61a15oSa4oEa5o61a20oSa5oEa5o61a25oNa1oEa6o61a6oSaa2oEa6o61a12oSa3oEa6o61a18oSa4oEa6o61a24oSa5oEa6o61a30oSa6oEa6o61a36oNa1oEa7o61a7oSaa2oEa7o61a14oSa3oEa7o61a21oSa4oEa7o61a28oSa5oEa7o61a35oSa6oEa7o61a42oSa7oEa7o61a49oNa1oEa8o61a8oSaa2oEa8o61a16oSa3oEa8o61a24oSa4oEa8o61aSoa5oEa8o61a40oSa6oEa8o61a48oSa7oEa8o61a56oSa8oEa8o61a64oNa1oEa9o61a9oSaa2oEa9o61a18oSa3oEa9o61a27oSa4oEa9o61a36oSa5oEa9o61a45oSa6oEa9o61a54oSa7oEa9o61a63oSa8oEa9o61a72oSa9oEa9o61a81o

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

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


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

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)

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


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


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

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


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 

2

Tcl 98 karakter

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

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)

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

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

1

Perl: 65 , 62 karakter

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

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
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.