How to resolve the algorithm Pinstripe/Printer step by step in the Tcl programming language

Published on 12 May 2024 09:40 PM

How to resolve the algorithm Pinstripe/Printer step by step in the Tcl programming language

Table of Contents

Problem Statement

The task is to demonstrate the creation of a series of 1 point wide vertical pinstripes with a sufficient number of pinstripes to span the entire width of the printed page (except for the last pinstripe). The pinstripes should alternate one point white, one point black. (Where the printer does not support producing graphics in terms of points, pixels may be substituted in this task.) After the first inch of printing, we switch to a wider 2 point wide vertical pinstripe pattern. alternating two points white, two points black. We then switch to 3 points wide for the next inch, and then 4 points wide, etc. This trend continues for the entire length of the page (or for 12 inches of run length in the case of a printer using continuous roll stationery). After printing the test pattern the page is ejected (or the test pattern is rolled clear of the printer enclosure, in the case of continuous roll printers). Note that it is an acceptable solution to use the smallest marks that the language provides, rather than working at native printer resolution, where this is not achievable from within the language. Optionally, on systems where the printer resolution cannot be determined, it is permissible to prompt the user for printer resolution, and to calculate point size based on user input, enabling fractional point sizes to be used.

Let's start with the solution:

Step by Step solution about How to resolve the algorithm Pinstripe/Printer step by step in the Tcl programming language

Source code in the tcl programming language

package require Tk
# Allocate a temporary drawing surface
canvas .c
# Draw the output we want 
for {set y 0;set dx 1} {$y < 11*72} {incr y 72;incr dx} {
    for {set x 0;set c 0} {$x < 8.5*72} {incr x $dx;set c [expr {!$c}]} {
	.c create rectangle $x $y [expr {$x+$dx+1}] [expr {$y+73}] \
	    -fill [lindex {black white} $c] -outline {}
    }
}
# Send postscript to default printer, scaled 1 pixel -> 1 point
exec lp - << [.c postscript -height $y -width $x -pageheight $y -pagewidth $x]
# Explicit exit; no GUI desired
exit


  

You may also check:How to resolve the algorithm Towers of Hanoi step by step in the C++ programming language
You may also check:How to resolve the algorithm Introspection step by step in the C programming language
You may also check:How to resolve the algorithm Lah numbers step by step in the FreeBASIC programming language
You may also check:How to resolve the algorithm Primality by trial division step by step in the Forth programming language
You may also check:How to resolve the algorithm Search a list of records step by step in the 11l programming language