Stampa questa tabella di moltiplicazione


17

Scrivi il codice più breve per stampare la seguente tabella di moltiplicazione:

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
Qualcuno farà davvero qualcosa oltre ai 2 forloop? Dov'è la parte stimolante (interessante)?
jdstankosky,

3
Non uso for. Ok, io uso while.
Johannes Kuhn,

3
Gli spazi finali sono importanti?
Ripristina Monica

perché nella prima colonna ci sono 2 spazi e non 1? (come le altre colonne)
RosLuP,

1
@jdstankosky forse potresti trovare la mia risposta un po 'più interessante - nessun loop coinvolto
Taylor Scott

Risposte:


13

Excel, 92 91 byte

Dalla finestra immediata dell'editor VBA, eseguire il comando seguente: Range("A1:I9").Formula="=IF(ROW()<COLUMN(),"""",COLUMN()&""×""&ROW()&""=""&COLUMN()*ROW())" L'output si trova direttamente sul foglio di lavoro attivo. Schermata di output di Excel

Ho giocato a golf a un byte extra scambiando l'ordine di un ifcambiare >=a <. Non ho aggiornato lo screenshot, ma influisce solo sulla formula in alto, non sull'output.


HA! Mi chiedevo quando avrei visto una risposta eccellente, +1.
Magic Octopus Urn,

1
Grazie. Penso di essere stato in parte motivato dai commenti sul farlo senza il solito FORciclo annidato .
GuitarPicker,

Anche il mio era !!!
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])

un po 'meglio a golf rispetto alle altre due versioni di Python.


Usa Python 3.6 con stringhe f per -1 byte: TIO
connectyourcharger

7

C ++, 106 98 byte

Ho usato due anelli e alcuni trucchi.

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

Benvenuti in PPCG! Bel primo 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":" ";}è di 3 byte più breve.
DJMcMayhem

Hai bisogno di uno spazio tra #importe <cstdio>?
Zacharý,

@ Zacharý no, non è necessario spazio
Karl Napf,

5

J: 57 51 caratteri

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

Nessun loop.


Le congiunzioni (e gli avverbi) hanno una precedenza maggiore rispetto ai verbi, quindi puoi rimuovere 3 coppie di parentesi. ([:;"2*\#"2(":@],'x',":@[,'=',":@*,' '"_)"0/~)>:i.9
randomra,

@randomra Buona chiamata. Grazie per il consiglio!
SL2

4

APL (37)

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

E non sono nemmeno solo due for-loop. In APL, il seguente costrutto:

x ∘.F y

dove x e ysono elenchi, ed Fè una funzione, si applica Fa ciascuna coppia di elementi in xey e ti dà una matrice.

Quindi: ∆∘.×∆←⍳9ottiene una tabella di moltiplicazione da 1 a 9. La funzione precedente genera la stringa richiesta per ciascuna coppia, ovvero (⍕⍺)la rappresentazione in stringa del primo numero, seguita da ×, seguita da (⍕⍵), la rappresentazione in stringa del secondo numero, seguita da =, seguita da ⍕⍺×⍵, fintanto che⍺≥⍵ .


4

Rubino: 60 59 caratteri

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

Esecuzione di esempio:

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

Potrebbe salvare un personaggio cambiando l'iniziale (1..9).map{in 1.upto(9){!
Paul Prestidge,

Ci sono spazi finali (prime 3 righe). La tabella originale non li ha. Non sono sicuro che ciò faccia la differenza, però ...
Reinstalla Monica

@WolframH, tutte le soluzioni che ho verificato hanno spazi finali o non riproducono la formattazione esatta.
arte

4

Perl, 54 personaggi

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

4

APL (Dyalog), 28

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

Analogo a un doppio loop in altre lingue

{⍵{...}¨⍳⍵}¨⍳9imposta il doppio loop
⍕⍵,'×',⍺,'=',⍺×⍵crea la stringa per ogni coppia
Converti array di array di stringhe in una matrice di stringhe

Produzione

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

è possibile rimuovere alcune delle virgole con lo stesso effetto: ↑{⍵{⍕⍵'×'⍺'=',⍺×⍵}¨⍳⍵}¨⍳9o persino utilizzare il nuovo "operatore chiave":{⍕⍵'×'⍺'=',⍺×⍵}¨∘⍳⌸⍳9
ngn

4

Mathematica , 45

Abbastanza noioso, ma immagino che serva da confronto di sintassi:

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

2
Cosa, mi stai dicendo che non c'è un incorporato per questo?
Aaron,

1
@Aaron La funzione di gonfiare Mathematica non fa misura che lontano ancora, per fortuna.
Mr.Wizard,

4

D, 75 caratteri

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

hai appena detto che il codice non funziona o il programma completo


1
Per impostazione predefinita, i frammenti non sono consentiti; è richiesta una funzione o un programma completo.
uno spaghetto il

@quartata Questa risposta precede le nostre impostazioni predefinite di un anno e mezzo.
Dennis,

@Dennis Oh, non mi rendevo conto che la regola non consentiva frammenti era quella nuova. Scusa.
uno spaghetto il

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

3

VBScript (133); senza anelli.

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

Su richiesta dello sfidante: nessun loop. Questo codice utilizza chiamate di subroutine ricorsive.


3

Acero, 64

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

3

codice macchina 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

Questo è un dump del file binario e tutto questo è di 175 byte. Praticamente fa gli stessi due loop che fanno tutte le risposte, ma stampare sulla console è un po 'più difficile e in pratica richiede di spingere i personaggi per stampare in pila al contrario, e quindi fare un syscall (specifico per Linux) per mettere effettivamente quei caratteri in stdout.

Ora l'ho ottimizzato in modo che venga eseguita solo 1 operazione di scrittura (più veloce!) E abbia numeri magici (wow!) E spingendo l'intero risultato sullo stack all'indietro prima di creare il syscall. Ho anche eliminato la routine di uscita perché chi ha bisogno di un codice di uscita adeguato?

Ecco un link al mio primo e secondo tentativo, nella loro sintassi nasm originale.

Accolgo con favore chiunque abbia altri suggerimenti su come migliorarlo. Posso anche spiegare la logica in modo più dettagliato se qualcuno è curioso.

(Inoltre, non stampa gli spazi extra per allineare tutte le colonne, ma se è necessario posso inserire la logica al costo di qualche byte in più).

EDIT: ora stampa spazi extra ed è ancora più basso! Sta facendo cose piuttosto folli con i registri ed è probabilmente instabile se questo programma dovesse essere ampliato.


PPCG richiede programmi o funzioni completi. Gli snippet sono implicitamente vietati (cioè puoi usarli solo se l'OP li ha esplicitamente ammessi).
Erik the Outgolfer,

Oh mio Dio. Ho dimenticato che OP non l'aveva specificato.
Davey,

3

Javascript, 190 byte

In ritardo alla festa, ma sono stato colpito dal commento di @jdstankosky e ho deciso di adottare un approccio diverso. Ecco una voce Javascript che crea un modello e si autoalimenta lungo il percorso.

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

Versione senza golf (versione leggermente più vecchia in cui una funzione restituisce la tabella invece di uno script che la avverte, ma si applicano gli stessi principi):

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
Ho fatto quel commento molto tempo fa, ahah. Sono davvero contento di vederlo.
jdstankosky,

3

Pascal, 128 byte

Una procedura ricorsiva si occupa di tutto. Chiama con 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 byte

Grazie @BetaDecay per 124 byte!

1o120~Ea1o61a1o10~Na1oEa2o61a2o32~Saa2oEa2o61a4oNa1oEa3o61a3oSaa2oEa3o61a6oSaa3oEa3o61a9o^a1oEa4o61a4oSaa2oEa4o61a8oSaa3oEa4o61a12oSa4oEa4o61a16oNa1oEa5o61a5oSaa2oEa5o61aNoSa3oEa5o61a15oSa4oEa5o61a20oSa5oEa5o61a25oNa1oEa6o61a6oSaa2oEa6o61a12oSa3oEa6o61a18oSa4oEa6o61a24oSa5oEa6o61a30oSa6oEa6o61a36oNa1oEa7o61a7oSaa2oEa7o61a14oSa3oEa7o61a21oSa4oEa7o61a28oSa5oEa7o61a35oSa6oEa7o61a42oSa7oEa7o61a49oNa1oEa8o61a8oSaa2oEa8o61a16oSa3oEa8o61a24oSa4oEa8o61aSoa5oEa8o61a40oSa6oEa8o61a48oSa7oEa8o61a56oSa8oEa8o61a64oNa1oEa9o61a9oSaa2oEa9o61a18oSa3oEa9o61a27oSa4oEa9o61a36oSa5oEa9o61a45oSa6oEa9o61a54oSa7oEa9o61a63oSa8oEa9o61a72oSa9oEa9o61a81o

1
Sono riuscito a golf 124 byte dal tuo programma salvando il numero 120 come variabile E, il numero 32 come S e 10 come N.
Decadimento Beta

2

vba 55

(finestra immediata)

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

nota - GWBasic richiede solo 2 caratteri extra:

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

Mi chiedo se sia possibile qualcosa di meglio di due (combinati?) Per i loop ...


bene, l'unica cosa di cui sono sicuro è che è possibile ottenere 75 su separati loop (il mio vecchio commento )
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}

Giocato a golf, usando esplicitamente newline e, usando l'opzione testa deprecata (grazie 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}

Produzione:

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

Risparmia 8 caratteri sostituendo tutte $(( ))le valutazioni aritmetiche con $[ ]; condividere 2 caratteri sostituendo il $'\n'carattere di nuova riga sfuggito con uno letterale (intendo, yes 'in una riga, quindi 'in quella successiva); risparmia 2 caratteri non usando headl' -nopzione esplicitamente, solo -e il numero.
arte

@manatwork: non sapevo della $[ ]notazione, buono a sapersi. Sostituire -ncon -un solo carattere in meno, quindi è 11 in totale, grazie mille :).
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

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 per non altoparlanti:

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

Come qualcuno che ha anche usato LOLCODE in una richiesta di code challenge, ho il mio voto! ADORO questa lingua
jdstankosky il

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

E non un for in vista ...


ForEach"non è un per in vista" bene ... xD
HyperNeutrino,

2

> <> , 50 byte

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

Puoi provarlo sull'interprete online .

Si noti che ci sono spazi finali su ogni riga, il che potrebbe renderlo errato (OP non ha dichiarato su questo punto a partire da questa risposta).


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

L'uso di JShell da Java 9 SDK mi consente di risparmiare una grande quantità di spazio

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

Seguendo il suggerimento di Kevin, ho ridotto la soluzione di 2 byte.

Grazie a cliffroot, sono stato in grado di ridurlo di un altro 1 byte


1
È possibile salvare alcuni byte rimuovendo int dal secondo il ciclo for e aggiungendo ,jal primo. Quindi, così: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, il

Sembra che tu possa sostituirlo ++i<=9coni++<9
cliffroot il

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

il principale

main(){f();}

la tavola

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 caratteri

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

1

Javascript: 82 caratteri

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

1
il tuo codice può essere abbreviato a 75 in questo modo for(i=0,s="";9>i++;){for(j=0;j++<i;)s+=j+"x"+i+"="+j*i+" ";s+="\n"}alert(s), tuttavia la cosa dei doppi spazi su 2 cifre non è rispettata, stavo per inviarne uno ma usando +(9<i*j?" ":" ")invece di +" " modificare semplicemente : sul ternario i doppi spazi sono scomparsi, ma sono al secondo param
ajax333221

Sarò pignolo ma 4x4non è direttamente sotto 5x4come nel compito.
user902383,

1

Python: 87

Sto osservando le soluzioni che altri hanno pubblicato e la maggior parte di loro non sembra avere la spaziatura corretta.

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

Hai spazi finali, conta? ;-)
Ripristina Monica

1

Python (79)

o ( 77 ) se uso range(10)tranne che produce una riga vuota all'inizio

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 caratteri

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

Risparmia 2 caratteri rimuovendo la printfparentesi; ricambio 1 carattere spostando l'assegnazione di $ i nell'espressione gamma: map{map{printf"%dx%d=%2d ",$_,$i,$_*$i}1..($i=$_);print$/}1..9.
arte

@manatwork: Mille Grazie.
Tot
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.