พิมพ์ตารางสูตรคูณนี้


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ตกลงฉันใช้
Johannes Kuhn

3
ช่องว่างต่อท้ายมีความสำคัญหรือไม่
Reinstate Monica

ทำไมในคอลัมน์แรกมีช่องว่าง 2 ช่องและไม่ใช่ 1 (เช่นเดียวกับ colums อื่น ๆ )
RosLuP

1
@jdstankosky บางทีคุณอาจพบว่าคำตอบของฉันน่าสนใจยิ่งขึ้น - ไม่มีลูปเกี่ยวข้อง
Taylor Scott

คำตอบ:


13

Excel, 92 91 ไบต์

จากหน้าต่างตัวแก้ไข VBA ทันทีให้รันคำสั่งต่อไปนี้: Range("A1:I9").Formula="=IF(ROW()<COLUMN(),"""",COLUMN()&""×""&ROW()&""=""&COLUMN()*ROW())" เอาต์พุตอยู่บนแผ่นงานที่ใช้งานอยู่ Excel output screenshot

ผมแข็งแรงเล่นกอล์ฟไบต์พิเศษโดยการเปลี่ยนคำสั่งของนั้นifมีการเปลี่ยนแปลงไป>= <ฉันไม่ได้อัปเดตภาพหน้าจอ แต่มันมีผลกับสูตรที่ด้านบนไม่ใช่ผลลัพธ์


ฮา! ฉันสงสัยว่าเมื่อฉันเห็นคำตอบที่ยอดเยี่ยม +1
Magic Octopus Urn

1
ขอบคุณ ฉันคิดว่าฉันได้แรงบันดาลใจบางส่วนจากความคิดเห็นเกี่ยวกับการทำมันโดยไม่FORวนซ้ำปกติ
GuitarPicker

ของฉันก็เหมือนกัน !!!
Magic Octopus Urn


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

Ruby: 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){!
Paul Prestidge

มีช่องว่างต่อท้าย (3 บรรทัดแรก) ตารางดั้งเดิมไม่มีอยู่ ฉันไม่แน่ใจว่าจะสร้างความแตกต่างได้หรือไม่ ...
Reinstate Monica

@ Wolfram วิธีแก้ปัญหาทั้งหมดที่ฉันตรวจสอบมีช่องว่างต่อท้ายหรือไม่สร้างการจัดรูปแบบที่แน่นอน
จัดการ

4

Perl, 54 ตัวอักษร

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

4

APL (Dyalog), 28

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

คล้ายกับการวนซ้ำสองครั้งในภาษาอื่น

{⍵{...}¨⍳⍵}¨⍳9ตั้งค่าการวนซ้ำสองครั้ง
⍕⍵,'×',⍺,'=',⍺×⍵สร้างสตริงสำหรับแต่ละคู่
แปลงอาร์เรย์ของอาร์เรย์ของสตริงเป็นเมทริกซ์ของ stings

เอาท์พุต

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
คุณกำลังบอกฉันว่าไม่มี builtin สำหรับสิ่งนี้
แอรอน

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 คำตอบนี้มีค่าเริ่มต้นมาก่อนครึ่งปี
Dennis

@Dennis Oh ฉันไม่ทราบว่าไม่มีกฎตัวอย่างที่อนุญาตคือใหม่ ขอโทษ
สปาเก็ตตี้

จะใช้งานได้ไหม 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 (ลินุกซ์), 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 ไบต์ โดยทั่วไปแล้วมันจะทำสองลูปเดียวกันกับที่คำตอบทั้งหมดทำ แต่การพิมพ์ไปที่คอนโซลนั้นค่อนข้างยากและโดยทั่วไปแล้วจำเป็นต้องกดอักขระเพื่อพิมพ์ลงบนสแต็กในทางกลับกันจากนั้นจึงสร้าง syscall เข้าสู่ stdout

ตอนนี้ฉันได้ปรับปรุงสิ่งนี้เพื่อให้การดำเนินการเขียนเพียง 1 ครั้ง (เร็วขึ้น!) และมีหมายเลขเวทย์มนตร์ (ว้าว!) และโดยการกดผลลัพธ์ทั้งหมดลงบนสแต็กย้อนกลับก่อนที่จะสร้าง syscall ฉันยังใช้รูทีน exit เนื่องจากใครต้องการรหัสออกที่เหมาะสม

นี่คือการเชื่อมโยงไปของฉันเป็นครั้งแรกและครั้งที่สองความพยายามในไวยากรณ์เดิมของพวกเขา

ฉันยินดีต้อนรับทุกคนที่มีคำแนะนำอื่น ๆ เกี่ยวกับวิธีการปรับปรุง ฉันยังสามารถอธิบายเหตุผลในรายละเอียดเพิ่มเติมได้ถ้าใครอยากรู้

(นอกจากนี้จะไม่พิมพ์ช่องว่างเพิ่มเติมเพื่อทำให้คอลัมน์ทั้งหมดอยู่ในแนวเดียวกัน แต่ถ้าจำเป็นฉันสามารถใส่ตรรกะลงไปด้วยค่าใช้จ่ายอีกไม่กี่ไบต์)

แก้ไข: ตอนนี้พิมพ์พื้นที่เพิ่มเติมและ golfed ลงมากยิ่งขึ้น! มันกำลังทำเรื่องบ้า ๆ บอ ๆ กับตัวรีจิสเตอร์และอาจไม่เสถียรถ้าโปรแกรมนี้จะขยายตัว


PPCG ต้องการโปรแกรมหรือฟังก์ชั่นเต็มรูปแบบ ตัวอย่างไม่ได้รับอนุญาตโดยนัย (เช่นคุณสามารถใช้งานได้เฉพาะในกรณีที่ OP อนุญาตให้ใช้ได้อย่างชัดเจน)
Erik the Outgolfer

โอ้ฉันไม่ดี ฉันลืม OP ไม่ได้ระบุว่า
เดฟ

3

Javascript, 190 ไบต์

ไปงานปาร์ตี้สาย แต่ฉันรู้สึกปิติกับความเห็นของ @jdstankosky และตัดสินใจที่จะใช้วิธีอื่น นี่คือรายการ Javascript ที่ลบล้างเทมเพลตและ evals เองตลอดทาง

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}

ใช้ Golfed โดยขึ้นบรรทัดใหม่อย่างชัดเจนและใช้ตัวเลือกส่วนหัวที่คัดค้าน (ขอบคุณ 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ของ-nตัวเลือกที่ชัดเจนเพียง-และจำนวน
จัดการ

@ การจัดการ: ฉันไม่ทราบเกี่ยวกับ$[ ]สัญกรณ์ที่ดีที่จะรู้ การแทนที่-nด้วย-อักขระเพียงตัวเดียวก็น้อยกว่าดังนั้นจึงมีทั้งหมด 11 ตัวขอบคุณมาก :)
Thor

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

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

การทำตามคำแนะนำของ Kevin ฉันลดวิธีแก้ปัญหาลง 2 ไบต์

ขอบคุณหน้าผาฉันสามารถลดได้อีก 1 ไบต์


1
คุณสามารถบันทึกสองสามไบต์โดยการลบint จาก for-loop ที่สองและเพิ่มลง,jในอันแรก ดังนั้นเช่นนี้: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

ดูเหมือนว่าคุณสามารถแทนที่++i<=9ด้วยi++<9
หน้าผา

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?" ":" ")แทนการ+" " แก้ไขเพียงอย่างเดียว:ในไตรภาคการเว้นวรรคสองครั้งหายไป 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))

คุณมีช่องว่างต่อท้ายนั่นนับหรือไม่ ;-)
Reinstate Monica

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 ตัวละครโดยการย้ายการโอน $ i map{map{printf"%dx%d=%2d ",$_,$i,$_*$i}1..($i=$_);print$/}1..9ลงในการแสดงออกช่วง:
จัดการ

@ การผลิต: ขอบคุณมาก
โตโต้
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.