Imprimer ce tableau de multiplication

17

Écrivez le code le plus court pour imprimer la table de multiplication suivante:

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
la source
6
Est-ce que quelqu'un va vraiment faire autre chose que 2 forboucles? Où est la partie difficile (intéressante)?
jdstankosky
3
Je n'utilise pas for. Ok, j'utilise while.
Johannes Kuhn
3
Les espaces de fuite sont-ils importants?
Rétablir Monica
pourquoi dans la première colonne il y a 2 espaces et non 1? (comme les autres colonnes)
RosLuP
1
@jdstankosky vous trouverez peut-être ma réponse un peu plus intéressante - pas de boucles impliquées
Taylor Scott

Réponses:

13

Excel, 92 91 octets

Dans la fenêtre immédiate de l'éditeur VBA, exécutez la commande suivante: Range("A1:I9").Formula="=IF(ROW()<COLUMN(),"""",COLUMN()&""×""&ROW()&""=""&COLUMN()*ROW())" La sortie est directement sur la feuille de calcul active. Capture d'écran de sortie Excel

Je un octet supplémentaire joué au golf en échangeant l'ordre d'un ifà changer >=pour <. Je n'ai pas mis à jour la capture d'écran, mais cela n'affecte que la formule en haut, pas la sortie.

GuitarPicker
la source
HA! Je me demandais quand je verrais une réponse excellente, +1.
Urne de poulpe magique
1
Merci. Je pense que j'étais partiellement motivé par les commentaires à propos de le faire sans la FORboucle imbriquée habituelle .
GuitarPicker du
Le mien l'était aussi !!!
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 peu mieux joué que les deux autres versions de Python.

Daniel
la source
Utilisez Python 3.6 avec des chaînes f pour -1 octets: TIO
connectyourcharger
7

C ++, 106 98 octets

J'ai utilisé deux boucles et quelques astuces.

#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
la source
Bienvenue chez PPCG! Bon premier 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":" ";}est de 3 octets plus court.
DJMcMayhem
Avez-vous besoin d'un espace entre #importet <cstdio>?
Zacharý
@ Zacharý non cet espace n'est pas nécessaire
Karl Napf
5

J: 57 51 caractères

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

Pas de boucles.

SL2
la source
Les conjonctions (et adverbes) ont une priorité plus élevée que les verbes, vous pouvez donc supprimer 3 paires de crochets. ([:;"2*\#"2(":@],'x',":@[,'=',":@*,' '"_)"0/~)>:i.9
randomra
@randomra Bon appel. Merci pour le conseil!
SL2
4

APL (37)

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

Et ce n'est même pas seulement deux boucles pour. Dans APL, la construction suivante:

x ∘.F y

xet ysont des listes, et Fest une fonction, s'applique Fà chaque paire d'éléments dans xet yet vous donne une matrice.

Donc: ∆∘.×∆←⍳9vous obtient une table de multiplication de 1 à 9. La fonction ci-dessus génère la chaîne requise pour chaque paire, c'est-à-dire (⍕⍺)la représentation sous forme de chaîne du premier nombre, suivie par ×, suivie par (⍕⍵), la représentation sous forme de chaîne du deuxième nombre, suivie par =, suivie par ⍕⍺×⍵, tant que ⍺≥⍵.

marinus
la source
4

Ruby: 60 59 caractères

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

Exemple d'exécution:

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
homme au travail
la source
Pourrait enregistrer un caractère en changeant l'initiale (1..9).map{en 1.upto(9){!
Paul Prestidge
Il y a des espaces de fin (3 premières lignes). La table d'origine n'en a pas. Je ne sais pas si cela fait une différence, cependant ...
Rétablir Monica
@WolframH, toutes les solutions que j'ai vérifiées ont des espaces de fin ou ne reproduisent pas la mise en forme exacte.
manatwork
4

Perl, 54 caractères

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

la source
4

APL (Dyalog), 28

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

Analogue à une double boucle dans d'autres langues

{⍵{...}¨⍳⍵}¨⍳9configure la double boucle
⍕⍵,'×',⍺,'=',⍺×⍵crée la chaîne pour chaque paire
Convertir un tableau de tableau de chaînes en une matrice de piqûres

Production

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
la source
vous pouvez supprimer certaines des virgules au même effet: ↑{⍵{⍕⍵'×'⍺'=',⍺×⍵}¨⍳⍵}¨⍳9ou même utiliser le nouvel "opérateur clé":{⍕⍵'×'⍺'=',⍺×⍵}¨∘⍳⌸⍳9
ngn
4

Mathematica , 45

Assez ennuyeux, mais je suppose que cela sert de comparaison de syntaxe:

Grid@Table[Row@{a, "x", b, "=", a b}, {a, 9}, {b, a}]
Mr.Wizard
la source
2
Quoi, tu me dis qu'il n'y a pas de fonction intégrée pour ça?
Aaron
1
@Aaron Heureusement, la fonction ballonnement de Mathematica ne s'étend pas aussi loin.
Mr.Wizard
4

D, 75 caractères

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

vous venez de dire que le code ne fonctionne pas ou le programme complet

monstre à cliquet
la source
1
Par défaut, les extraits de code ne sont pas autorisés; une fonction ou un programme complet est requis.
un spaghetto du
@quartata Cette réponse est antérieure d'un an et demi à nos valeurs par défaut.
Dennis
@ Dennis Oh, je ne savais pas que la règle interdisant les extraits de code était si nouvelle. Pardon.
un spaghetto du
Est-ce que cela fonctionnerait? foreach(i,1..10){foreach(j,1..i+1)writef("%dx%d=%d ",i,j,i*j);writeln;}
Zacharý
3

VBScript (133); sans boucles.

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 la demande du challenger: pas de boucles. Ce code utilise des appels de sous-programme récursifs.

AutomatedChaos
la source
3

Érable, 64

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

code machine x86_64 (linux), 175 99 76 octets

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

Il s'agit d'un vidage du fichier binaire, et tout cela fait 175 octets. Il fait essentiellement les deux mêmes boucles que toutes les réponses, mais l'impression sur la console est un peu plus difficile et nécessite essentiellement de pousser les caractères pour imprimer sur la pile à l'envers, puis de faire un appel système (spécifique à Linux) pour réellement mettre ces caractères en stdout.

J'ai maintenant optimisé cela afin qu'une seule opération d'écriture soit effectuée (plus vite!) Et ait des nombres magiques (wow!) Et en poussant le résultat entier sur la pile en arrière avant de faire l'appel système. J'ai également supprimé la routine de sortie, car qui a besoin d'un code de sortie approprié?

Voici un lien vers mes première et deuxième tentatives, dans leur syntaxe nasm d'origine.

Je souhaite la bienvenue à tous ceux qui ont d'autres suggestions sur la façon de l'améliorer. Je peux également expliquer la logique plus en détail si quelqu'un est curieux.

(En outre, il n'imprime pas les espaces supplémentaires pour aligner toutes les colonnes, mais si cela est nécessaire, je peux mettre la logique au prix de quelques octets supplémentaires).

EDIT: Imprime maintenant des espaces supplémentaires et est encore plus golfé! Il fait des trucs assez fous avec les registres, et est probablement instable si ce programme devait être étendu.

Davey
la source
PPCG nécessite des programmes ou des fonctions complets. Les extraits de code sont implicitement interdits (c'est-à-dire que vous ne pouvez les utiliser que si le PO les a explicitement autorisés.)
Erik the Outgolfer
Oh, ma mauvaise. J'oubliais qu'OP ne l'avait pas précisé.
davey
3

Javascript, 190 octets

Tard dans la soirée, mais j'ai été piqué par le commentaire de @jdstankosky et j'ai décidé d'adopter une approche différente. Voici une entrée Javascript qui mutile un modèle et évolue en cours de route.

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

Version non-golfée (version légèrement plus ancienne dans laquelle une fonction renvoie la table au lieu d'un script l'alerte, mais les mêmes principes s'appliquent):

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
la source
1
J'ai fait ce commentaire il y a très longtemps, haha. Je suis vraiment content de voir ça.
jdstankosky
3

Pascal, 128 octets

Une procédure récursive s'occupe de tout. Appelez avec 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;

Non 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
la source
3

Fourier, 756 632 octets

Merci @BetaDecay pour 124 octets!

1o120~Ea1o61a1o10~Na1oEa2o61a2o32~Saa2oEa2o61a4oNa1oEa3o61a3oSaa2oEa3o61a6oSaa3oEa3o61a9o^a1oEa4o61a4oSaa2oEa4o61a8oSaa3oEa4o61a12oSa4oEa4o61a16oNa1oEa5o61a5oSaa2oEa5o61aNoSa3oEa5o61a15oSa4oEa5o61a20oSa5oEa5o61a25oNa1oEa6o61a6oSaa2oEa6o61a12oSa3oEa6o61a18oSa4oEa6o61a24oSa5oEa6o61a30oSa6oEa6o61a36oNa1oEa7o61a7oSaa2oEa7o61a14oSa3oEa7o61a21oSa4oEa7o61a28oSa5oEa7o61a35oSa6oEa7o61a42oSa7oEa7o61a49oNa1oEa8o61a8oSaa2oEa8o61a16oSa3oEa8o61a24oSa4oEa8o61aSoa5oEa8o61a40oSa6oEa8o61a48oSa7oEa8o61a56oSa8oEa8o61a64oNa1oEa9o61a9oSaa2oEa9o61a18oSa3oEa9o61a27oSa4oEa9o61a36oSa5oEa9o61a45oSa6oEa9o61a54oSa7oEa9o61a63oSa8oEa9o61a72oSa9oEa9o61a81o
Oliver Ni
la source
1
J'ai réussi à jouer au golf à 124 octets de votre programme en enregistrant le nombre 120 comme variable E, le nombre 32 comme S et 10 comme N.
Beta Decay
2

vba 55

(fenêtre immédiate)

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

note - GWBasic n'a besoin que de 2 caractères supplémentaires:

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

Je me demande si quelque chose de mieux que deux (combinés?) Pour les boucles est possible ...

tomsmeding
la source
eh bien, la seule chose dont je suis sûr, c'est qu'il est possible d'en obtenir 75 sur des boucles séparées ( mon ancien commentaire )
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é, en utilisant une nouvelle ligne explicite et, en utilisant l'option de tête obsolète (merci 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}

Production:

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
la source
Épargnez 8 caractères en remplaçant toutes $(( ))les évaluations arithmétiques par $[ ]; partager 2 caractères en remplaçant le $'\n'caractère de nouvelle ligne échappé par un caractère littéral (je veux dire, yes 'sur une ligne, puis 'sur la suivante); épargnez 2 caractères en n'utilisant pas headl' -noption de explicitement, juste -et le nombre.
manatwork
@manatwork: Je ne connaissais pas la $[ ]notation, bon à savoir. Remplacer -npar -n'est qu'un caractère de moins, donc c'est 11 au total, merci beaucoup :).
Thor
2

LOLCODE, 202 octets

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

Non 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

Pythoné pour les non-locuteurs:

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
la source
En tant que personne qui a également utilisé LOLCODE dans une soumission de défi de code, ayez mon vote positif! J'adore cette langue
AIMEZ langue
2

c #, 142 octets

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

Et pas un pour en vue ...

supermeerkat
la source
ForEach"pas un pour en vue" bien ... xD
HyperNeutrino
2

> <> , 50 octets

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

Vous pouvez l'essayer sur l' interpréteur en ligne .

Notez qu'il y a des espaces de fin sur chaque ligne, ce qui pourrait la rendre incorrecte (OP n'a pas indiqué sur ce point à partir de cette réponse).

Aaron
la source
2

/// , 268 octets

/_/\/\///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 le Outgolfer
la source
2

JAVA, 103 94 92 90 octets

L'utilisation de JShell à partir du SDK Java 9 me permet d'économiser une grande quantité d'espace

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

Suite à la suggestion de Kevin, j'ai réduit la solution de 2 octets.

Grâce à cliffroot, j'ai pu le réduire d'un autre 1 octet

user902383
la source
1
Vous pouvez enregistrer quelques octets en supprimant le int de la seconde boucle for et en ajoutant ,jau premier. Alors comme ça: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 semble que vous puissiez remplacer ++i<=9pari++<9
cliffroot
2

C 79 octets

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

le principal

main(){f();}

la table

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

Tcl 98 caractères

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

Javascript: 82 caractères

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
la source
1
votre code peut être raccourci à 75 comme ceci for(i=0,s="";9>i++;){for(j=0;j++<i;)s+=j+"x"+i+"="+j*i+" ";s+="\n"}alert(s), cependant la chose des espaces doubles sur 2 chiffres n'est pas respectée, j'étais sur le point de soumettre celui-là mais en utilisant +(9<i*j?" ":" ")au lieu de simplement +" " éditer: sur le ternaire les espaces doubles ont disparu, mais ils sont sur le second param
ajax333221
Je serai pointilleux mais 4x4n'est pas directement sous 5x4comme dans la tâche.
user902383
1

Python: 87

J'observe les solutions que d'autres ont publiées et la plupart d'entre elles ne semblent pas obtenir l'espacement correct.

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
la source
Vous avez des espaces de fin, cela compte-t-il? ;-)
Rétablir Monica
1

Python (79)

ou ( 77 ) si j'utilise range(10)sauf que cela produit une ligne vide au début

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
la source
1

Perl: 65 , 62 caractères

map{map{printf"%dx%d=%2d ",$_,$i,$_*$i}1..($i=$_);print$/}1..9
Toto
la source
Épargnez 2 caractères en supprimant la printfparenthèse de; 1 caractère libre en déplaçant l'affectation de $ i dans l'expression de gamme: map{map{printf"%dx%d=%2d ",$_,$i,$_*$i}1..($i=$_);print$/}1..9.
manatwork
@manatwork: Merci beaucoup.
Toto