Drucken Sie diese Multiplikationstabelle


17

Schreiben Sie den kürzesten Code, um die folgende Multiplikationstabelle zu drucken:

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
Wird jemand wirklich etwas anderes tun als 2 forLoops? Wo ist der herausfordernde (interessante) Teil?
Jdstankosky

3
Benutze ich nicht for. Ok, ich benutze while.
Johannes Kuhn

3
Sind Leerzeichen wichtig?
Setzen Sie Monica

Warum gibt es in der ersten Spalte 2 Leerzeichen und nicht 1? (wie die anderen Spalten)
RosLuP

1
@ jdstankosky vielleicht finden Sie meine Antwort ein bisschen interessanter - keine Schleifen beteiligt
Taylor Scott

Antworten:


13

Excel, 92 91 Bytes

Führen Sie im unmittelbaren Fenster des VBA-Editors den folgenden Befehl aus: Range("A1:I9").Formula="=IF(ROW()<COLUMN(),"""",COLUMN()&""×""&ROW()&""=""&COLUMN()*ROW())" Die Ausgabe befindet sich direkt im aktiven Arbeitsblatt. Excel-Ausgabe-Screenshot

Ich golfed ein zusätzliches Byte für die Reihenfolge der ein Vertauschen ifändern >=zu <. Ich habe den Screenshot nicht aktualisiert, aber er wirkt sich nur auf die Formel oben aus, nicht auf die Ausgabe.


HA! Ich fragte mich, wann ich eine exzellente Antwort, +1, sehen würde.
Magic Octopus Urn

1
Vielen Dank. Ich glaube, ich war teilweise motiviert von den Kommentaren, es ohne die übliche verschachtelte FORSchleife zu machen.
GuitarPicker

Meins war auch !!!
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])

etwas besser als die beiden anderen Python-Versionen.


Verwenden Sie Python 3.6 mit f-Strings für -1 Byte: TIO
connectyourcharger

7

C ++, 106 98 Bytes

Ich habe zwei Loops und ein paar Tricks benutzt.

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

Willkommen bei PPCG! Schöner erster Beitrag!
23.

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":" ";}ist 3 Bytes kürzer.
DJMcMayhem

Benötigen Sie ein Leerzeichen zwischen #importund <cstdio>?
Zacharý

@ Zacharý nein, dieser Platz wird nicht benötigt
Karl Napf

5

J: 57 51 Zeichen

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

Keine Schleifen.


Konjunktionen (und Adverbien) haben eine höhere Priorität als Verben, sodass Sie 3 Klammerpaare entfernen können. ([:;"2*\#"2(":@],'x',":@[,'=',":@*,' '"_)"0/~)>:i.9
Randomra

@ Randomra Guter Anruf. Danke für den Tipp!
SL2

4

APL (37)

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

Und es sind nicht einmal zwei For-Loops. In APL das folgende Konstrukt:

x ∘.F y

where- xund yare-Listen und Fsind eine Funktion, die für Fjedes Elementpaar in xund gilt yund Ihnen eine Matrix gibt.

Also: ∆∘.×∆←⍳9bekommt man eine Multiplikationstabelle von 1 bis 9. Die obige Funktion für jedes Paar der erforderliche Zeichenfolge erzeugt, das heißt (⍕⍺), Zeichenfolgendarstellung der ersten Zahl, gefolgt von ×, gefolgt von (⍕⍵), String - Darstellung der zweiten Reihe, gefolgt von =, gefolgt von ⍕⍺×⍵, solange ⍺≥⍵.


4

Ruby: 60 59 Zeichen

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

Probelauf:

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

Konnte ein Zeichen retten, indem man die Initiale (1..9).map{in änderte 1.upto(9){!
Paul Prestidge

Es gibt nachgestellte Leerzeichen (erste 3 Zeilen). Der Originaltisch hat sie nicht. Ich bin mir nicht sicher, ob das einen Unterschied macht ...
Setzen Sie Monica

@WolframH, alle Lösungen, die ich überprüft habe, haben entweder nachgestellte Leerzeichen oder reproduzieren nicht die genaue Formatierung.
manatwork

4

Perl, 54 Zeichen

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

4

APL (Dyalog), 28

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

Analog zu einer Doppelschleife in anderen Sprachen

{⍵{...}¨⍳⍵}¨⍳9Beim Einrichten der Doppelschleife
⍕⍵,'×',⍺,'=',⍺×⍵wird die Zeichenfolge für jedes Paar erstellt.
Konvertieren Sie ein Array von Zeichenfolgen in eine Matrix von Zeichenfolgen

Ausgabe

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

Sie könnten einige der Kommas mit dem gleichen Effekt entfernen: ↑{⍵{⍕⍵'×'⍺'=',⍺×⍵}¨⍳⍵}¨⍳9oder sogar den neuen "Key Operator" verwenden:{⍕⍵'×'⍺'=',⍺×⍵}¨∘⍳⌸⍳9
ngn

4

Mathematica , 45

Ziemlich langweilig, aber ich denke, es dient als Syntaxvergleich:

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

2
Was, du sagst mir, dass es dafür kein eingebautes gibt?
Aaron

1
@Aaron Die Funktion bloat von Mathematica reicht zum Glück noch nicht so weit.
Mr.Wizard

4

D 75 Zeichen

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

Sie haben gerade gesagt, Code funktioniert nicht oder volles Programm


1
Standardmäßig sind Snippets nicht zulässig. Eine Funktion oder ein vollständiges Programm ist erforderlich.
ein Spaghetto

@quartata Diese Antwort liegt anderthalb Jahre vor unseren Standardwerten.
Dennis

@Dennis Oh, ich wusste nicht, dass die Regel, dass keine Snippets erlaubt sind, so neu ist. Es tut uns leid.
ein Spaghetto

Würde das funktionieren? foreach(i,1..10){foreach(j,1..i+1)writef("%dx%d=%d ",i,j,i*j);writeln;}
Zacharý

3

VBScript (133); ohne schleifen.

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

Auf Wunsch des Herausforderers: keine Schleifen. Dieser Code verwendet rekursive Unterprogrammaufrufe.


3

Ahorn, 64

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

3

x86_64 Maschinencode (Linux), 175 99 76 Bytes

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

Dies ist ein Speicherauszug der Binärdatei, und all dies ist 175 Bytes. Grundsätzlich werden die gleichen zwei Schleifen wie bei allen Antworten ausgeführt, aber das Drucken auf der Konsole ist etwas schwieriger und erfordert im Grunde, dass die Zeichen in umgekehrter Reihenfolge auf den Stapel gedruckt werden und dann ein (linuxspezifischer) Systemaufruf ausgeführt wird, um diese Zeichen tatsächlich zu setzen in stdout.

Ich habe dies jetzt so optimiert, dass nur 1 Schreibvorgang ausgeführt wird (schneller!) Und magische Zahlen hat (wow!), Und indem das gesamte Ergebnis vor dem Syscall rückwärts auf den Stapel gelegt wird. Ich habe auch die Exitroutine rausgenommen, weil wer den richtigen Exitcode braucht?

Hier ist ein Link zu meinen ersten und zweiten Versuchen in ihrer ursprünglichen Nasm-Syntax.

Ich begrüße jeden, der andere Vorschläge hat, wie es verbessert werden kann. Ich kann die Logik auch genauer erklären, wenn jemand neugierig ist.

(Außerdem werden nicht die zusätzlichen Leerzeichen gedruckt, um alle Spalten auszurichten, aber wenn dies erforderlich ist, kann ich die Logik auf Kosten einiger weiterer Bytes einfügen.)

BEARBEITEN: Jetzt werden zusätzliche Leerzeichen gedruckt und es wird noch mehr Golf gespielt! Es macht ein paar ziemlich verrückte Sachen mit den Registern und ist wahrscheinlich instabil, wenn dieses Programm erweitert wird.


PPCG erfordert vollständige Programme oder Funktionen. Ausschnitte sind implizit nicht zulässig (dh Sie können sie nur verwenden, wenn das OP sie ausdrücklich zugelassen hat.)
Erik the Outgolfer

Oh mein Schlechtes. Ich vergaß, dass OP das nicht spezifiziert hatte.
Davey

3

Javascript, 190 Bytes

Spät zur Party, aber @jdstankoskys Kommentar hat mich gereizt und ich habe mich für eine andere Herangehensweise entschieden. Hier ist ein Javascript-Eintrag, der eine Vorlage erstellt und sich dabei selbst auswertet.

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

Ungolfed-Version (etwas ältere Version, in der eine Funktion die Tabelle zurückgibt, anstatt sie durch ein Skript zu warnen, aber die gleichen Prinzipien gelten):

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
Ich habe diesen Kommentar vor ziemlich langer Zeit gemacht, haha. Ich bin eigentlich froh, das zu sehen.
Jdstankosky

3

Pascal, 128 Bytes

Eine rekursive Prozedur erledigt alles. Mit anrufen 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

Fourier, 756 632 Bytes

Danke @BetaDecay für 124 Bytes!

1o120~Ea1o61a1o10~Na1oEa2o61a2o32~Saa2oEa2o61a4oNa1oEa3o61a3oSaa2oEa3o61a6oSaa3oEa3o61a9o^a1oEa4o61a4oSaa2oEa4o61a8oSaa3oEa4o61a12oSa4oEa4o61a16oNa1oEa5o61a5oSaa2oEa5o61aNoSa3oEa5o61a15oSa4oEa5o61a20oSa5oEa5o61a25oNa1oEa6o61a6oSaa2oEa6o61a12oSa3oEa6o61a18oSa4oEa6o61a24oSa5oEa6o61a30oSa6oEa6o61a36oNa1oEa7o61a7oSaa2oEa7o61a14oSa3oEa7o61a21oSa4oEa7o61a28oSa5oEa7o61a35oSa6oEa7o61a42oSa7oEa7o61a49oNa1oEa8o61a8oSaa2oEa8o61a16oSa3oEa8o61a24oSa4oEa8o61aSoa5oEa8o61a40oSa6oEa8o61a48oSa7oEa8o61a56oSa8oEa8o61a64oNa1oEa9o61a9oSaa2oEa9o61a18oSa3oEa9o61a27oSa4oEa9o61a36oSa5oEa9o61a45oSa6oEa9o61a54oSa7oEa9o61a63oSa8oEa9o61a72oSa9oEa9o61a81o

1
Ich habe es geschafft, 124 Bytes aus Ihrem Programm zu golfen, indem ich die Nummer 120 als Variable E, die Nummer 32 als S und die Nummer 10 als N
Beta Decay

2

vba 55

(sofortiges Fenster)

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

note - GWBasic benötigt nur 2 zusätzliche Zeichen:

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

Ich frage mich, ob etwas besseres als zwei (kombiniert?) Für Schleifen möglich ist ...


Nun

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}

Golfen mit expliziter Newline und mit veralteter Head-Option (danke 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}

Ausgabe:

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

Ersparen Sie 8 Zeichen, indem Sie alle $(( ))arithmetischen Auswertungen durch ersetzen $[ ]. Teilen Sie 2 Zeichen, indem Sie das $'\n'maskierte Zeilenumbruchzeichen durch ein wörtliches Zeichen ersetzen (ich meine, yes 'in einer Zeile, dann 'in der folgenden). ersparen Sie 2 Zeichen, indem Sie nicht explizit die Option head's verwenden, sondern -nnur -die Zahl.
Manatwork

@manatwork: Ich wusste nichts über die $[ ]Notation, gut zu wissen. Ersetzen -ndurch -ist nur ein Zeichen weniger, also sind es insgesamt 11, vielen Dank :).
Thor

2

LOLCODE, 202 Bytes

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

Pythoniert für Nicht-Lautsprecher:

for multiplicand in range(1, 10):
    output = ""
    for multiplier in range(1, multiplicand + 1):
        output = output + (multiplier + "x" + multiplicand + "=" + str(multiplicand * multiplier) + " ")
    print(output)

Als jemand, der LOLCODE auch in einem Code-Challenge-Beitrag verwendet hat, habe ich meine Zustimmung! LOVE this lang
jdstankosky

2

142 Bytes

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

Und nicht für in Sicht ...


ForEach "nicht für in Sicht" naja ... xD
HyperNeutrino

2

> <> , 50 Bytes

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

Sie können es mit dem Online-Dolmetscher ausprobieren .

Beachten Sie, dass in jeder Zeile ein Leerzeichen nachgestellt ist, was zu einer falschen Angabe führen kann (OP hat zu diesem Punkt zum Zeitpunkt der Beantwortung noch keine Angaben gemacht).


2

/// 268 Bytes

/_/\/\///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 Bytes

Durch die Verwendung von JShell aus Java 9 SDK kann ich viel Speicherplatz sparen

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

Auf Kevins Vorschlag hin reduzierte ich die Lösung um 2 Bytes.

Dank Cliffroot konnte ich es um ein weiteres Byte reduzieren


1
Sie können einige Bytes sparen, indem Sie die int aus der zweiten for-Schleife entfernen und ,jzur ersten hinzufügen . Also so: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

Es scheint , wie Sie ersetzen können ++i<=9miti++<9
cliffroot

2

C 79 Bytes

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

die Haupt

main(){f();}

Der Tisch

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 Zeichen

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

1

Javascript: 82 Zeichen

o="";for(a=1;a<10;a++){for(b=1;b<=a;b++){o+=a+"x"+b+"="+(a*b)+" "}o+="\n"}alert(o)

1
Ihr Code kann auf diese Weise auf 75 gekürzt werden for(i=0,s="";9>i++;){for(j=0;j++<i;)s+=j+"x"+i+"="+j*i+" ";s+="\n"}alert(s), jedoch wird das doppelte Leerzeichen auf 2 Ziffern nicht beachtet. Ich wollte dieses einreichen, aber +(9<i*j?" ":" ")statt nur zu +" " bearbeiten: auf dem Ternär sind die doppelten Leerzeichen verschwunden, aber sie sind auf dem zweiten param
ajax333221

Ich werde wählerisch sein, aber 4x4nicht direkt unter 5x4wie in der Aufgabe.
User902383

1

Python: 87

Ich sehe mir die Lösungen an, die andere veröffentlicht haben, und die meisten scheinen nicht den richtigen Abstand zu haben.

for i in range(1,10):print''.join(('%s×%s=%s'%(j,i,i*j)).ljust(7)for j in range(1,i+1))

Sie haben nachgestellte Leerzeichen, zählt das? ;-)
Wiedereinsetzung von Monica

1

Python (79)

oder ( 77 ) wenn ich range(10)außer benutze , erzeugt das eine leere Zeile am Anfang

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 Zeichen

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

Ersparen Sie 2 Zeichen, indem Sie die printfKlammer entfernen . Ersatz 1 Zeichen durch die Zuweisung von $ i in den Bereich Ausdruck zu bewegen: map{map{printf"%dx%d=%2d ",$_,$i,$_*$i}1..($i=$_);print$/}1..9.
Manatwork

@manatwork: Vielen Dank.
Toto
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.