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