Multiplication tables: Difference between revisions
Convert <lang> elements to <syntaxhighlight>
m (→{{header|APL}}) |
(Convert <lang> elements to <syntaxhighlight>) |
||
Line 12:
{{trans|C}}
<
L(j) 1..n
print(‘#3’.format(j), end' ‘ ’)
Line 23:
L(j) 1..n
print(I j < i {‘ ’} E ‘#3 ’.format(i * j), end' ‘’)
print(‘│ ’i)</
{{out}}
Line 44:
=={{header|360 Assembly}}==
<
MULTTABL CSECT
USING MULTTABL,R12
Line 103:
PORT DC C'--+-------------------------------------------------'
YREGS
END MULTTABL</
{{out}}
<pre> | 1 2 3 4 5 6 7 8 9 10 11 12
Line 122:
=={{header|8080 Assembly}}==
<
lxi h,output
;;; Make the header
Line 218:
inx h
ret
output: equ $</
{{out}}
Line 240:
=={{header|AArch64 Assembly}}==
{{works with|as|Raspberry Pi 3B version Buster 64 bits}}
<
/* ARM assembly AARCH64 Raspberry PI 3B */
/* program multtable64.s */
Line 391:
.include "../includeARM64.inc"
</syntaxhighlight>
{{Output}}
<pre>
Line 410:
=={{header|Action!}}==
<
BYTE i
Line 470:
OD
OD
RETURN</
{{out}}
[https://gitlab.com/amarok8bit/action-rosetta-code/-/raw/master/images/Multiplication_tables.png Screenshot from Atari 8-bit computer]
Line 491:
=={{header|ActionScript}}==
<
package {
Line 571:
}
</syntaxhighlight>
=={{header|Ada}}==
<
with Ada.Text_IO; use Ada.Text_IO;
with Ada.Strings.Fixed; use Ada.Strings.Fixed;
Line 600:
end loop;
end Multiplication_Table;
</syntaxhighlight>
<pre>
| 1 2 3 4 5 6 7 8 9 10 11 12
Line 620:
=={{header|Agena}}==
{{Trans|ALGOL_W}}
<
# print a school style multiplication table
# NB: print outputs a newline at the end, write and printf do not
Line 633:
od;
print()
epocs</
{{out}}
<pre>
Line 658:
<!-- {{does not work with|ELLA ALGOL 68|Any (with appropriate job cards) - tested with release 1.8.8d.fc9.i386 - missing printf and FORMAT}} -->
<
INT max = 12;
INT width = ENTIER(log(max)*2)+1;
Line 676:
OD;
printf(($gl$, hr))
)</
{{out}}
<pre>
Line 698:
=={{header|ALGOL W}}==
<
% print a school style multiplication table %
i_w := 3; s_w := 0; % set output formating %
Line 711:
end;
end.</
{{out}}
<pre>
Line 732:
=={{header|APL}}==
A simple table is trivial:
<syntaxhighlight lang
But that prints out all the duplicated results across the diagonal:
Line 753:
{{works with|Dyalog APL}}
<
{{works with|GNU APL}}
After printing the table, GNU APL will will output the value of the expression that produced it, so in addition to adjusting the header spacing this solution uses <tt>⍬⊣</tt> to throw that value away.
<
{{Out}}
Line 777:
=={{header|AppleScript}}==
===Iteration===
<
repeat with x from 0 to n
if x = 0 then set {table, x} to {{return}, -1}
Line 797:
set text item delimiters to ""
return (characters -4 thru -1 of (" " & x)) as string
end f</
{{out}}
<pre>"
Line 819:
{{trans|JavaScript}} (ES5 functional version)
<
-- multiplicationTable :: Int -> Int -> String
Line 1,001:
end repeat
return out & dbl
end replicate</
{{Out}}
<pre> x 1 2 3 4 5 6 7 8 9 10 11 12
Line 1,034:
=={{header|ARM Assembly}}==
{{works with|as|Raspberry Pi}}
<
/* ARM assembly Raspberry PI */
Line 1,217:
</syntaxhighlight>
=={{header|Arturo}}==
<
print [" |"] ++ map 1..n => [pad to :string & 3]
print "----+" ++ join map 1..n => "----"
Line 1,231:
]
mulTable 12</
{{out}}
Line 1,252:
=={{header|ASIC}}==
{{trans|Modula-2}}
<
REM Multiplication tables
N = 12
Line 1,299:
PRINT S2$;
RETURN
</syntaxhighlight>
{{out}}
<pre>
Line 1,319:
=={{header|AutoHotkey}}==
<
Gui, Margin, 0, 0
Gui, Font, s9, Fixedsys
Line 1,354:
}
GuiControl,, Edit2, %Table%
Return</
Message box shows:
<pre> x | 1 2 3 4 5 6 7 8 9 10 11 12
Line 1,373:
=={{header|AutoIt}}==
<
$tableupto=12
$table=""
Line 1,392:
Next
Next
msgbox(0,"Multiplication Tables",$table)</
=={{header|AWK}}==
<
BEGIN {
for(i=1;i<=12;i++){
Line 1,404:
print
}
}</
{{out}}
<pre>
Line 1,423:
=={{header|Axe}}==
Since the standard text output is poorly suited to this kind of formatted data, this example is implemented by writing to the screen buffer using the small font. Also, the limits were adjusted to 10x8 to make the table fit the screen.
<
ClrDraw
For(I,1,10)
Line 1,440:
DispGraph
getKeyʳ
Fix 4</
Approximate output:
Line 1,460:
==={{header|Applesoft BASIC}}===
<
110 DEF FN T(X) = X * 3 + (X < 4) * (4 - X) + (X > 10) * (X - 10) - 1
120 FOR N = -1 TO M
Line 1,469:
170 V$ = STR$(I * J)
180 PRINT TAB(FN T(J)) MID$(" ", 1, 3 - LEN(V$) - (J < 4)) V$;
190 NEXT J, N</
==={{header|BASIC256}}===
<
print "---+------------------------------------------------"
Line 1,488:
next j
print nums$
next i</
==={{header|BBC BASIC}}===
BBC BASIC automatically right-justifies numeric output.
<
FOR row% = 1 TO 12
PRINT row% TAB(row% * @%) ;
Line 1,499:
NEXT col%
PRINT
NEXT row%</
{{out}}
<pre> 1 1 2 3 4 5 6 7 8 9 10 11 12
Line 1,516:
==={{header|Commodore BASIC}}===
The table consumes every one of the 1000 cells in a 40-column display, and even so has to cheat a little to fit 10x10=100 into the table. It uses the INSERT character (<tt>CHR$(148)</tt>) to push characters over to the right after printing them without triggering a scroll that would push the top line off the screen.
<
110 PRINT " X";
120 W=2
Line 1,560:
520 N$=MID$(STR$(N),2)
530 IF LEN(N$)<W THEN N$=" "+N$:GOTO 530
540 RETURN</
{{Out}}
Line 1,589:
12: : : : : : : : : : : :144</pre>
==={{header|FreeBASIC}}===
<
' FB 1.05.0 Win64
Line 1,611:
Print
Print "Press any key to quit"
Sleep</
{{out}}
Line 1,632:
==={{header|FutureBasic}}===
<syntaxhighlight>
long i, j
Line 1,652:
HandleEvents
</syntaxhighlight>
{{output}}
<pre>
Line 1,674:
{{trans|Modula-2}}
{{works with|PC-BASIC|any}}
<
10 ' Multiplication Tables
20 LET N% = 12
Line 1,692:
160 PRINT "| "; USING "##"; I%
170 NEXT I%
</syntaxhighlight>
{{out}}
<pre>
Line 1,712:
==={{header|IS-BASIC}}===
<
110 TEXT 80
120 PRINT TAB(7);
Line 1,725:
210 NEXT
220 PRINT
230 NEXT</
==={{header|Liberty BASIC}}===
<
Print "--+------------------------------------------------------------"
Line 1,744:
Next ii
Print nums$
Next i</
{{out}}
<pre>
Line 1,765:
==={{header|Microsoft Small Basic}}===
{{trans|Modula-2}}
<
n = 12
For j = 1 To n - 1
Line 1,794:
TextWindow.WriteLine("")
EndFor
</syntaxhighlight>
{{out}}
<pre>
Line 1,814:
==={{header|PureBasic}}===
<
sp = Len(Str(maxx*maxy)) + 1
trenner$ = "+"
Line 1,848:
OpenConsole()
PrintMultiplicationTable(12, 12)
Input()</
Ouput similar to ALGOL 68
==={{header|QBasic}}===
<
'header row
Line 1,878:
PRINT o$;
NEXT
NEXT</
{{out}}
Line 1,899:
==={{header|Run BASIC}}===
<
For i = 1 To 12
html "<TR align=right><TD>";i;"</td>"
Line 1,909:
next i
html "</table>"
</
<TABLE border=1 ><TR bgcolor=silver align=center><TD><TD>1<TD>2<TD>3<TD>4<TD>5<TD>6<TD>7<TD>8<TD>9<TD>10<TD>11<TD>12</td></TR><TR align=right><TD>1</td><td width=25>1</td><td width=25>2</td><td width=25>3</td><td width=25>4</td><td width=25>5</td><td width=25>6</td><td width=25>7</td><td width=25>8</td><td width=25>9</td><td width=25>10</td><td width=25>11</td><td width=25>12</td><TR align=right><TD>2</td><td width=25></td><td width=25>4</td><td width=25>6</td><td width=25>8</td><td width=25>10</td><td width=25>12</td><td width=25>14</td><td width=25>16</td><td width=25>18</td><td width=25>20</td><td width=25>22</td><td width=25>24</td><TR align=right><TD>3</td><td width=25></td><td width=25></td><td width=25>9</td><td width=25>12</td><td width=25>15</td><td width=25>18</td><td width=25>21</td><td width=25>24</td><td width=25>27</td><td width=25>30</td><td width=25>33</td><td width=25>36</td><TR align=right><TD>4</td><td width=25></td><td width=25></td><td width=25></td><td width=25>16</td><td width=25>20</td><td width=25>24</td><td width=25>28</td><td width=25>32</td><td width=25>36</td><td width=25>40</td><td width=25>44</td><td width=25>48</td><TR align=right><TD>5</td><td width=25></td><td width=25></td><td width=25></td><td width=25></td><td width=25>25</td><td width=25>30</td><td width=25>35</td><td width=25>40</td><td width=25>45</td><td width=25>50</td><td width=25>55</td><td width=25>60</td><TR align=right><TD>6</td><td width=25></td><td width=25></td><td width=25></td><td width=25></td><td width=25></td><td width=25>36</td><td width=25>42</td><td width=25>48</td><td width=25>54</td><td width=25>60</td><td width=25>66</td><td width=25>72</td><TR align=right><TD>7</td><td width=25></td><td width=25></td><td width=25></td><td width=25></td><td width=25></td><td width=25></td><td width=25>49</td><td width=25>56</td><td width=25>63</td><td width=25>70</td><td width=25>77</td><td width=25>84</td><TR align=right><TD>8</td><td width=25></td><td width=25></td><td width=25></td><td width=25></td><td width=25></td><td width=25></td><td width=25></td><td width=25>64</td><td width=25>72</td><td width=25>80</td><td width=25>88</td><td width=25>96</td><TR align=right><TD>9</td><td width=25></td><td width=25></td><td width=25></td><td width=25></td><td width=25></td><td width=25></td><td width=25></td><td width=25></td><td width=25>81</td><td width=25>90</td><td width=25>99</td><td width=25>108</td><TR align=right><TD>10</td><td width=25></td><td width=25></td><td width=25></td><td width=25></td><td width=25></td><td width=25></td><td width=25></td><td width=25></td><td width=25></td><td width=25>100</td><td width=25>110</td><td width=25>120</td><TR align=right><TD>11</td><td width=25></td><td width=25></td><td width=25></td><td width=25></td><td width=25></td><td width=25></td><td width=25></td><td width=25></td><td width=25></td><td width=25></td><td width=25>121</td><td width=25>132</td><TR align=right><TD>12</td><td width=25></td><td width=25></td><td width=25></td><td width=25></td><td width=25></td><td width=25></td><td width=25></td><td width=25></td><td width=25></td><td width=25></td><td width=25></td><td width=25>144</td></table>
==={{header|True BASIC}}===
<
PRINT "---+------------------------------------------------"
Line 1,929:
NEXT i
PRINT
END</
==={{header|uBasic/4tH}}===
{{trans|BBC BASIC}}
<
Print R;Tab(R * 5);
For C = R To 12
Line 1,939:
Next
Print
Next</
{{out}}
<pre>1 1 2 3 4 5 6 7 8 9 10 11 12
Line 1,958:
==={{header|Visual Basic}}===
{{works with|Visual Basic|VB6 Standard}}
<
Const nmax = 12, xx = 3
Const x = xx + 1
Line 1,981:
Debug.Print s
Next i
End Sub 'Main</
{{Out}}
<pre>
Line 2,003:
{{trans|Modula-2}}
{{works with|Windows XBasic}}
<
PROGRAM "multiplicationtables"
VERSION "0.0001"
Line 2,031:
END FUNCTION
END PROGRAM
</syntaxhighlight>
{{out}}
<pre>
Line 2,051:
==={{header|Yabasic}}===
<
print "---+------------------------------------------------"
Line 2,067:
next j
print nums$
next i</
=={{header|Batch File}}==
<
setlocal enabledelayedexpansion
Line 2,116:
for /l %%A in (1,1,%numspaces%) do set "space=!space! "
goto :EOF
::/The Functions.</
{{Out}}
<pre>
Line 2,137:
=={{header|Befunge}}==
<
w^p2<y|!`+66:+1,+*84*"\"!:g25$_,#!>#:<$$_^#!:-1g10/+55\-**<<
"$9"^x>$55+,51g1+:66+`#@_055+68*\>\#<1#*-#9:#5_$"+---">:#,_$</
{{out}}
Line 2,161:
<code>Table</code> formats a multiplication table for any given n. The result is a character array and can be printed with <code>•Out˘</code>. The overall structure is to build a 3-by-3 array of parts, then put them together with a two-dimensional join (<code>∾</code>).
<
m ← •Repr¨ ×⌜˜1+↕𝕩 # The numbers, formatted individually
main ← ⟨ # Bottom part: three sections
Line 2,172:
}
•Out˘ Table 12</
{{Out}}
<
--+-----------------------------------------------
1| 1 2 3 4 5 6 7 8 9 10 11 12
Line 2,187:
10| 100 110 120
11| 121 132
12| 144</
=={{header|Bracmat}}==
<
= high i j row row2 matrix padFnc tmp
, celPad leftCelPad padFnc celDashes leftDashes
Line 2,245:
)
& out$(multiplicationTable$12)
& done;</
{{out}}
<pre> X| 1 2 3 4 5 6 7 8 9 10 11 12
Line 2,263:
=={{header|C}}==
<
int main(void)
Line 2,279:
return 0;
}</
{{out}}
<pre> 1 2 3 4 5 6 7 8 9 10 11 12
Line 2,297:
=={{header|C sharp}}==
<
namespace multtbl
Line 2,335:
}
}
</syntaxhighlight>
{{out}}
Line 2,359:
and formats the table columns.
<
#include <iomanip>
#include <cmath> // for log10()
Line 2,436:
return 0;
}
</syntaxhighlight>
{{out}}
Line 2,470:
=={{header|Chef}}==
<
Prints out a multiplication table.
Line 2,534:
Pour contents of the 2nd mixing bowl into the 2nd baking dish.
Serves 2.</
{{out}}
Line 2,555:
This is more generalized.
Any size can be used and the table will be formatted appropriately.
<
trange (range 1 (inc size))
fmt-width (+ (.length (str (* size size))) 1)
Line 2,568:
(for [j trange] j))))))]
(println s)))
</syntaxhighlight>
{{out}}
Line 2,587:
=={{header|COBOL}}==
<
program-id. multiplication-table.
Line 2,633:
goback.
end program multiplication-table.
</syntaxhighlight>
{{out}}
<pre>prompt$ cobc -xj multiplication-table.cob
Line 2,651:
=={{header|CoffeeScript}}==
<
print_multiplication_tables = (n) ->
width = 4
Line 2,683:
print_multiplication_tables 12
</syntaxhighlight>
{{out}}
Line 2,705:
=={{header|Common Lisp}}==
<
(do ((m 0 (if (= 12 m) 0 (1+ m)))
(n 0 (if (= 12 m) (1+ n) n)))
Line 2,722:
(format t "~4,D" (* m n))
(format t " "))))))
</syntaxhighlight>
Output:
<pre>
Line 2,744:
=={{header|D}}==
{{trans|PicoLisp}}
<
import std.stdio, std.array, std.range, std.algorithm;
Line 2,752:
writefln("%4d" ~ " ".replicate(4 * (y - 1)) ~ "%(%4d%)", y,
iota(y, n + 1).map!(x => x * y));
}</
{{out}}
<pre> 1 2 3 4 5 6 7 8 9 10 11 12
Line 2,770:
=={{header|DCL}}==
<
$ h = f$fao( "!4* " )
$ r = 0
Line 2,795:
$ write sys$output f$fao( "!4SL", r ) + o
$ r = r + 1
$ if r .le. max then $ goto loop1</
{{out}}
<pre>$ @multiplication_tables
Line 2,817:
=={{header|Delphi}}==
{{trans|DWScript}}
<
{$APPTYPE CONSOLE}
Line 2,846:
Writeln;
end;
end.</
=={{header|Draco}}==
<
proc nonrec multab(byte n) void:
byte i,j;
Line 2,874:
/* Print 12-by-12 multiplication table */
proc nonrec main() void: multab(12) corp</
{{out}}
<pre> | 1 2 3 4 5 6 7 8 9 10 11 12
Line 2,893:
=={{header|DWScript}}==
<
var row, col : Integer;
Line 2,911:
PrintLn('');
end;
</syntaxhighlight>
=={{header|E}}==
<
println(`{|style="border-collapse: collapse; text-align: right;"`)
println(`|`)
Line 2,928:
}
}
println("|}")</
Targets MediaWiki markup.
Line 3,120:
=={{header|EasyLang}}==
<
func out h . .
if h < 10
Line 3,151:
.
print ""
.</
=={{header|EchoLisp}}==
<
(lib 'matrix)
Line 3,167:
(array-print (build-array 13 13 mtable))
</syntaxhighlight>
{{out}}
<pre>
Line 3,186:
=={{header|Elixir}}==
<
def multiplication_tables(n) do
IO.write " X |"
Line 3,201:
end
RC.multiplication_tables(12)</
{{out}}
Line 3,222:
=={{header|Erlang}}==
<
-module( multiplication_tables ).
Line 3,247:
[io:fwrite("~5B", [Sum]) || {_Y, Sum} <- Uptos],
io:nl().
</syntaxhighlight>
{{out}}
<pre>
Line 3,268:
=={{header|Euphoria}}==
<
for i = 1 to 12 do
printf(1," %3d",i)
Line 3,285:
end for
puts(1,'\n')
end for</
{{out}}
Line 3,312:
{{Works with|Office 365 betas 2021}}
<
=LAMBDA(f,
LAMBDA(n,
Line 3,328:
)
)
)</
and also assuming the following generic bindings in the Name Manager for the WorkBook:
<
=LAMBDA(a, LAMBDA(b, a * b))
Line 3,341:
POWER(n, e)
)
)</
(The single formula in cell '''B2''' below populates the whole 12*12 grid)
Line 3,758:
=={{header|F Sharp|F#}}==
Translation of C#
<
open System
Line 3,778:
multTable ()
</syntaxhighlight>
{{out}}
<pre>
Line 3,798:
=={{header|Factor}}==
<
IN: multiplication-table
Line 3,814:
" +" write
12 [ "----" write ] times nl
1 12 [a,b] [ print-row ] each ;</
<pre>
Line 3,834:
=={{header|FALSE}}==
<
[$p;! m: 2[$m;\>][" "1+]# [$13\>][$m;*p;!1+]#%"
"]l:
1[$13\>][$l;!1+]#%</
=={{header|Fantom}}==
<
class Main
{
Line 3,863:
}
}
</syntaxhighlight>
=={{header|Forth}}==
<
: multiplication-table
cr 2 spaces 13 2 do i 4 u.r loop
Line 3,876:
loop
loop ;
</syntaxhighlight>
=={{header|Fortran}}==
{{works with|Fortran|90 and later}}
<
implicit none
Line 3,898:
end do
end program multtable</
===Traditional approach===
Line 3,904:
So instead, write the table by first writing a line to a CHARACTER variable then blanking out the unwanted part.
<
Cast forth a twelve times table, suitable for chanting at school.
INTEGER I,J !Steppers.
Line 3,916:
3 WRITE (6,"(A)") ALINE !Print the text.
END !"One one is one! One two is two! One three is three!...
</syntaxhighlight>
Output in the same style as above, with underlining unavailable: those who have used a lineprinter's overprint facility to properly underline find the flabby modern requirement of a second line vexing, but, few output devices support underlining in so easy a way.
×| 1 2 3 4 5 6 7 8 9 10 11 12
Line 3,933:
12| 144
Going to the trouble of preparing results, and then blanking some might seem a little too crude. An alternative would be to use a different FORMAT statement for each line of output. But, a collection of a dozen output statements hardly represents a programming solution. Instead, create and then use the text of FORMAT statements, as follows. Notice that there are ''no reserved words'' in Fortran.
<
Cast forth a twelve times table, suitable for chanting at school.
INTEGER I,J !Steppers.
Line 3,944:
3 WRITE (6,FORMAT) I,(I*J, J = I,12) !Use it.
END !"One one is one! One two is two! One three is three!...
</syntaxhighlight>
The output is the same, so instead, here are the generated FORMAT texts:
(I3,'|',0X,12I4)
Line 3,965:
===VAX FORTRAN===
<
PROGRAM TABLES
IMPLICIT NONE
Line 3,990:
C
END
</
===FORTRAN-IV===
<
C
C Produce a formatted multiplication table of the kind memorised by rote
Line 4,026:
3 CONTINUE
C
END</
===Microsoft FORTRAN-80===
The use of a non standard(?) BYTE data type available in Microsoft FORTRAN-80 makes it easier to understand what is going on.
<
C
C Produce a formatted multiplication table of the kind memorised by rote
Line 4,062:
3 CONTINUE
C
END</
4 FORMAT(1x,24A1)</
| 1 2 3 4 5 6 7 8 9 10 11 12
--+------------------------------------------------
Line 4,077:
10| 100 110 120
11| 121 132
12| 144</
=={{header|Frink}}==
<
formatTable[a,"right"]</
{{out}}
Line 4,102:
=={{header|Gambas}}==
'''[https://gambas-playground.proko.eu/?gist=3a3a987766a9a9a383b3e0e8a65d9ea2 Click this link to run this code]'''
<
Public Sub Main()
Line 4,124:
Next
End</
Output:
<pre>
Line 4,144:
=={{header|Go}}==
<syntaxhighlight lang=go>
package main
Line 4,172:
fmt.Println("")
}
</syntaxhighlight>
=={{header|Groovy}}==
Solution:
<
assert size > 1
Line 4,194:
}
printMultTable()</
{{out}}
Line 4,214:
=={{header|Haskell}}==
<
------------------- MULTIPLICATION TABLE -----------------
Line 4,249:
gap = replicate w ' '
rows = (maybe gap (rjust w ' ' . show) =<<) <$> xs
rjust n c = (drop . length) <*> (replicate n c <>)</
{{Out}}
<pre> 13 14 15 16 17 18 19 20
Line 4,287:
Or, more roughly and directly:
<
import Data.Function (on)
import Control.Monad (join)
Line 4,297:
groupBy
(on (==) fst)
(filter (uncurry (>=)) $ join ((<*>) . fmap (,)) [1 .. 12])</
{{Out}}
<pre>[1]
Line 4,313:
=={{header|hexiscript}}==
<
let n tostr n
while len n < l; let n (" " + n); endwhile
Line 4,331:
endfor
println ""
endfor</
=={{header|HicEst}}==
<
DO line = 1, 12
WRITE(Row=line+2, Format='i2') line
Line 4,340:
WRITE(Row=line+2, Column=4*col, Format='i3') line*col
ENDDO
ENDDO</
=={{header|HolyC}}==
{{trans|C}}
<
for (j = 1; j <= n; j++)
if (j != n)
Line 4,364:
Print("%3d ", i * j);
Print("| %d\n", i);
}</
=={{header|Icon}} and {{header|Unicon}}==
<
lim := 13
wid := 5
Line 4,373:
every (i := 1 to lim) &
writes(right( i||" |" | (j := 1 to lim, if j < i then "" else i*j) | "\n",wid)) # table content and triangle
end </
The above example is a somewhat exaggerated example of contractions.
Line 4,397:
=={{header|J}}==
<
format=: 'b4.0' 8!:2 ]
(('*' ; ,.) ,. ({. ; ])@format@multtable) >:i.12
Line 4,415:
│11│ 121 132│
│12│ 144│
└──┴────────────────────────────────────────────────┘</
That said, note that <code>*/~</code> is the core primitive used to construct a multiplication table and this is a general technique so that, for example, <code>+/~</code> would make an addition table. The rest is just to make it look pretty (and to blank out the lower triangle -- we use a less than or equal table (<code><:/~</code>) to control that, and format zeros as spaces to blank them out).
=={{header|Java}}==
<
public static void main(String[] args) {
for (int i = 1; i <= 12; i++)
Line 4,439:
}
}
}</
{{out}}
<pre>
Line 4,462:
===Imperative===
<
<head>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" >
Line 4,513:
<div id='target'></div>
</body>
</html></
{{out}} (minus the style):
Line 4,520:
===Functional===
====ES5====
<
// [m..n]
Line 4,568:
JSON.stringify(lstTable);
})(1, 12);</
{{out}}
Line 4,601:
|}
<
[1,1,2,3,4,5,6,7,8,9,10,11,12],
[2,"",4,6,8,10,12,14,16,18,20,22,24],
Line 4,613:
[10,"","","","","","","","","",100,110,120],
[11,"","","","","","","","","","",121,132],
[12,"","","","","","","","","","","",144]]</
====ES6====
<
"use strict";
Line 4,689:
// MAIN ---
return main();
})();</
{{Out}}
{| class="wikitable" style="text-align:center;width:33em;height:33em;table-layout:fixed"
Line 4,720:
=={{header|Jsish}}==
<
var m, n, tableSize = 12;
Line 4,740:
}
}
printf('\n');</
{{out}}
Line 4,768:
=={{header|Julia}}==
<
println(" X | 1 2 3 4 5 6 7 8 9 10 11 12")
Line 4,781:
print(" ")
end
end</
{{out}}
Line 4,800:
=={{header|Kotlin}}==
<
fun main(args: Array<String>) {
Line 4,811:
println()
}
}</
{{out}}
Line 4,835:
Outputs are visible in http://lambdaway.free.fr/lambdawalks/?view=multiplication_table
<
{def format
{lambda {:w :c}
Line 4,876:
3) {make_table {operation pow} 6 10}
</syntaxhighlight>
=={{header|Lasso}}==
<
local(result) = ``
local(padSize) = string(#max*#max)->size + 1
Line 4,907:
}
printTimesTables(12)</
{{out}}
Line 4,927:
=={{header|Logo}}==
{{works with|UCB Logo}}
<
type "| | for [i 2 :n] [type form :i 4 0] (print)
(print)
Line 4,940:
mult.table 12
</syntaxhighlight>
=={{header|Lua}}==
<
for i = 1, 12 do
io.write( string.format( "%#5d", i ) )
Line 4,960:
end
io.write( "\n" )
end</
<pre> | 1 2 3 4 5 6 7 8 9 10 11 12
----------------------------------------------------------------
Line 4,978:
=={{header|M2000 Interpreter}}==
Using jagged array (arrays of arrays)
<
Module CheckIt {
Dim Base 1, A(12)
Line 5,005:
}
CheckIt
</syntaxhighlight>
Final loop can be this, using Each() and r1 as pointer to array.
Line 5,040:
=={{header|Maple}}==
<
for i to 12 do
printf("%-3d ", i);
Line 5,057:
end if
end do
end do</
{{out}}
<pre>
Line 5,077:
=={{header|Mathematica}}/{{header|Wolfram Language}}==
<
{{out}}
<pre>1 1 2 3 4 5 6 7 8 9 10 11 12
Line 5,095:
timesTable.m: (creates Times Table of N degree)
<
table = [(0:N); (1:N)' triu( kron((1:N),(1:N)') )];
end</
A minimally vectorized version of the above code:
<
%Generates a column vector with integers from 1 to N
Line 5,117:
table = [columnLabels; rowLabels triu(table)];
end</
{{out}}
Line 5,141:
=={{header|Maxima}}==
<
for j: 1 thru 12 do (
if j>=i or j=1 then printf(true, "~4d", i*j) else printf(true, " ")
),
printf(true, "~%")
);</
=={{header|МК-61/52}}==
<
ИП5 ИП0 - x=0 03
ИП4 ИП0 - x#0 22 ИП4 П5 БП 02
С/П</
''Input'': 12 С/П ...
Line 5,175:
=={{header|Modula-2}}==
{{works with|ADW Modula-2|any (Compile with the linker option ''Console Application'').}}
<
MODULE MultiplicationTables;
Line 5,215:
END;
END MultiplicationTables.
</syntaxhighlight>
{{out}}
<pre>
Line 5,236:
=={{header|MOO}}==
This quick example is designed to demonstrate raw MOO. In other words it does not use any of the helper functions available in popular DBs such as LambdaMOO.
<
@verb me:@tables none none none rxd
@program me:@tables
Line 5,262:
endfor
.
</syntaxhighlight>
LambdaMOO string utilities version:
<
@program me:@tables
player:tell(" | 1 2 3 4 5 6 7 8 9 10 11 12");
Line 5,277:
endfor
.
</syntaxhighlight>
{{out}}
<pre>
Line 5,298:
=={{header|MUMPS}}==
<
;Print out a multiplication table
;SIZE is the size of the multiplication table to make
Line 5,318:
..WRITE:((A-1)>=(D-2))&((D-2)>=1) ?((A-1)*5),$JUSTIFY((D-2)*(A-1),MW)
KILL MW,D,A,BAR
QUIT</
{{out}}
Line 5,339:
=={{header|Neko}}==
<
Multiplication table, in Neko
Tectonics:
Line 5,380:
$print("\n");
j += 1;
}</
{{out}}
Line 5,403:
=={{header|Nim}}==
{{trans|C}}
<
const n = 12
Line 5,414:
for j in 1..n:
stdout.write if j<i: " " else: "{:3d} ".fmt(i*j)
echo "| {:2d}".fmt(i)</
{{out}}
<pre> 1 2 3 4 5 6 7 8 9 10 11 12
Line 5,434:
{{trans|C}}
<
let max = 12 in
let fmax = float_of_int max in
Line 5,452:
print_newline()
done;
print_newline()</
=={{header|PARI/GP}}==
Quick and dirty one-liner:
<
=={{header|Pascal}}==
Line 5,462:
=={{header|Perl}}==
<
our $width = length($max**2) + 1;
Line 5,471:
foreach "$i|", map { $_ >= $i and $_*$i } 1..$max;
print "\n";
}</
{{out}}
Line 5,493:
=={{header|Phix}}==
{{Trans|Ada}}
<!--<
<span style="color: #7060A8;">printf</span><span style="color: #0000FF;">(</span><span style="color: #000000;">1</span><span style="color: #0000FF;">,</span><span style="color: #008000;">" | "</span><span style="color: #0000FF;">)</span>
<span style="color: #008080;">for</span> <span style="color: #000000;">col</span><span style="color: #0000FF;">=</span><span style="color: #000000;">1</span> <span style="color: #008080;">to</span> <span style="color: #000000;">12</span> <span style="color: #008080;">do</span>
Line 5,505:
<span style="color: #008080;">end</span> <span style="color: #008080;">for</span>
<span style="color: #008080;">end</span> <span style="color: #008080;">for</span>
<!--</
{{out}}
<pre style="font-size: 8px">
Line 5,525:
=={{header|Picat}}==
<
N=12,
make_table(N),
Line 5,549:
nl
end,
nl.</
{{out}}
Line 5,569:
=={{header|PicoLisp}}==
<
(space 4)
(for X N
Line 5,582:
(prinl) ) )
(mulTable 12)</
{{out}}
<pre> 1 2 3 4 5 6 7 8 9 10 11 12
Line 5,600:
=={{header|PL/I}}==
<
/* 12 x 12 multiplication table. */
Line 5,615:
end multiplication_table;
</syntaxhighlight>
Result:
<syntaxhighlight>
1 2 3 4 5 6 7 8 9 10 11 12
_________________________________________________
Line 5,634:
11 | 121 132
12 | 144
</syntaxhighlight>
=={{header|PowerShell}}==
<
$Tab = "`t"
Line 5,657:
# Combine them all together
) -join $Tab
}</
{{out}}
<pre> 1 2 3 4 5 6 7 8 9 10 11 12
Line 5,673:
12 144</pre>
<b>A more general solution</b>
<
{
# For clarity
Line 5,698:
}
Get-TimesTable 18</
{{out}}
<pre> 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
Line 5,721:
=={{header|Prolog}}==
<
print_header(S,E),
make_table_rows(S,E),
Line 5,753:
print_num(X) :- X < 10, format(' ~p', X).
print_num(X) :- between(10,99,X), format(' ~p', X).
print_num(X) :- X > 99, format(' ~p', X).</
{{out}}
<pre>
Line 5,778:
=={{header|Python}}==
===Procedural===
<
>>> width = len(str(size**2))
>>> for row in range(-1,size+1):
Line 5,806:
11│ 121 132
12│ 144
>>> </
The above works with Python 3.X, which uses Unicode strings by default. <br>
Line 5,818:
and then again, for comparison, as an equivalent '''list monad''' expression (''mulTable2'' function):
<
1. by list comprehension (mulTable ),
Line 5,920:
if __name__ == '__main__':
main()</
{{Out}}
<pre>By list comprehension (mulTable):
Line 5,956:
{{Trans|Haskell}}
{{Works with|Python|3.7}}
<
import collections
Line 6,222:
# MAIN ---
if __name__ == '__main__':
main()</
{{Out}}
<pre> 13 14 15 16 17 18 19 20
Line 6,262:
=={{header|Quackery}}==
<
tuck size -
times sp echo$ ] is echo-rj ( n n --> )
Line 6,281:
[ dip dup
* 4 echo-rj ] ]
cr drop ] ]</
{{Out}}
Line 6,301:
=={{header|R}}==
<syntaxhighlight lang=r>
multiplication_table <- function(n=12)
{
Line 6,312:
}
multiplication_table()
</syntaxhighlight>
=={{header|Racket}}==
<
#lang racket
Line 6,327:
(show-line (cons y (for/list ([x (in-range 1 13)])
(if (<= y x) (* x y) "")))))
</syntaxhighlight>
{{out}}
Line 6,348:
=={{header|Raku}}==
(formerly Perl 6)
<
say '×'.fmt($f) ~ ' ┃ ' ~ (1..$max).fmt($f);
Line 6,355:
for 1..$max -> $i {
say $i.fmt($f) ~ ' ┃ ' ~ ( $i ≤ $_ ?? $i×$_ !! '' for 1..$max ).fmt($f);
}</
{{out}}
<pre>
Line 6,375:
=={{header|REBOL}}==
<
Title: "12x12 Multiplication Table"
URL: http://rosettacode.org/wiki/Print_a_Multiplication_Table
Line 6,407:
print rejoin [ crlf "How about " size: 20 "?" crlf ]
-- .row " x " 1 -- repeat y size [.row p3 y y] --</
{{out}} (only 12x12 shown):
Line 6,429:
=={{header|REXX}}==
<
parse arg sz . /*obtain optional argument from the CL.*/
if sz=='' | sz=="," then sz= 12 /*Not specified? Then use the default.*/
Line 6,451:
top: $= '┌'__"┬"copies(___'┬', sz); call dap "┐"; ?= arg(1); say $; call hdr; return
sep: $= '├'__"┼"copies(___'┼', sz); call dap "┤"; say $; return
bot: $= '└'__"┴"copies(___'┴', sz); call dap "┘"; say $; return</
{{out|output|text= when using the default input of: <tt> 12 </tt>}}
<pre>
Line 6,523:
=={{header|Ring}}==
<
multiplication_table(12)
func multiplication_table n
Line 6,535:
next
func fsize x,n return string(x) + copy(" ",n-len(string(x)))
</syntaxhighlight>
Output
<
| 1 2 3 4 5 6 7 8 9 10 11 12
----+-------------------------------------------------
Line 6,553:
11 | 121 132
12 | 144
</syntaxhighlight>
=={{header|Ruby}}==
<
puts " |" + (" %3d" * n) % [*1..n]
puts "----+" + "----" * n
Line 6,567:
end
multiplication_table 12</
{{out}}
Line 6,588:
=={{header|Rust}}==
<
fn main() {
Line 6,608:
println!("| {}", i);
}
}</
or, in terms of map:
<
let xs = (1..=12)
.map(|a| {
Line 6,628:
println!("{}", xs.join("\n"))
}</
=={{header|Scala}}==
<
//Multiplication Table
print("%5s".format("|"))
Line 6,650:
println("")
}
</syntaxhighlight>
=== case ===
<
implicit def intToString(i: Int) = i.toString
val cell = (x:String) => print("%5s".format(x))
Line 6,672:
}
}
</syntaxhighlight>
=={{header|Scheme}}==
Line 6,678:
A better implementation of <tt>iota</tt> is provided by SRFI-1 [http://srfi.schemers.org/srfi-1/srfi-1.html].
<
(define iota
(lambda (count start step)
Line 6,705:
(loop (+ count 1)
(cdr numbers)))))))
</syntaxhighlight>
<pre>
Line 6,725:
=={{header|Scilab}}==
{{works with|Scilab|5.5.1}}
<
s= blanks(xx)+" |"
for j=1:nmax
Line 6,746:
end
printf("%s\n",s)
end</
{{out}}
<pre> | 1 2 3 4 5 6 7 8 9 10 11 12
Line 6,764:
=={{header|Seed7}}==
<
const proc: main is func
Line 6,787:
writeln("|" <& i lpad 3);
end for;
end func;</
{{out}}
Line 6,808:
=={{header|Sidef}}==
<
var width = (max**2 -> len+1)
Line 6,820:
{ |i|
say fmt_row("#{i}┃", {|j| i <= j ? i*j : ''}.map(1..max)...)
} << 1..max</
{{out}}
<pre>
Line 6,841:
=={{header|Simula}}==
{{trans|ALGOL W}}
<
integer i, j;
outtext( " " );
Line 6,857:
outimage
end;
end</
{{out}}
<pre> 1 2 3 4 5 6 7 8 9 10 11 12
Line 6,875:
=={{header|Swift}}==
<
let size = 12
Line 6,895:
printRow( with: i, upto: size)
}
</syntaxhighlight>
=={{header|Tailspin}}==
<
templates formatN&{width:}
[ 1..$width -> ' ', '$;'... ] -> '$(last-$width+1..last)...;' !
Line 6,910:
'$ -> formatN&{width:2};|$:1..($-1)*4 -> ' ';$:$..12 -> $*$row -> formatN&{width:4};
' ! \) -> !OUT::write
</syntaxhighlight>
{{out}}
<pre>
Line 6,930:
=={{header|Tcl}}==
<
puts \u0020\u2500\u2500\u253c[string repeat \u2500 48]
for {set i 1} {$i <= 12} {incr i} {
Line 6,940:
}
puts ""
}</
{{out}}
<pre>
Line 6,960:
=={{header|TUSCRIPT}}==
<
$$ MODE TUSCRIPT
x=y="1'2'3'4'5'6'7'8'9'10'11'12"
Line 6,979:
PRINT col,cnt
ENDLOOP
</syntaxhighlight>
{{out}}
<pre style='height:30ex;overflow:scroll'>
Line 6,998:
== {{header|TypeScript}} ==
{{trans|Modula-2}}
<
// Multiplication tables
Line 7,013:
console.log("| " + i.toString().padStart(2, ' '));
}
</syntaxhighlight>
{{out}}
<pre>
Line 7,035:
It's no more difficult to express the general case than the size 12 case, so
a table generating function parameterized by the size is used.
<
#import std
#import nat
Line 7,048:
main = table 12
</syntaxhighlight>
A better way of using Ursala to make tables would be with the <code>tbl</code> library included with
the standard package, which can generate LaTeX code for arbitrary heading hierarchies and typesetting options, but here it is in ASCII art.
Line 7,070:
=={{header|VBA}}==
<syntaxhighlight lang=vb>
Option Explicit
Line 7,100:
Next i
End Sub
</syntaxhighlight>
{{out}}
<pre> 1 2 3 4 5 6 7 8 9 10 11 12
Line 7,118:
=={{header|Wren}}==
{{libheader|Wren-fmt}}
<
var nums = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
Line 7,126:
var nums2 = nums.map { |n| (n >= i) ? (n * i).toString : " " }.toList
Fmt.print("$3d | $4s", i, nums2)
}</
{{out}}
Line 7,148:
=={{header|XPL0}}==
<
int X, Y;
[Format(4, 0);
Line 7,161:
CrLf(0);
];
]</
{{out}}
Line 7,182:
=={{header|zkl}}==
<
w,fmt := (n*n).numDigits, " %%%dd".fmt(w).fmt; // eg " %3".fmt
header:=[1..n].apply(fmt).concat(); // 1 2 3 4 ...
Line 7,191:
[a..n].pump(String,'*(a),fmt).println();
}
}(12);</
{{out}}
<pre>
|