Imprimir esta tabela de multiplicação

17

Escreva o código mais curto para imprimir a seguinte tabela de multiplicação:

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
fonte
6
Alguém realmente fará algo além de 2 forloops? Onde está a parte desafiadora (interessante)?
precisa saber é o seguinte
3
Eu não uso for. Ok, eu uso while.
Johannes Kuhn
3
Os espaços à direita são importantes?
Reintegrar Monica
por que na primeira coluna existem 2 espaços e não 1? (como as outras colunas)
RosLuP 20/09
11
@jdstankosky talvez você pode encontrar a minha resposta um pouco mais interessante - há laços envolvidos
Taylor Scott

Respostas:

13

Excel, 92 91 Bytes

Na janela imediata do editor VBA, execute o seguinte comando: Range("A1:I9").Formula="=IF(ROW()<COLUMN(),"""",COLUMN()&""×""&ROW()&""=""&COLUMN()*ROW())" A saída está diretamente na planilha ativa. Captura de tela da saída do Excel

I golfed um byte extra, trocando a ordem de um ifpara mudar >=para <. Não atualizei a captura de tela, mas ela afeta apenas a fórmula na parte superior, não a saída.

GuitarPicker
fonte
HA! Gostaria de saber quando eu veria uma resposta do Excel, +1.
Magic Octopus Urn
11
Obrigado. Acho que fiquei parcialmente motivado pelos comentários sobre fazê-lo sem o FORloop aninhado usual .
GuitarPicker
O meu também 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])

um pouco melhor do que as outras duas versões do Python.

Daniel
fonte
Use Python 3.6 com f-strings para -1 bytes: TIO
connectyourcharger
7

C ++, 106 98 bytes

Eu usei dois loops e alguns truques.

#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
fonte
Bem-vindo ao PPCG! Bom primeiro post!
Rɪᴋᴇʀ
11
#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 bytes mais curto.
DJMcMayhem
Você precisa de um espaço entre #importe <cstdio>?
Zacharý
@ Zachary sem que o espaço não é necessário
Karl Napf
5

J: 57 51 caracteres

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

Sem loops.

SL2
fonte
As conjunções (e advérbios) têm maior precedência que os verbos, para que você possa remover 3 pares de colchetes. ([:;"2*\#"2(":@],'x',":@[,'=',":@*,' '"_)"0/~)>:i.9
Random #
@randomra Boa chamada. Obrigado pela dica!
SL2
4

APL (37)

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

E não são apenas duas alternativas. No APL, a seguinte construção:

x ∘.F y

onde xe ysão listas, e Fé uma função, aplica-se Fa cada par de itens em xe ye dá-lhe uma matriz.

Assim: ∆∘.×∆←⍳9deixa uma tabela de multiplicação de 1 a 9. A função acima gera a cadeia necessária para cada par, isto é (⍕⍺), a representação cadeia do primeiro número, seguido por ×, seguido por (⍕⍵), representação em cadeia da segunda série, seguido por =, seguido por ⍕⍺×⍵, contanto que ⍺≥⍵.

marinus
fonte
4

Ruby: 60 59 caracteres

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

Exemplo de execução:

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
homem a trabalhar
fonte
Pode salvar um personagem alterando a inicial (1..9).map{para 1.upto(9){!
Paul Prestidge
Existem espaços à direita (primeiras 3 linhas). A tabela original não os possui. Eu não tenho certeza se isso faz a diferença, porém ...
Reintegrar Monica
@WolframH, todas as soluções que verifiquei têm espaços à direita ou não reproduzem a formatação exata.
manatwork
4

Perl, 54 caracteres

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

fonte
4

APL (Dyalog), 28

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

Análogo a um loop duplo em outros idiomas

{⍵{...}¨⍳⍵}¨⍳9configura o loop duplo
⍕⍵,'×',⍺,'=',⍺×⍵cria a string para cada par
Converter array de array de strings em uma matriz de picadas

Resultado

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
fonte
você pode remover algumas das vírgulas para o mesmo efeito: ↑{⍵{⍕⍵'×'⍺'=',⍺×⍵}¨⍳⍵}¨⍳9ou até mesmo usar o novo "operador principal":{⍕⍵'×'⍺'=',⍺×⍵}¨∘⍳⌸⍳9
ngn
4

Mathematica , 45

Muito chato, mas acho que serve como uma comparação de sintaxe:

Grid@Table[Row@{a, "x", b, "=", a b}, {a, 9}, {b, a}]
Mr.Wizard
fonte
2
Você está me dizendo que não há uma base para isso?
Aaron
11
@ Aaron A função inchaço do Mathematica ainda não foi tão longe, felizmente.
Mr.Wizard
4

D, 75 caracteres

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

você acabou de dizer que o código não funciona ou programa completo

catraca arrepiante
fonte
11
Por padrão, trechos não são permitidos; é necessária uma função ou programa completo.
a spaghetto
@quartata Esta resposta antecede nossos padrões em um ano e meio.
217 Dennis
@ Dennis Oh, eu não sabia que a regra de não snippets permitidos era tão nova. Desculpe.
a spaghetto
Isso funcionaria? foreach(i,1..10){foreach(j,1..i+1)writef("%dx%d=%d ",i,j,i*j);writeln;}
Zacharý
3

VBScript (133); sem loops.

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

A pedido do desafiante: sem loops. Esse código usa chamadas de sub-rotina recursivas.

AutomatedChaos
fonte
3

Maple, 64

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

código de máquina x86_64 (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

Isso é um despejo do arquivo binário e tudo isso tem 175 bytes. Basicamente, ele executa os mesmos dois loops que todas as respostas, mas imprimir no console é um pouco mais difícil e requer basicamente pressionar os caracteres para imprimir na pilha ao contrário e, em seguida, fazer um syscall (específico do linux) para realmente colocar esses caracteres. em stdout.

Agora eu otimizei isso para que apenas uma operação de gravação seja executada (mais rápido!) E tenha números mágicos (uau!) E empurrando o resultado inteiro para a pilha para trás antes de fazer a chamada do sistema. Também tirei a rotina de saída porque quem precisa do código de saída adequado?

Aqui está um link para minhas primeira e segunda tentativas, na sintaxe original do NASM.

Congratulo-me com qualquer pessoa que tenha outras sugestões sobre como melhorar. Também posso explicar a lógica com mais detalhes se alguém estiver curioso.

(Além disso, ele não imprime os espaços extras para alinhar todas as colunas, mas, se necessário, posso colocar a lógica ao custo de mais alguns bytes).

EDIT: Agora imprime espaços extras e é jogado golfe ainda mais! Está fazendo algumas coisas bem loucas com os registros e provavelmente é instável se esse programa for expandido.

davey
fonte
O PPCG requer programas ou funções completos. Snippets são permitidos implicitamente (ou seja, você pode usá-los somente se o OP permitiu-los explicitamente.)
Erik o Outgolfer
Oh culpa minha. Esqueci que a OP não havia especificado isso.
David
3

Javascript, 190 bytes

Cheguei atrasado na festa, mas fiquei impressionado com o comentário de @jdstankosky e decidi adotar uma abordagem diferente. Aqui está uma entrada Javascript que arrasta um modelo e se avalia ao longo do caminho.

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

Versão sem golfe (versão um pouco mais antiga na qual uma função retorna a tabela em vez de um script alertando-a, mas os mesmos princípios se aplicam):

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
fonte
11
Eu fiz esse comentário há muito tempo, haha. Estou realmente feliz em ver isso.
precisa saber é o seguinte
3

Pascal, 128 bytes

Um procedimento recursivo cuida de tudo. Ligue com 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;
hdrz
fonte
3

Fourier, 756 632 bytes

Obrigado @BetaDecay por 124 bytes!

1o120~Ea1o61a1o10~Na1oEa2o61a2o32~Saa2oEa2o61a4oNa1oEa3o61a3oSaa2oEa3o61a6oSaa3oEa3o61a9o^a1oEa4o61a4oSaa2oEa4o61a8oSaa3oEa4o61a12oSa4oEa4o61a16oNa1oEa5o61a5oSaa2oEa5o61aNoSa3oEa5o61a15oSa4oEa5o61a20oSa5oEa5o61a25oNa1oEa6o61a6oSaa2oEa6o61a12oSa3oEa6o61a18oSa4oEa6o61a24oSa5oEa6o61a30oSa6oEa6o61a36oNa1oEa7o61a7oSaa2oEa7o61a14oSa3oEa7o61a21oSa4oEa7o61a28oSa5oEa7o61a35oSa6oEa7o61a42oSa7oEa7o61a49oNa1oEa8o61a8oSaa2oEa8o61a16oSa3oEa8o61a24oSa4oEa8o61aSoa5oEa8o61a40oSa6oEa8o61a48oSa7oEa8o61a56oSa8oEa8o61a64oNa1oEa9o61a9oSaa2oEa9o61a18oSa3oEa9o61a27oSa4oEa9o61a36oSa5oEa9o61a45oSa6oEa9o61a54oSa7oEa9o61a63oSa8oEa9o61a72oSa9oEa9o61a81o
Oliver Ni
fonte
11
Eu consegui golf 124 bytes fora de seu programa , salvando o número 120 como o E variável, o número 32 como S e 10 como N.
Beta Decay
2

vba 55

(janela imediata)

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

nota - o GWBasic precisa apenas de 2 caracteres extras:

1 for f=1 to 9:for j=1 to f:?f;"x";j;"=";f*j,:next:?:next
SeanC
fonte
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+" "

Gostaria de saber se algo melhor do que dois (combinado?) Para loops é possível ...

tomsmeding
fonte
bem, a única coisa que eu tenho certeza é que é possível obter 75 on separados laços ( meu velho comentário )
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}

Jogou golfe, usando nova linha explícita e, usando a opção de cabeçalho obsoleta (obrigado 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}

Resultado:

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
fonte
Poupe 8 caracteres substituindo todas $(( ))as avaliações aritméticas por $[ ]; compartilhe 2 caracteres substituindo o $'\n'caractere de nova linha de escape por um literal (quero dizer, yes 'em uma linha e depois 'na seguinte); poupe 2 caracteres por não usar heada -nopção de explicitamente, just -e o número.
precisa
@ manatwork: Eu não sabia sobre a $[ ]notação, é bom saber. Substituir -npor -é apenas um caractere a menos, portanto, são 11 no total, muito obrigado :).
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

Python para não-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)
OldBunny2800
fonte
Como alguém que também usou o LOLCODE em um envio de desafio de código, tenha meu voto positivo! AMOR este lang
jdstankosky
2

c #, 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")));

E não é à vista ...

supermeerkat
fonte
ForEach"não é um espetáculo" bem ... xD
HyperNeutrino 24/09
2

> <> , 50 bytes

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

Você pode experimentá-lo no intérprete online .

Observe que há espaços à direita em cada linha, o que pode torná-lo incorreto (o OP não declarou neste ponto neste momento).

Aaron
fonte
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
Erik, o Outgolfer
fonte
2

JAVA, 103 94 92 90 bytes

O uso do JShell do Java 9 SDK permite economizar grande quantidade de espaço

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

Seguindo a sugestão de Kevin, reduzi a solução em 2 bytes.

Graças ao cliffroot, consegui reduzi-lo em mais 1 byte

user902383
fonte
11
Você pode salvar alguns bytes removendo o int do segundo loop for e adicioná ,j-lo ao primeiro. Assim como isto: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
Parece que você pode substituir ++i<=9comi++<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();}

o principal

main(){f();}

a mesa

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
fonte
2

Tcl 98 chars

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

Javascript: 82 caracteres

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
fonte
11
seu código pode ser reduzido para 75 assim for(i=0,s="";9>i++;){for(j=0;j++<i;)s+=j+"x"+i+"="+j*i+" ";s+="\n"}alert(s), no entanto, a coisa de espaços duplos em 2 dígitos não é respeitada, eu estava prestes a enviar esse, mas usando em +(9<i*j?" ":" ")vez de apenas +" " editar: no ternário, os espaços duplos desapareceram, mas estão no segundo param
ajax333221
Eu serei exigente, mas 4x4não está diretamente sob 5x4como na tarefa.
user902383
1

Python: 87

Estou observando as soluções que outras pessoas postaram e a maioria delas não parece ter o espaçamento correto.

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
fonte
Você tem espaços à direita, isso conta? ;-)
Restabelece Monica
1

Python (79)

ou ( 77 ) se eu usar, range(10)exceto que produz uma linha vazia no início

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
fonte
1

Perl: 65 , 62 caracteres

map{map{printf"%dx%d=%2d ",$_,$i,$_*$i}1..($i=$_);print$/}1..9
Toto
fonte
Poupe 2 caracteres removendo os printfparênteses do; reposição 1 personagem movendo a atribuição de $ i na expressão intervalo: map{map{printf"%dx%d=%2d ",$_,$i,$_*$i}1..($i=$_);print$/}1..9.
manatwork
@ manatwork: Muito obrigado.
Toto