27 lines
		
	
	
		
			817 B
		
	
	
	
		
			Factor
		
	
	
			
		
		
	
	
			27 lines
		
	
	
		
			817 B
		
	
	
	
		
			Factor
		
	
	
! Copyright (c) 2012 Anonymous
 | 
						||
! See http://factorcode.org/license.txt for BSD license.
 | 
						||
USING: io kernel math math.parser math.ranges sequences ;
 | 
						||
IN: rosetta-code.multiplication-tables
 | 
						||
 | 
						||
! http://rosettacode.org/wiki/Multiplication_tables
 | 
						||
 | 
						||
! Produce a formatted 12×12 multiplication table of the kind
 | 
						||
! memorised by rote when in primary school.
 | 
						||
 | 
						||
! Only print the top half triangle of products.
 | 
						||
 | 
						||
: print-row ( n -- )
 | 
						||
    [ number>string 2 CHAR: space pad-head write " |" write ]
 | 
						||
    [ 1 - [ "    " write ] times ]
 | 
						||
    [
 | 
						||
        dup 12 [a,b]
 | 
						||
        [ * number>string 4 CHAR: space pad-head write ] with each
 | 
						||
    ] tri nl ;
 | 
						||
 | 
						||
: print-table ( -- )
 | 
						||
    "    " write
 | 
						||
    1 12 [a,b] [ number>string 4 CHAR: space pad-head write ] each nl
 | 
						||
    "   +" write
 | 
						||
    12 [ "----" write ] times nl
 | 
						||
    1 12 [a,b] [ print-row ] each ;
 |