Wydrukuj tę tabliczkę mnożenia

17

Napisz najkrótszy kod, aby wydrukować następującą tabliczkę mnożenia:

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
źródło
6
Czy ktoś naprawdę zrobi coś poza 2 forpętlami? Gdzie jest trudna (interesująca) część?
jdstankosky
3
Nie używam for. Ok, używam while.
Johannes Kuhn
3
Czy końcowe spacje są ważne?
Przywróć Monikę
dlaczego w pierwszej kolumnie są 2 spacje, a nie 1? (podobnie jak inne
kolumny
1
@ jdstankosky może moja odpowiedź może być nieco bardziej interesująca - nie wymaga pętli
Taylor Scott

Odpowiedzi:

13

Excel, 92 91 bajtów

W bezpośrednim oknie edytora VBA uruchom następującą komendę: Range("A1:I9").Formula="=IF(ROW()<COLUMN(),"""",COLUMN()&""×""&ROW()&""=""&COLUMN()*ROW())" Dane wyjściowe znajdują się bezpośrednio w aktywnym arkuszu. Excel output screenshot

Grałem w dodatkowy bajt, zmieniając kolejność ifzmiany >=na <. Nie zaktualizowałem zrzutu ekranu, ale wpływa on tylko na formułę u góry, a nie na wynik.

GuitarPicker
źródło
HA! Zastanawiałem się, kiedy zobaczę odpowiedź programu Excel +1.
Magic Octopus Urn
1
Dzięki. Myślę, że częściowo motywowały mnie komentarze na temat robienia tego bez zwykłej zagnieżdżonej FORpętli.
GuitarPicker
Mój też był !!!
Magic Octopus Urn
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])

trochę lepiej grał w golfa niż pozostałe dwie wersje Pythona.

Daniel
źródło
Użyj Pythona 3.6 z ciągami F dla -1 bajtów: TIO
connectyourcharger
7

C ++, 106 98 bajtów

Użyłem dwóch pętli i kilku sztuczek.

#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
źródło
Witamy w PPCG! Miły pierwszy post!
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":" ";}jest o 3 bajty krótszy.
DJMcMayhem
Czy potrzebujesz odstępu między #importi <cstdio>?
Zacharý
@ Zacharý nie, że miejsce nie jest potrzebne
Karl Napf
5

J: 57 51 znaków

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

Bez pętli.

SL2
źródło
Koniunkcje (i przysłówki) mają wyższy priorytet niż czasowniki, więc możesz usunąć 3 pary nawiasów. ([:;"2*\#"2(":@],'x',":@[,'=',":@*,' '"_)"0/~)>:i.9
randomra 16.04.13
@randomra Good call. Dzięki za wskazówkę!
SL2
4

APL (37)

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

I to nie tylko dwie pętle for. W APL następująca konstrukcja:

x ∘.F y

gdzie xi ysą listami, i Fjest funkcją, stosuje się Fdo każdej pary pozycji w xiy i daje macierz.

Zatem: ∆∘.×∆←⍳9dostajemy tabliczkę mnożenia od 1 do 9. Powyższa funkcja generuje wymagany ciąg dla każdej pary, tj. (⍕⍺)Reprezentacja ciągu pierwszej liczby, a ×następnie (⍕⍵)reprezentacja ciągu drugiej liczby, po której =następuje, a następnie ⍕⍺×⍵, o ile ⍺≥⍵.

marinus
źródło
4

Rubin: 60 59 znaków

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

Przykładowy przebieg:

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
człowiek w pracy
źródło
Można zapisać jedną postać, zmieniając inicjał (1..9).map{na 1.upto(9){!
Paul Prestidge 17.04.13
Są spacje końcowe (pierwsze 3 linie). Oryginalny stół ich nie ma. Nie jestem jednak pewien, czy to robi różnicę ...
Przywróć Monikę
@WolframH, wszystkie sprawdzone przeze mnie rozwiązania mają końcowe spacje lub nie odtwarzają dokładnego formatowania.
manatwork
4

Perl, 54 znaków

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

źródło
4

APL (Dyalog), 28

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

Analogicznie do podwójnej pętli w innych językach

{⍵{...}¨⍳⍵}¨⍳9ustawia podwójną pętlę
⍕⍵,'×',⍺,'=',⍺×⍵tworzy ciąg dla każdej pary
Konwertuj tablicę ciągów na macierz żądeł

Wynik

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
źródło
możesz usunąć niektóre przecinki z tym samym skutkiem: ↑{⍵{⍕⍵'×'⍺'=',⍺×⍵}¨⍳⍵}¨⍳9lub nawet skorzystać z nowego „głównego operatora”:{⍕⍵'×'⍺'=',⍺×⍵}¨∘⍳⌸⍳9
ngn
4

Mathematica , 45

Dość nudne, ale chyba służy jako porównanie składni:

Grid@Table[Row@{a, "x", b, "=", a b}, {a, 9}, {b, a}]
Mr.Wizard
źródło
2
Co, mówisz mi, że nie ma na to wbudowanej funkcji?
Aaron
1
@Aaron Na szczęście funkcja rozdęta w Mathematica nie rozciąga się jeszcze tak daleko.
Mr.Wizard
4

D, 75 znaków

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

właśnie powiedziałeś, że kod nie działa lub pełny program

maniak zapadkowy
źródło
1
Domyślnie fragmenty nie są dozwolone; wymagana jest funkcja lub pełny program.
spaghetto
@quartata Ta odpowiedź wyprzedza nasze domyślne o półtora roku.
Dennis
@Dennis Och, nie zdawałem sobie sprawy, że zasada zakazu używania fragmentów była nowa. Przepraszam.
spaghetto
Czy to zadziała? foreach(i,1..10){foreach(j,1..i+1)writef("%dx%d=%d ",i,j,i*j);writeln;}
Zacharý
3

VBScript (133); bez pętli.

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

Na żądanie pretendenta: bez pętli. Ten kod używa rekurencyjnych wywołań podprogramów.

AutomatedChaos
źródło
3

Klon, 64

seq(printf(seq(printf("%ax%a=%a ",j,i,i*j),j=1..i),"\n"),i=1..9)
DSkoog
źródło
3

Kod maszynowy x86_64 (Linux), 175 99 76 bajtów

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

To zrzut pliku binarnego, a wszystko to 175 bajtów. Zasadniczo wykonuje te same dwie pętle, co wszystkie odpowiedzi, ale drukowanie na konsoli jest nieco trudniejsze i w zasadzie wymaga wypychania znaków do drukowania na stosie w odwrotnej kolejności, a następnie wykonania wywołania systemowego (specyficznego dla systemu Linux), aby faktycznie umieścić te znaki na standardowe wyjście.

Zoptymalizowałem to teraz, aby wykonać tylko 1 operację zapisu (szybciej!) I mieć magiczne liczby (wow!) I pchając cały wynik do stosu do tyłu przed wykonaniem połączenia systemowego. Wyjąłem również procedurę wyjścia, bo kto potrzebuje odpowiedniego kodu wyjścia?

Oto link do mojego pierwszego i drugiego próby w oryginalnej składni nasm.

Z zadowoleniem przyjmuję każdego, kto ma inne sugestie dotyczące tego, jak można to poprawić. Mogę również wyjaśnić logikę bardziej szczegółowo, jeśli ktoś jest ciekawy.

(Ponadto nie drukuje dodatkowych spacji, aby wyrównać wszystkie kolumny, ale jeśli jest to wymagane, mogę umieścić logikę kosztem kilku dodatkowych bajtów).

EDYCJA: Teraz drukuje dodatkowe miejsca i jest jeszcze bardziej golfa! Robi całkiem szalone rzeczy z rejestrami i jest prawdopodobnie niestabilny, gdyby ten program został rozszerzony.

davey
źródło
PPCG wymaga pełnych programów lub funkcji. Fragmenty są domyślnie niedozwolone (tzn. Możesz ich używać tylko wtedy, gdy PO je wyraźnie zezwala).
Erik, Outgolfer,
Och, mój zły. Zapomniałem, że OP tego nie określił.
davey
3

JavaScript, 190 bajtów

Późno na imprezę, ale zachwycił mnie komentarz @jdstankosky i postanowiłem przyjąć inne podejście. Oto wpis Javascript, który wymusza szablon i ewaluuje się po drodze.

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

Wersja bez gry w golfa (nieco starsza wersja, w której funkcja zwraca tabelę zamiast skryptu ostrzegającego, ale obowiązują te same zasady):

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
źródło
1
Skomentowałem to dawno temu, haha. Cieszę się, że to widzę.
jdstankosky,
3

Pascal, 128 bajtów

Jedna rekurencyjna procedura zajmuje się wszystkim. Zadzwoń z 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;

Nie golfowany:

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
źródło
3

Fourier, 756 632 bajty

Dzięki @BetaDecay za 124 bajty!

1o120~Ea1o61a1o10~Na1oEa2o61a2o32~Saa2oEa2o61a4oNa1oEa3o61a3oSaa2oEa3o61a6oSaa3oEa3o61a9o^a1oEa4o61a4oSaa2oEa4o61a8oSaa3oEa4o61a12oSa4oEa4o61a16oNa1oEa5o61a5oSaa2oEa5o61aNoSa3oEa5o61a15oSa4oEa5o61a20oSa5oEa5o61a25oNa1oEa6o61a6oSaa2oEa6o61a12oSa3oEa6o61a18oSa4oEa6o61a24oSa5oEa6o61a30oSa6oEa6o61a36oNa1oEa7o61a7oSaa2oEa7o61a14oSa3oEa7o61a21oSa4oEa7o61a28oSa5oEa7o61a35oSa6oEa7o61a42oSa7oEa7o61a49oNa1oEa8o61a8oSaa2oEa8o61a16oSa3oEa8o61a24oSa4oEa8o61aSoa5oEa8o61a40oSa6oEa8o61a48oSa7oEa8o61a56oSa8oEa8o61a64oNa1oEa9o61a9oSaa2oEa9o61a18oSa3oEa9o61a27oSa4oEa9o61a36oSa5oEa9o61a45oSa6oEa9o61a54oSa7oEa9o61a63oSa8oEa9o61a72oSa9oEa9o61a81o
Oliver Ni
źródło
1
Udało mi się zagrać w golfa 124 bajty poza twoim programem , zapisując liczbę 120 jako zmienną E, liczbę 32 jako S i 10 jako N.
Rozpad Beta
2

vba 55

(bezpośrednie okno)

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

Uwaga - GWBasic potrzebuje tylko 2 dodatkowych znaków:

1 for f=1 to 9:for j=1 to f:?f;"x";j;"=";f*j,:next:?:next
SeanC
źródło
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+" "

Zastanawiam się, czy możliwe jest coś lepszego niż dwa (połączone?) Dla pętli ...

Tomsmeding
źródło
cóż, jedyne, co jestem pewien, to to, że można uzyskać 75 na oddzielnych pętlach ( mój stary komentarz )
ajax333221
2

Coreutils / Basha: 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}

Gra w golfa, używając wyraźnej nowej linii i używając przestarzałej opcji głowy (dzięki 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}

Wynik:

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
źródło
Oszczędź 8 znaków, zastępując wszystkie $(( ))obliczenia arytmetyczne $[ ]; współdziel 2 znaki, zastępując $'\n'znak nowej linii dosłownym (dosłownie yes 'w jednym wierszu, a następnie 'w następnym); Części 2 znaki nie używając head„s -nopcję jawnie, tak -i ten numer.
manatwork
@manatwork: Nie wiedziałem o $[ ]notacji, dobrze wiedzieć. Zastąpienie -nprzez -to tylko jedna postać mniej, więc w sumie jest to 11, dziękuję bardzo :).
Thor
2

LOLCODE, 202 bajty

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

Nie golfowany:

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 dla użytkowników innych niż leet:

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
źródło
Jako ktoś, kto również używał LOLCODE w przesyłaniu wyzwania dotyczącego kodu, mam opinię! UWIELBIAM ten język
jdstankosky
2

c #, 142 bajty

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

I nie na widoku ...

supermeerkat
źródło
ForEach„nie na widoku” cóż ... xD
HyperNeutrino 24.09.17
2

> <> , 50 bajtów

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

Możesz to wypróbować na tłumaczu online .

Zauważ, że w każdej linii znajdują się końcowe spacje, co może sprawić, że będzie niepoprawna (OP nie podał w tym punkcie tej odpowiedzi).

Aaron
źródło
2

/// , 268 bajtów

/_/\/\///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
źródło
2

JAVA, 103 94 92 90 bajtów

Używanie JShell z Java 9 SDK pozwala mi zaoszczędzić dużo miejsca

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

Zgodnie z sugestią Kevina zmniejszyłem rozwiązanie o 2 bajty.

Dzięki Cliffroot byłem w stanie zmniejszyć go o kolejny 1 bajt

użytkownik902383
źródło
1
Możesz zapisać kilka bajtów, usuwając int z drugiej pętli for i dodając ,jdo pierwszej. Więc tak: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
Wydaje się, że można zastąpić ++i<=9zi++<9
cliffroot
2

C 79 bajtów

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

główny

main(){f();}

stół

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
źródło
2

Tcl 98 znaków

while {[incr a]<10} {set b 0;while {[incr b]<=$a} {puts -nonewline "$a×$b=[expr $a*$b] "};puts ""}
Johannes Kuhn
źródło
1

JavaScript: 82 znaki

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
źródło
1
twój kod można skrócić do 75 w ten sposób for(i=0,s="";9>i++;){for(j=0;j++<i;)s+=j+"x"+i+"="+j*i+" ";s+="\n"}alert(s), jednak nie przestrzega się podwójnych spacji na 2 cyfrach, miałem zamiar go przesłać, ale użyłem +(9<i*j?" ":" ")zamiast po prostu +" " edytować: w trójce zniknęły podwójne spacje, ale są na drugiej param
ajax333221
Będę wybredna, ale 4x4nie jest tak 5x4jak w zadaniu.
user902383,
1

Python: 87

Przyglądam się rozwiązaniom opublikowanym przez innych i większość z nich nie wydaje się, aby uzyskać prawidłowe odstępy.

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
źródło
Masz końcowe spacje, czy to się liczy? ;-)
Przywróć Monikę
1

Python (79)

lub ( 77 ) jeśli użyję range(10)oprócz tego, że na początku tworzy pustą linię

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
źródło
1

Perl: 65 , 62 znaków

map{map{printf"%dx%d=%2d ",$_,$i,$_*$i}1..($i=$_);print$/}1..9
Toto
źródło
Oszczędź 2 znaki, usuwając printfnawias; zapasowa 1 znak przesuwając przypisanie $ i do wyrażenia zakres: map{map{printf"%dx%d=%2d ",$_,$i,$_*$i}1..($i=$_);print$/}1..9.
manatwork
@manatwork: Dziękuję bardzo.
Toto