Skip to content

Instantly share code, notes, and snippets.

@jef-sure
Created May 25, 2017 15:19
Show Gist options
  • Save jef-sure/eca1aaa15a191443b4b939bbbb97c6e1 to your computer and use it in GitHub Desktop.
Save jef-sure/eca1aaa15a191443b4b939bbbb97c6e1 to your computer and use it in GitHub Desktop.
#! /usr/bin/wish
package require Tk
tk scaling [expr {240/72}]
canvas .cv -width 180m -height 270m -bg white
pack .cv
set font {Arial 24}
set l .label0
label $l -bd 0 -padx 0 -pady 0 -highlightthickness 0 -font $font -text "0"
set zero_width [expr { 1.3 * [winfo reqwidth $l]}]
set zero_height [expr { 1.4 * [winfo reqheight $l]}]
destroy $l
set page_width [.cv cget -width]
set page_height [.cv cget -height]
proc one_equation {x y} {
global font
global zero_width
global zero_height
if { floor(2 * rand()) == 0 } {
set sign "+"
} else {
set sign "-"
}
if { $sign == "-" } {
set a [expr {1 + int(20 * rand ())}]
set b [expr {1 + int(($a - 1) * rand())}]
} else {
set a [expr {int(20 * rand ())}]
set b [expr {1 + int( (19 - $a) * rand())}]
}
set textid [.cv create text $x $y -text "$a $sign $b" -font $font -anchor nw]
set bb [.cv bbox $textid]
set bw [expr {[lindex $bb 2] - [lindex $bb 0]}]
set iw [expr {7 * $zero_width}]
set nx [expr {[lindex $bb 0] + ($iw - $bw) / 2}]
.cv coords $textid $nx $y
.cv create text [expr {$x + 6 * $zero_width}] $y -text "=" -font $font -anchor nw
}
for {set col 0} {$col < $page_width} {set col [expr {$col + $page_width/3}]} {
for {set row [expr {$zero_height/2}]} {$row < $page_height - $zero_height / 2} {set row [expr {$row + $zero_height}]} {
one_equation $col $row
}
}
update
.cv postscript -file "m.ps"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment