Imprima esta tabla de multiplicación

17

Escriba el código más corto para imprimir la siguiente tabla de multiplicación:

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
matriz89
fuente
66
¿Alguien realmente va a hacer algo además de 2 forbucles? ¿Dónde está la parte desafiante (interesante)?
jdstankosky
3
No consumo for. Ok, yo uso while.
Johannes Kuhn
3
¿Son importantes los espacios finales?
Restablece a Mónica
¿Por qué en la primera columna hay 2 espacios y no 1? (como las otras columnas)
RosLuP
1
@jdstankosky tal vez pueda encontrar mi respuesta un poco más interesante - no hay bucles involucrados
Taylor Scott

Respuestas:

13

Excel, 92 91 bytes

Desde la ventana inmediata del editor de VBA, ejecute el siguiente comando: Range("A1:I9").Formula="=IF(ROW()<COLUMN(),"""",COLUMN()&""×""&ROW()&""=""&COLUMN()*ROW())" La salida está directamente en la hoja de trabajo activa. Captura de pantalla de salida de Excel

Golfé un byte extra cambiando el orden de un ifcambio >=a <. No actualicé la captura de pantalla, pero solo afecta a la fórmula en la parte superior, no a la salida.

GuitarPicker
fuente
¡DECIR AH! Me preguntaba cuándo vería una respuesta excelente, +1.
Magic Octopus Urn
1
Gracias. Creo que estaba parcialmente motivado por los comentarios sobre hacerlo sin el FORbucle anidado habitual .
GuitarPicker
¡El mío también!
Magic Octopus Urn
8

Pitón (75)

r=range(1,10)
for i in r:print''.join('%sx%s=%-3s'%(j,i,i*j)for j in r[:i])

un poco mejor golfizado que las otras dos versiones de Python.

Daniel
fuente
Use Python 3.6 con cadenas f para -1 bytes: TIO
connectyourcharger
7

C ++, 106 98 bytes

Usé dos bucles y algunos trucos.

#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
fuente
Bienvenido a PPCG! Bonito primer 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":" ";}es 3 bytes más corto.
DJMcMayhem
¿Necesitas un espacio entre #importy <cstdio>?
Zacharý
@ Zacharý no, ese espacio no es necesario
Karl Napf
5

J: 57 51 caracteres

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

Sin bucles.

SL2
fuente
Las conjunciones (y los adverbios) tienen mayor prioridad que los verbos, por lo que puede eliminar 3 pares de corchetes. ([:;"2*\#"2(":@],'x',":@[,'=',":@*,' '"_)"0/~)>:i.9
randomra
@randomra Buena llamada. ¡Gracias por el consejo!
SL2
4

APL (37)

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

Y ni siquiera son solo dos for-loop. En APL, la siguiente construcción:

x ∘.F y

donde xy yson listas, y Fes una función, se aplica Fa cada par de elementos en xy yy le da una matriz.

Entonces: ∆∘.×∆←⍳9obtiene una tabla de multiplicación del 1 al 9. La función anterior genera la cadena requerida para cada par, es decir (⍕⍺), la representación de la cadena del primer número, seguido de ×, seguido de (⍕⍵), la representación de la cadena del segundo número, seguido de =, seguido de ⍕⍺×⍵, siempre y cuando ⍺≥⍵.

marinus
fuente
4

Rubí: 60 59 caracteres

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

Ejecución de muestra:

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
hombre trabajando
fuente
¡Podría guardar un personaje cambiando la inicial (1..9).map{a 1.upto(9){!
Paul Prestidge
Hay espacios finales (primeras 3 líneas). La tabla original no los tiene. Sin embargo, no estoy seguro de si eso hace la diferencia ...
Restablece a Mónica
@WolframH, todas las soluciones que verifiqué tienen espacios finales o no reproducen el formato exacto.
manatwork
4

Perl, 54 personajes

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

fuente
4

APL (Dyalog), 28

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

Análogo a un doble bucle en otros idiomas.

{⍵{...}¨⍳⍵}¨⍳9configura el doble bucle
⍕⍵,'×',⍺,'=',⍺×⍵crea la cadena para cada par
Convierte la matriz de la matriz de cadenas en una matriz de picaduras

Salida

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
fuente
puede eliminar algunas de las comas con el mismo efecto: ↑{⍵{⍕⍵'×'⍺'=',⍺×⍵}¨⍳⍵}¨⍳9o incluso hacer uso del nuevo "operador clave":{⍕⍵'×'⍺'=',⍺×⍵}¨∘⍳⌸⍳9
ngn
4

Mathematica , 45

Bastante aburrido, pero supongo que sirve como una comparación de sintaxis:

Grid@Table[Row@{a, "x", b, "=", a b}, {a, 9}, {b, a}]
Señor mago
fuente
2
¿Me estás diciendo que no hay nada para esto?
Aaron
1
@ Aaron La afluencia de funciones de Mathematica no llega tan lejos todavía, afortunadamente.
Mr.Wizard
4

D, 75 caracteres

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

acabas de decir que el código no funciona o el programa completo

monstruo de trinquete
fuente
1
Por defecto, los fragmentos no están permitidos; Se requiere una función o un programa completo.
un espagueti
@quartata Esta respuesta es anterior a nuestros valores predeterminados en un año y medio.
Dennis
@ Dennis Oh, no me di cuenta de que la regla de que no se permiten fragmentos era tan nueva. Lo siento.
un spaghetto
¿Funcionaría esto? foreach(i,1..10){foreach(j,1..i+1)writef("%dx%d=%d ",i,j,i*j);writeln;}
Zacharý
3

VBScript (133); sin lazos.

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 petición del retador: sin bucles. Este código usa llamadas de subrutina recursivas.

Caos automatizado
fuente
3

Arce, 64

seq(printf(seq(printf("%ax%a=%a ",j,i,i*j),j=1..i),"\n"),i=1..9)
DSkoog
fuente
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

Este es un volcado del archivo binario, y todo esto es de 175 bytes. Básicamente, hace los mismos dos bucles que todas las respuestas, pero imprimir en la consola es un poco más difícil y básicamente requiere presionar a los personajes para imprimir en la pila en reversa, y luego hacer un syscall (específico de Linux) para poner esos caracteres en realidad en stdout.

Ahora he optimizado esto para que solo se realice 1 operación de escritura (¡más rápido!) Y tenga números mágicos (¡guau!) Y empuje todo el resultado hacia la pila hacia atrás antes de realizar la llamada al sistema. También eliminé la rutina de salida porque ¿quién necesita el código de salida adecuado?

Aquí hay un enlace a mi primer y segundo intento, en su sintaxis nasm original.

Doy la bienvenida a cualquiera que tenga otras sugerencias sobre cómo se puede mejorar. También puedo explicar la lógica con más detalle si alguien tiene curiosidad.

(Además, no imprime los espacios adicionales para alinear todas las columnas, pero si es necesario, puedo poner la lógica a costa de unos pocos bytes más).

EDITAR: ¡Ahora imprime espacios adicionales y se juega aún más! Está haciendo algunas cosas bastante locas con los registros, y probablemente sea inestable si este programa se expandiera.

davey
fuente
PPCG requiere programas o funciones completos. Los fragmentos se rechazan implícitamente (es decir, puede usarlos solo si el OP los ha permitido explícitamente).
Erik the Outgolfer
Oh mi error. Olvidé que OP no había especificado eso.
davey
3

Javascript, 190 bytes

Llegué tarde a la fiesta, pero el comentario de @jdstankosky me despertó y decidí adoptar un enfoque diferente. Aquí hay una entrada de Javascript que envía una plantilla y se evalúa a sí misma en el camino.

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

Versión sin golf (versión ligeramente anterior en la que una función devuelve la tabla en lugar de un script que la alerta, pero se aplican los mismos principios):

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
fuente
1
Hice ese comentario hace mucho tiempo, jaja. De hecho, me alegra ver esto.
jdstankosky
3

Pascal, 128 bytes

Un procedimiento recursivo se encarga de todo. Llamada 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;

Sin golf:

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
fuente
3

Fourier 756 632 bytes

¡Gracias @BetaDecay por 124 bytes!

1o120~Ea1o61a1o10~Na1oEa2o61a2o32~Saa2oEa2o61a4oNa1oEa3o61a3oSaa2oEa3o61a6oSaa3oEa3o61a9o^a1oEa4o61a4oSaa2oEa4o61a8oSaa3oEa4o61a12oSa4oEa4o61a16oNa1oEa5o61a5oSaa2oEa5o61aNoSa3oEa5o61a15oSa4oEa5o61a20oSa5oEa5o61a25oNa1oEa6o61a6oSaa2oEa6o61a12oSa3oEa6o61a18oSa4oEa6o61a24oSa5oEa6o61a30oSa6oEa6o61a36oNa1oEa7o61a7oSaa2oEa7o61a14oSa3oEa7o61a21oSa4oEa7o61a28oSa5oEa7o61a35oSa6oEa7o61a42oSa7oEa7o61a49oNa1oEa8o61a8oSaa2oEa8o61a16oSa3oEa8o61a24oSa4oEa8o61aSoa5oEa8o61a40oSa6oEa8o61a48oSa7oEa8o61a56oSa8oEa8o61a64oNa1oEa9o61a9oSaa2oEa9o61a18oSa3oEa9o61a27oSa4oEa9o61a36oSa5oEa9o61a45oSa6oEa9o61a54oSa7oEa9o61a63oSa8oEa9o61a72oSa9oEa9o61a81o
Oliver Ni
fuente
1
Logré jugar 124 bytes de su programa guardando el número 120 como la variable E, el número 32 como S y 10 como N.
Decaimiento Beta
2

vba 55

(ventana inmediata)

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

nota: GWBasic solo necesita 2 caracteres adicionales:

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

Me pregunto si es posible algo mejor que dos (¿combinado?) Para bucles ...

tomsmeding
fuente
bueno, lo único que estoy seguro es que es posible obtener 75 en bucles separados ( mi antiguo comentario )
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}

Golfé, usando una nueva línea explícita y, usando la opción de cabeza en desuso (gracias 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}

Salida:

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
fuente
Ahorre 8 caracteres reemplazando todas $(( ))las evaluaciones aritméticas con $[ ]; compartir 2 caracteres reemplazando el $'\n'carácter de nueva línea escapado por uno literal (quiero decir, yes 'en una línea, luego 'en la siguiente); ahorre 2 caracteres al no usar headla -nopción de 'explícitamente, solo -y el número.
manatwork
@manatwork: no sabía sobre la $[ ]notación, es bueno saberlo. Reemplazar -npor -es solo un personaje menos, por lo que son 11 en total, muchas gracias :).
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

Sin golf:

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

Pitonado para personas que no hablan:

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
fuente
Como alguien que también usó LOLCODE en un envío de desafío de código, ¡tenga mi voto a favor! LOVE this 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")));

Y no a la vista ...

supermeerkat
fuente
ForEach"no es para la vista" bueno ... xD
HyperNeutrino
2

> <> , 50 bytes

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

Puede probarlo en el intérprete en línea .

Tenga en cuenta que hay espacios finales en cada línea, lo que podría hacerlo incorrecto (OP no ha indicado en este punto a partir de esta respuesta).

Aaron
fuente
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 el Outgolfer
fuente
2

JAVA, 103 94 92 90 bytes

Usar JShell de Java 9 SDK me permite ahorrar una gran cantidad de espacio

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

Siguiendo la sugerencia de Kevin, reduje la solución en 2 bytes.

Gracias a Cliffroot, pude reducirlo en otro 1 byte

usuario902383
fuente
1
Puede guardar algunos bytes quitando el int segundo for-loop y agregarlo ,jal primero. Así que así: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 puede reemplazar ++i<=9coni++<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();}

el principal

main(){f();}

la 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
fuente
2

Tcl 98 caracteres

while {[incr a]<10} {set b 0;while {[incr b]<=$a} {puts -nonewline "$a×$b=[expr $a*$b] "};puts ""}
Johannes Kuhn
fuente
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
fuente
1
su código se puede acortar a 75 de esta manera for(i=0,s="";9>i++;){for(j=0;j++<i;)s+=j+"x"+i+"="+j*i+" ";s+="\n"}alert(s), sin embargo, no se respeta la cuestión de los espacios dobles en 2 dígitos, estaba a punto de enviarlo pero usando en +(9<i*j?" ":" ")lugar de simplemente +" " editar: en el ternario los espacios dobles desaparecieron, pero están en el segundo param
ajax333221
Seré exigente pero 4x4no está directamente debajo 5x4como en la tarea.
user902383
1

Python: 87

Estoy mirando las soluciones que otros han publicado y la mayoría de ellas no parecen tener el espacio correcto.

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
fuente
Tienes espacios finales, ¿eso cuenta? ;-)
Restablece a Monica
1

Pitón (79)

o ( 77 ) si uso, range(10)excepto que produce una línea vacía al comienzo

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

Perl: 65 , 62 caracteres.

map{map{printf"%dx%d=%2d ",$_,$i,$_*$i}1..($i=$_);print$/}1..9
Toto
fuente
Ahorre 2 caracteres eliminando el printfparéntesis; repuesto 1 carácter desplazando la asignación de $ i en la expresión gama: map{map{printf"%dx%d=%2d ",$_,$i,$_*$i}1..($i=$_);print$/}1..9.
manatwork
@manatwork: Muchas gracias.
Toto