chiark / gitweb /
quacks-ingredients: Base vs Witches vs All, add them
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Sat, 28 Mar 2020 21:54:41 +0000 (21:54 +0000)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Sat, 28 Mar 2020 21:54:41 +0000 (21:54 +0000)
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
quacks-ingredients-counts.scad
quacks-ingredients-update-levels

index 3b0e28f29270b634d2e7feaf0dfc204b602d9482..7bd679f10aedc6798d2f663ec8be81651d839d9e 100644 (file)
@@ -623,3 +623,745 @@ module Base_Yellow(){ ////toplevel
 }
 // Base  total_count=240   total_real_count=216
 // Base  max_rowsz=7       max_nrows=6
+module All_Black(){ ////toplevel
+// All  Black       total=26  rowsz=6  nrows=5
+  union(){
+    Frame($phase, token_pitch * [ 6 + 1.00, 5 + 0.50 ]);
+    $nspots = 1;
+    translate(token_pitch * [  -2.5,  -2.0 ]) Token_L();
+    translate(token_pitch * [  -2.5,  -1.0 ]) Token_L();
+    translate(token_pitch * [  -2.5,   0.0 ]) Token_L();
+    translate(token_pitch * [  -2.5,   1.0 ]) Token_L();
+    translate(token_pitch * [  -2.5,   2.0 ]) Token_L();
+    translate(token_pitch * [  -1.5,  -2.0 ]) Token_L();
+    translate(token_pitch * [  -1.5,  -1.0 ]) Token_L();
+    translate(token_pitch * [  -1.5,   0.0 ]) Token_L();
+    translate(token_pitch * [  -1.5,   1.0 ]) Token_L();
+    translate(token_pitch * [  -1.5,   2.0 ]) Token_L();
+    translate(token_pitch * [  -0.5,  -2.0 ]) Token_L();
+    translate(token_pitch * [  -0.5,  -1.0 ]) Token_L();
+    translate(token_pitch * [  -0.5,   0.0 ]) Token_L();
+    translate(token_pitch * [  -0.5,   1.0 ]) Token_L();
+    translate(token_pitch * [  -0.5,   2.0 ]) Token_L();
+    translate(token_pitch * [   0.5,  -2.0 ]) Token_L();
+    translate(token_pitch * [   0.5,  -1.0 ]) Token_L();
+    translate(token_pitch * [   0.5,   0.0 ]) Token_L();
+    translate(token_pitch * [   0.5,   1.0 ]) Token_L();
+    translate(token_pitch * [   0.5,   2.0 ]) Token_L();
+    translate(token_pitch * [   1.5,  -2.0 ]) Token_L();
+    translate(token_pitch * [   1.5,  -1.0 ]) Token_L();
+    translate(token_pitch * [   1.5,   0.0 ]) Token_L();
+    translate(token_pitch * [   1.5,   1.0 ]) Token_L();
+    translate(token_pitch * [   1.5,   2.0 ]) Token_L();
+    translate(token_pitch * [   2.5,  -2.0 ]) Token_L();
+  };
+  union(){
+    Frame($phase, token_pitch * [ 6 + 1.00, 5 + 0.50 ]);
+    $nspots = 2;
+  };
+  union(){
+    Frame($phase, token_pitch * [ 6 + 1.00, 5 + 0.50 ]);
+    $nspots = 3;
+  };
+  union(){
+    Frame($phase, token_pitch * [ 6 + 1.00, 5 + 0.50 ]);
+    $nspots = 4;
+  };
+}
+module All_Blue(){ ////toplevel
+// All  Blue        total=52  rowsz=8  nrows=7
+  union(){
+    Frame($phase, token_pitch * [ 8 + 1.00, 7 + 0.50 ]);
+    $nspots = 1;
+    translate(token_pitch * [  -3.5,  -3.0 ]) Token_L();
+    translate(token_pitch * [  -3.5,  -2.0 ]) Token_L();
+    translate(token_pitch * [  -3.5,  -1.0 ]) Token_L();
+    translate(token_pitch * [  -3.5,   0.0 ]) Token_L();
+    translate(token_pitch * [  -3.5,   1.0 ]) Token_L();
+    translate(token_pitch * [  -3.5,   2.0 ]) Token_L();
+    translate(token_pitch * [  -3.5,   3.0 ]) Token_L();
+    translate(token_pitch * [  -2.5,  -3.0 ]) Token_L();
+    translate(token_pitch * [  -2.5,  -2.0 ]) Token_L();
+    translate(token_pitch * [  -2.5,  -1.0 ]) Token_L();
+    translate(token_pitch * [  -2.5,   0.0 ]) Token_L();
+    translate(token_pitch * [  -2.5,   1.0 ]) Token_L();
+    translate(token_pitch * [  -2.5,   2.0 ]) Token_L();
+    translate(token_pitch * [  -2.5,   3.0 ]) Token_L();
+    translate(token_pitch * [  -1.5,  -3.0 ]) Token_L();
+    translate(token_pitch * [  -1.5,  -2.0 ]) Token_L();
+    translate(token_pitch * [  -1.5,  -1.0 ]) Token_L();
+    translate(token_pitch * [  -1.5,   0.0 ]) Token_L();
+    translate(token_pitch * [  -1.5,   1.0 ]) Token_L();
+    translate(token_pitch * [  -1.5,   2.0 ]) Token_L();
+    translate(token_pitch * [  -1.5,   3.0 ]) Token_L();
+    translate(token_pitch * [  -0.5,  -3.0 ]) Token_L();
+  };
+  union(){
+    Frame($phase, token_pitch * [ 8 + 1.00, 7 + 0.50 ]);
+    $nspots = 2;
+    translate(token_pitch * [  -0.5,  -2.0 ]) Token_L();
+    translate(token_pitch * [  -0.5,  -1.0 ]) Token_L();
+    translate(token_pitch * [  -0.5,   0.0 ]) Token_L();
+    translate(token_pitch * [  -0.5,   1.0 ]) Token_L();
+    translate(token_pitch * [  -0.5,   2.0 ]) Token_L();
+    translate(token_pitch * [  -0.5,   3.0 ]) Token_L();
+    translate(token_pitch * [   0.5,  -3.0 ]) Token_L();
+    translate(token_pitch * [   0.5,  -2.0 ]) Token_L();
+    translate(token_pitch * [   0.5,  -1.0 ]) Token_L();
+    translate(token_pitch * [   0.5,   0.0 ]) Token_L();
+    translate(token_pitch * [   0.5,   1.0 ]) Token_L();
+    translate(token_pitch * [   0.5,   2.0 ]) Token_L();
+    translate(token_pitch * [   0.5,   3.0 ]) Token_L();
+    translate(token_pitch * [   1.5,  -3.0 ]) Token_L();
+    translate(token_pitch * [   1.5,  -2.0 ]) Token_L();
+  };
+  union(){
+    Frame($phase, token_pitch * [ 8 + 1.00, 7 + 0.50 ]);
+    $nspots = 3;
+  };
+  union(){
+    Frame($phase, token_pitch * [ 8 + 1.00, 7 + 0.50 ]);
+    $nspots = 4;
+    translate(token_pitch * [   1.5,  -1.0 ]) Token_L();
+    translate(token_pitch * [   1.5,   0.0 ]) Token_L();
+    translate(token_pitch * [   1.5,   1.0 ]) Token_L();
+    translate(token_pitch * [   1.5,   2.0 ]) Token_L();
+    translate(token_pitch * [   1.5,   3.0 ]) Token_L();
+    translate(token_pitch * [   2.5,  -3.0 ]) Token_L();
+    translate(token_pitch * [   2.5,  -2.0 ]) Token_L();
+    translate(token_pitch * [   2.5,  -1.0 ]) Token_L();
+    translate(token_pitch * [   2.5,   0.0 ]) Token_L();
+    translate(token_pitch * [   2.5,   1.0 ]) Token_L();
+    translate(token_pitch * [   2.5,   2.0 ]) Token_L();
+    translate(token_pitch * [   2.5,   3.0 ]) Token_L();
+    translate(token_pitch * [   3.5,  -3.0 ]) Token_L();
+    translate(token_pitch * [   3.5,  -2.0 ]) Token_L();
+    translate(token_pitch * [   3.5,  -1.0 ]) Token_L();
+  };
+}
+module All_Green(){ ////toplevel
+// All  Green       total=58  rowsz=8  nrows=8
+  union(){
+    Frame($phase, token_pitch * [ 8 + 1.00, 8 + 0.50 ]);
+    $nspots = 1;
+    translate(token_pitch * [  -3.5,  -3.5 ]) Token_L();
+    translate(token_pitch * [  -3.5,  -2.5 ]) Token_L();
+    translate(token_pitch * [  -3.5,  -1.5 ]) Token_L();
+    translate(token_pitch * [  -3.5,  -0.5 ]) Token_L();
+    translate(token_pitch * [  -3.5,   0.5 ]) Token_L();
+    translate(token_pitch * [  -3.5,   1.5 ]) Token_L();
+    translate(token_pitch * [  -3.5,   2.5 ]) Token_L();
+    translate(token_pitch * [  -3.5,   3.5 ]) Token_L();
+    translate(token_pitch * [  -2.5,  -3.5 ]) Token_L();
+    translate(token_pitch * [  -2.5,  -2.5 ]) Token_L();
+    translate(token_pitch * [  -2.5,  -1.5 ]) Token_L();
+    translate(token_pitch * [  -2.5,  -0.5 ]) Token_L();
+    translate(token_pitch * [  -2.5,   0.5 ]) Token_L();
+    translate(token_pitch * [  -2.5,   1.5 ]) Token_L();
+    translate(token_pitch * [  -2.5,   2.5 ]) Token_L();
+    translate(token_pitch * [  -2.5,   3.5 ]) Token_L();
+    translate(token_pitch * [  -1.5,  -3.5 ]) Token_L();
+    translate(token_pitch * [  -1.5,  -2.5 ]) Token_L();
+    translate(token_pitch * [  -1.5,  -1.5 ]) Token_L();
+    translate(token_pitch * [  -1.5,  -0.5 ]) Token_L();
+    translate(token_pitch * [  -1.5,   0.5 ]) Token_L();
+    translate(token_pitch * [  -1.5,   1.5 ]) Token_L();
+    translate(token_pitch * [  -1.5,   2.5 ]) Token_L();
+    translate(token_pitch * [  -1.5,   3.5 ]) Token_L();
+    translate(token_pitch * [  -0.5,  -3.5 ]) Token_L();
+  };
+  union(){
+    Frame($phase, token_pitch * [ 8 + 1.00, 8 + 0.50 ]);
+    $nspots = 2;
+    translate(token_pitch * [  -0.5,  -2.5 ]) Token_L();
+    translate(token_pitch * [  -0.5,  -1.5 ]) Token_L();
+    translate(token_pitch * [  -0.5,  -0.5 ]) Token_L();
+    translate(token_pitch * [  -0.5,   0.5 ]) Token_L();
+    translate(token_pitch * [  -0.5,   1.5 ]) Token_L();
+    translate(token_pitch * [  -0.5,   2.5 ]) Token_L();
+    translate(token_pitch * [  -0.5,   3.5 ]) Token_L();
+    translate(token_pitch * [   0.5,  -3.5 ]) Token_L();
+    translate(token_pitch * [   0.5,  -2.5 ]) Token_L();
+    translate(token_pitch * [   0.5,  -1.5 ]) Token_L();
+    translate(token_pitch * [   0.5,  -0.5 ]) Token_L();
+    translate(token_pitch * [   0.5,   0.5 ]) Token_L();
+    translate(token_pitch * [   0.5,   1.5 ]) Token_L();
+    translate(token_pitch * [   0.5,   2.5 ]) Token_L();
+    translate(token_pitch * [   0.5,   3.5 ]) Token_L();
+  };
+  union(){
+    Frame($phase, token_pitch * [ 8 + 1.00, 8 + 0.50 ]);
+    $nspots = 3;
+  };
+  union(){
+    Frame($phase, token_pitch * [ 8 + 1.00, 8 + 0.50 ]);
+    $nspots = 4;
+    translate(token_pitch * [   1.5,  -3.5 ]) Token_L();
+    translate(token_pitch * [   1.5,  -2.5 ]) Token_L();
+    translate(token_pitch * [   1.5,  -1.5 ]) Token_L();
+    translate(token_pitch * [   1.5,  -0.5 ]) Token_L();
+    translate(token_pitch * [   1.5,   0.5 ]) Token_L();
+    translate(token_pitch * [   1.5,   1.5 ]) Token_L();
+    translate(token_pitch * [   1.5,   2.5 ]) Token_L();
+    translate(token_pitch * [   1.5,   3.5 ]) Token_L();
+    translate(token_pitch * [   2.5,  -3.5 ]) Token_L();
+    translate(token_pitch * [   2.5,  -2.5 ]) Token_L();
+    translate(token_pitch * [   2.5,  -1.5 ]) Token_L();
+    translate(token_pitch * [   2.5,  -0.5 ]) Token_L();
+    translate(token_pitch * [   2.5,   0.5 ]) Token_L();
+    translate(token_pitch * [   2.5,   1.5 ]) Token_L();
+    translate(token_pitch * [   2.5,   2.5 ]) Token_L();
+    translate(token_pitch * [   2.5,   3.5 ]) Token_L();
+    translate(token_pitch * [   3.5,  -3.5 ]) Token_L();
+    translate(token_pitch * [   3.5,  -2.5 ]) Token_L();
+  };
+}
+module All_Orange(){ ////toplevel
+// All  Orange      total=32  rowsz=6  nrows=6
+  union(){
+    Frame($phase, token_pitch * [ 6 + 1.00, 6 + 0.50 ]);
+    $nspots = 1;
+    translate(token_pitch * [  -2.5,  -2.5 ]) Token_L();
+    translate(token_pitch * [  -2.5,  -1.5 ]) Token_L();
+    translate(token_pitch * [  -2.5,  -0.5 ]) Token_L();
+    translate(token_pitch * [  -2.5,   0.5 ]) Token_L();
+    translate(token_pitch * [  -2.5,   1.5 ]) Token_L();
+    translate(token_pitch * [  -2.5,   2.5 ]) Token_L();
+    translate(token_pitch * [  -1.5,  -2.5 ]) Token_L();
+    translate(token_pitch * [  -1.5,  -1.5 ]) Token_L();
+    translate(token_pitch * [  -1.5,  -0.5 ]) Token_L();
+    translate(token_pitch * [  -1.5,   0.5 ]) Token_L();
+    translate(token_pitch * [  -1.5,   1.5 ]) Token_L();
+    translate(token_pitch * [  -1.5,   2.5 ]) Token_L();
+    translate(token_pitch * [  -0.5,  -2.5 ]) Token_L();
+    translate(token_pitch * [  -0.5,  -1.5 ]) Token_L();
+    translate(token_pitch * [  -0.5,  -0.5 ]) Token_L();
+    translate(token_pitch * [  -0.5,   0.5 ]) Token_L();
+    translate(token_pitch * [  -0.5,   1.5 ]) Token_L();
+    translate(token_pitch * [  -0.5,   2.5 ]) Token_L();
+    translate(token_pitch * [   0.5,  -2.5 ]) Token_L();
+    translate(token_pitch * [   0.5,  -1.5 ]) Token_L();
+    translate(token_pitch * [   0.5,  -0.5 ]) Token_L();
+    translate(token_pitch * [   0.5,   0.5 ]) Token_L();
+    translate(token_pitch * [   0.5,   1.5 ]) Token_L();
+    translate(token_pitch * [   0.5,   2.5 ]) Token_L();
+    translate(token_pitch * [   1.5,  -2.5 ]) Token_L();
+    translate(token_pitch * [   1.5,  -1.5 ]) Token_L();
+    translate(token_pitch * [   1.5,  -0.5 ]) Token_L();
+    translate(token_pitch * [   1.5,   0.5 ]) Token_L();
+    translate(token_pitch * [   1.5,   1.5 ]) Token_L();
+    translate(token_pitch * [   1.5,   2.5 ]) Token_L();
+    translate(token_pitch * [   2.5,  -2.5 ]) Token_L();
+    translate(token_pitch * [   2.5,  -1.5 ]) Token_L();
+  };
+  union(){
+    Frame($phase, token_pitch * [ 6 + 1.00, 6 + 0.50 ]);
+    $nspots = 2;
+  };
+  union(){
+    Frame($phase, token_pitch * [ 6 + 1.00, 6 + 0.50 ]);
+    $nspots = 3;
+  };
+  union(){
+    Frame($phase, token_pitch * [ 6 + 1.00, 6 + 0.50 ]);
+    $nspots = 4;
+  };
+}
+module All_Purple(){ ////toplevel
+// All  Purple      total=23  rowsz=5  nrows=5
+  union(){
+    Frame($phase, token_pitch * [ 5 + 1.00, 5 + 0.50 ]);
+    $nspots = 1;
+    translate(token_pitch * [  -2.0,  -2.0 ]) Token_L();
+    translate(token_pitch * [  -2.0,  -1.0 ]) Token_L();
+    translate(token_pitch * [  -2.0,   0.0 ]) Token_L();
+    translate(token_pitch * [  -2.0,   1.0 ]) Token_L();
+    translate(token_pitch * [  -2.0,   2.0 ]) Token_L();
+    translate(token_pitch * [  -1.0,  -2.0 ]) Token_L();
+    translate(token_pitch * [  -1.0,  -1.0 ]) Token_L();
+    translate(token_pitch * [  -1.0,   0.0 ]) Token_L();
+    translate(token_pitch * [  -1.0,   1.0 ]) Token_L();
+    translate(token_pitch * [  -1.0,   2.0 ]) Token_L();
+    translate(token_pitch * [   0.0,  -2.0 ]) Token_L();
+    translate(token_pitch * [   0.0,  -1.0 ]) Token_L();
+    translate(token_pitch * [   0.0,   0.0 ]) Token_L();
+    translate(token_pitch * [   0.0,   1.0 ]) Token_L();
+    translate(token_pitch * [   0.0,   2.0 ]) Token_L();
+    translate(token_pitch * [   1.0,  -2.0 ]) Token_L();
+    translate(token_pitch * [   1.0,  -1.0 ]) Token_L();
+    translate(token_pitch * [   1.0,   0.0 ]) Token_L();
+    translate(token_pitch * [   1.0,   1.0 ]) Token_L();
+    translate(token_pitch * [   1.0,   2.0 ]) Token_L();
+    translate(token_pitch * [   2.0,  -2.0 ]) Token_L();
+    translate(token_pitch * [   2.0,  -1.0 ]) Token_L();
+    translate(token_pitch * [   2.0,   0.0 ]) Token_L();
+  };
+  union(){
+    Frame($phase, token_pitch * [ 5 + 1.00, 5 + 0.50 ]);
+    $nspots = 2;
+  };
+  union(){
+    Frame($phase, token_pitch * [ 5 + 1.00, 5 + 0.50 ]);
+    $nspots = 3;
+  };
+  union(){
+    Frame($phase, token_pitch * [ 5 + 1.00, 5 + 0.50 ]);
+    $nspots = 4;
+  };
+}
+module All_Red(){ ////toplevel
+// All  Red         total=46  rowsz=7  nrows=7
+  union(){
+    Frame($phase, token_pitch * [ 7 + 1.00, 7 + 0.50 ]);
+    $nspots = 1;
+    translate(token_pitch * [  -3.0,  -3.0 ]) Token_L();
+    translate(token_pitch * [  -3.0,  -2.0 ]) Token_L();
+    translate(token_pitch * [  -3.0,  -1.0 ]) Token_L();
+    translate(token_pitch * [  -3.0,   0.0 ]) Token_L();
+    translate(token_pitch * [  -3.0,   1.0 ]) Token_L();
+    translate(token_pitch * [  -3.0,   2.0 ]) Token_L();
+    translate(token_pitch * [  -3.0,   3.0 ]) Token_L();
+    translate(token_pitch * [  -2.0,  -3.0 ]) Token_L();
+    translate(token_pitch * [  -2.0,  -2.0 ]) Token_L();
+    translate(token_pitch * [  -2.0,  -1.0 ]) Token_L();
+    translate(token_pitch * [  -2.0,   0.0 ]) Token_L();
+    translate(token_pitch * [  -2.0,   1.0 ]) Token_L();
+    translate(token_pitch * [  -2.0,   2.0 ]) Token_L();
+    translate(token_pitch * [  -2.0,   3.0 ]) Token_L();
+    translate(token_pitch * [  -1.0,  -3.0 ]) Token_L();
+    translate(token_pitch * [  -1.0,  -2.0 ]) Token_L();
+    translate(token_pitch * [  -1.0,  -1.0 ]) Token_L();
+    translate(token_pitch * [  -1.0,   0.0 ]) Token_L();
+  };
+  union(){
+    Frame($phase, token_pitch * [ 7 + 1.00, 7 + 0.50 ]);
+    $nspots = 2;
+    translate(token_pitch * [  -1.0,   1.0 ]) Token_L();
+    translate(token_pitch * [  -1.0,   2.0 ]) Token_L();
+    translate(token_pitch * [  -1.0,   3.0 ]) Token_L();
+    translate(token_pitch * [   0.0,  -3.0 ]) Token_L();
+    translate(token_pitch * [   0.0,  -2.0 ]) Token_L();
+    translate(token_pitch * [   0.0,  -1.0 ]) Token_L();
+    translate(token_pitch * [   0.0,   0.0 ]) Token_L();
+    translate(token_pitch * [   0.0,   1.0 ]) Token_L();
+    translate(token_pitch * [   0.0,   2.0 ]) Token_L();
+    translate(token_pitch * [   0.0,   3.0 ]) Token_L();
+    translate(token_pitch * [   1.0,  -3.0 ]) Token_L();
+    translate(token_pitch * [   1.0,  -2.0 ]) Token_L();
+    translate(token_pitch * [   1.0,  -1.0 ]) Token_L();
+  };
+  union(){
+    Frame($phase, token_pitch * [ 7 + 1.00, 7 + 0.50 ]);
+    $nspots = 3;
+  };
+  union(){
+    Frame($phase, token_pitch * [ 7 + 1.00, 7 + 0.50 ]);
+    $nspots = 4;
+    translate(token_pitch * [   1.0,   0.0 ]) Token_L();
+    translate(token_pitch * [   1.0,   1.0 ]) Token_L();
+    translate(token_pitch * [   1.0,   2.0 ]) Token_L();
+    translate(token_pitch * [   1.0,   3.0 ]) Token_L();
+    translate(token_pitch * [   2.0,  -3.0 ]) Token_L();
+    translate(token_pitch * [   2.0,  -2.0 ]) Token_L();
+    translate(token_pitch * [   2.0,  -1.0 ]) Token_L();
+    translate(token_pitch * [   2.0,   0.0 ]) Token_L();
+    translate(token_pitch * [   2.0,   1.0 ]) Token_L();
+    translate(token_pitch * [   2.0,   2.0 ]) Token_L();
+    translate(token_pitch * [   2.0,   3.0 ]) Token_L();
+    translate(token_pitch * [   3.0,  -3.0 ]) Token_L();
+    translate(token_pitch * [   3.0,  -2.0 ]) Token_L();
+    translate(token_pitch * [   3.0,  -1.0 ]) Token_L();
+    translate(token_pitch * [   3.0,   0.0 ]) Token_L();
+  };
+}
+module All_White(){ ////toplevel
+// All  White       total=43  rowsz=7  nrows=7
+  union(){
+    Frame($phase, token_pitch * [ 7 + 1.00, 7 + 0.50 ]);
+    $nspots = 1;
+    translate(token_pitch * [  -3.0,  -3.0 ]) Token_L();
+    translate(token_pitch * [  -3.0,  -2.0 ]) Token_L();
+    translate(token_pitch * [  -3.0,  -1.0 ]) Token_L();
+    translate(token_pitch * [  -3.0,   0.0 ]) Token_L();
+    translate(token_pitch * [  -3.0,   1.0 ]) Token_L();
+    translate(token_pitch * [  -3.0,   2.0 ]) Token_L();
+    translate(token_pitch * [  -3.0,   3.0 ]) Token_L();
+    translate(token_pitch * [  -2.0,  -3.0 ]) Token_L();
+    translate(token_pitch * [  -2.0,  -2.0 ]) Token_L();
+    translate(token_pitch * [  -2.0,  -1.0 ]) Token_L();
+    translate(token_pitch * [  -2.0,   0.0 ]) Token_L();
+    translate(token_pitch * [  -2.0,   1.0 ]) Token_L();
+    translate(token_pitch * [  -2.0,   2.0 ]) Token_L();
+    translate(token_pitch * [  -2.0,   3.0 ]) Token_L();
+    translate(token_pitch * [  -1.0,  -3.0 ]) Token_L();
+    translate(token_pitch * [  -1.0,  -2.0 ]) Token_L();
+    translate(token_pitch * [  -1.0,  -1.0 ]) Token_L();
+    translate(token_pitch * [  -1.0,   0.0 ]) Token_L();
+    translate(token_pitch * [  -1.0,   1.0 ]) Token_L();
+    translate(token_pitch * [  -1.0,   2.0 ]) Token_L();
+    translate(token_pitch * [  -1.0,   3.0 ]) Token_L();
+    translate(token_pitch * [   0.0,  -3.0 ]) Token_L();
+    translate(token_pitch * [   0.0,  -2.0 ]) Token_L();
+    translate(token_pitch * [   0.0,  -1.0 ]) Token_L();
+    translate(token_pitch * [   0.0,   0.0 ]) Token_L();
+    translate(token_pitch * [   0.0,   1.0 ]) Token_L();
+  };
+  union(){
+    Frame($phase, token_pitch * [ 7 + 1.00, 7 + 0.50 ]);
+    $nspots = 2;
+    translate(token_pitch * [   0.0,   2.0 ]) Token_L();
+    translate(token_pitch * [   0.0,   3.0 ]) Token_L();
+    translate(token_pitch * [   1.0,  -3.0 ]) Token_L();
+    translate(token_pitch * [   1.0,  -2.0 ]) Token_L();
+    translate(token_pitch * [   1.0,  -1.0 ]) Token_L();
+    translate(token_pitch * [   1.0,   0.0 ]) Token_L();
+    translate(token_pitch * [   1.0,   1.0 ]) Token_L();
+    translate(token_pitch * [   1.0,   2.0 ]) Token_L();
+    translate(token_pitch * [   1.0,   3.0 ]) Token_L();
+    translate(token_pitch * [   2.0,  -3.0 ]) Token_L();
+    translate(token_pitch * [   2.0,  -2.0 ]) Token_L();
+  };
+  union(){
+    Frame($phase, token_pitch * [ 7 + 1.00, 7 + 0.50 ]);
+    $nspots = 3;
+    translate(token_pitch * [   2.0,  -1.0 ]) Token_L();
+    translate(token_pitch * [   2.0,   0.0 ]) Token_L();
+    translate(token_pitch * [   2.0,   1.0 ]) Token_L();
+    translate(token_pitch * [   2.0,   2.0 ]) Token_L();
+    translate(token_pitch * [   2.0,   3.0 ]) Token_L();
+    translate(token_pitch * [   3.0,  -3.0 ]) Token_L();
+  };
+  union(){
+    Frame($phase, token_pitch * [ 7 + 1.00, 7 + 0.50 ]);
+    $nspots = 4;
+  };
+}
+module All_Yellow(){ ////toplevel
+// All  Yellow      total=45  rowsz=7  nrows=7
+  union(){
+    Frame($phase, token_pitch * [ 7 + 1.00, 7 + 0.50 ]);
+    $nspots = 1;
+    translate(token_pitch * [  -3.0,  -3.0 ]) Token_L();
+    translate(token_pitch * [  -3.0,  -2.0 ]) Token_L();
+    translate(token_pitch * [  -3.0,  -1.0 ]) Token_L();
+    translate(token_pitch * [  -3.0,   0.0 ]) Token_L();
+    translate(token_pitch * [  -3.0,   1.0 ]) Token_L();
+    translate(token_pitch * [  -3.0,   2.0 ]) Token_L();
+    translate(token_pitch * [  -3.0,   3.0 ]) Token_L();
+    translate(token_pitch * [  -2.0,  -3.0 ]) Token_L();
+    translate(token_pitch * [  -2.0,  -2.0 ]) Token_L();
+    translate(token_pitch * [  -2.0,  -1.0 ]) Token_L();
+    translate(token_pitch * [  -2.0,   0.0 ]) Token_L();
+    translate(token_pitch * [  -2.0,   1.0 ]) Token_L();
+    translate(token_pitch * [  -2.0,   2.0 ]) Token_L();
+    translate(token_pitch * [  -2.0,   3.0 ]) Token_L();
+    translate(token_pitch * [  -1.0,  -3.0 ]) Token_L();
+    translate(token_pitch * [  -1.0,  -2.0 ]) Token_L();
+    translate(token_pitch * [  -1.0,  -1.0 ]) Token_L();
+    translate(token_pitch * [  -1.0,   0.0 ]) Token_L();
+    translate(token_pitch * [  -1.0,   1.0 ]) Token_L();
+  };
+  union(){
+    Frame($phase, token_pitch * [ 7 + 1.00, 7 + 0.50 ]);
+    $nspots = 2;
+    translate(token_pitch * [  -1.0,   2.0 ]) Token_L();
+    translate(token_pitch * [  -1.0,   3.0 ]) Token_L();
+    translate(token_pitch * [   0.0,  -3.0 ]) Token_L();
+    translate(token_pitch * [   0.0,  -2.0 ]) Token_L();
+    translate(token_pitch * [   0.0,  -1.0 ]) Token_L();
+    translate(token_pitch * [   0.0,   0.0 ]) Token_L();
+    translate(token_pitch * [   0.0,   1.0 ]) Token_L();
+    translate(token_pitch * [   0.0,   2.0 ]) Token_L();
+    translate(token_pitch * [   0.0,   3.0 ]) Token_L();
+    translate(token_pitch * [   1.0,  -3.0 ]) Token_L();
+    translate(token_pitch * [   1.0,  -2.0 ]) Token_L();
+  };
+  union(){
+    Frame($phase, token_pitch * [ 7 + 1.00, 7 + 0.50 ]);
+    $nspots = 3;
+  };
+  union(){
+    Frame($phase, token_pitch * [ 7 + 1.00, 7 + 0.50 ]);
+    $nspots = 4;
+    translate(token_pitch * [   1.0,  -1.0 ]) Token_L();
+    translate(token_pitch * [   1.0,   0.0 ]) Token_L();
+    translate(token_pitch * [   1.0,   1.0 ]) Token_L();
+    translate(token_pitch * [   1.0,   2.0 ]) Token_L();
+    translate(token_pitch * [   1.0,   3.0 ]) Token_L();
+    translate(token_pitch * [   2.0,  -3.0 ]) Token_L();
+    translate(token_pitch * [   2.0,  -2.0 ]) Token_L();
+    translate(token_pitch * [   2.0,  -1.0 ]) Token_L();
+    translate(token_pitch * [   2.0,   0.0 ]) Token_L();
+    translate(token_pitch * [   2.0,   1.0 ]) Token_L();
+    translate(token_pitch * [   2.0,   2.0 ]) Token_L();
+    translate(token_pitch * [   2.0,   3.0 ]) Token_L();
+    translate(token_pitch * [   3.0,  -3.0 ]) Token_L();
+    translate(token_pitch * [   3.0,  -2.0 ]) Token_L();
+    translate(token_pitch * [   3.0,  -1.0 ]) Token_L();
+  };
+}
+// All  total_count=325   total_real_count=325
+// All  max_rowsz=8       max_nrows=8
+module Witches_Black(){ ////toplevel
+// Witches  Black       total= 8  rowsz=3  nrows=3
+  union(){
+    Frame($phase, token_pitch * [ 3 + 1.00, 3 + 0.50 ]);
+    $nspots = 1;
+    translate(token_pitch * [  -1.0,  -1.0 ]) Token_L();
+    translate(token_pitch * [  -1.0,   0.0 ]) Token_L();
+    translate(token_pitch * [  -1.0,   1.0 ]) Token_L();
+    translate(token_pitch * [   0.0,  -1.0 ]) Token_L();
+    translate(token_pitch * [   0.0,   0.0 ]) Token_L();
+    translate(token_pitch * [   0.0,   1.0 ]) Token_L();
+    translate(token_pitch * [   1.0,  -1.0 ]) Token_L();
+    translate(token_pitch * [   1.0,   0.0 ]) Token_L();
+  };
+  union(){
+    Frame($phase, token_pitch * [ 3 + 1.00, 3 + 0.50 ]);
+    $nspots = 2;
+  };
+  union(){
+    Frame($phase, token_pitch * [ 3 + 1.00, 3 + 0.50 ]);
+    $nspots = 3;
+  };
+  union(){
+    Frame($phase, token_pitch * [ 3 + 1.00, 3 + 0.50 ]);
+    $nspots = 4;
+  };
+}
+module Witches_Blue(){ ////toplevel
+// Witches  Blue        total=18  rowsz=5  nrows=4
+  union(){
+    Frame($phase, token_pitch * [ 5 + 1.00, 4 + 0.50 ]);
+    $nspots = 1;
+    translate(token_pitch * [  -2.0,  -1.5 ]) Token_L();
+    translate(token_pitch * [  -2.0,  -0.5 ]) Token_L();
+    translate(token_pitch * [  -2.0,   0.5 ]) Token_L();
+    translate(token_pitch * [  -2.0,   1.5 ]) Token_L();
+    translate(token_pitch * [  -1.0,  -1.5 ]) Token_L();
+    translate(token_pitch * [  -1.0,  -0.5 ]) Token_L();
+    translate(token_pitch * [  -1.0,   0.5 ]) Token_L();
+    translate(token_pitch * [  -1.0,   1.5 ]) Token_L();
+  };
+  union(){
+    Frame($phase, token_pitch * [ 5 + 1.00, 4 + 0.50 ]);
+    $nspots = 2;
+    translate(token_pitch * [   0.0,  -1.5 ]) Token_L();
+    translate(token_pitch * [   0.0,  -0.5 ]) Token_L();
+    translate(token_pitch * [   0.0,   0.5 ]) Token_L();
+    translate(token_pitch * [   0.0,   1.5 ]) Token_L();
+    translate(token_pitch * [   1.0,  -1.5 ]) Token_L();
+  };
+  union(){
+    Frame($phase, token_pitch * [ 5 + 1.00, 4 + 0.50 ]);
+    $nspots = 3;
+  };
+  union(){
+    Frame($phase, token_pitch * [ 5 + 1.00, 4 + 0.50 ]);
+    $nspots = 4;
+    translate(token_pitch * [   1.0,  -0.5 ]) Token_L();
+    translate(token_pitch * [   1.0,   0.5 ]) Token_L();
+    translate(token_pitch * [   1.0,   1.5 ]) Token_L();
+    translate(token_pitch * [   2.0,  -1.5 ]) Token_L();
+    translate(token_pitch * [   2.0,  -0.5 ]) Token_L();
+  };
+}
+module Witches_Green(){ ////toplevel
+// Witches  Green       total=20  rowsz=5  nrows=4
+  union(){
+    Frame($phase, token_pitch * [ 5 + 1.00, 4 + 0.50 ]);
+    $nspots = 1;
+    translate(token_pitch * [  -2.0,  -1.5 ]) Token_L();
+    translate(token_pitch * [  -2.0,  -0.5 ]) Token_L();
+    translate(token_pitch * [  -2.0,   0.5 ]) Token_L();
+    translate(token_pitch * [  -2.0,   1.5 ]) Token_L();
+    translate(token_pitch * [  -1.0,  -1.5 ]) Token_L();
+    translate(token_pitch * [  -1.0,  -0.5 ]) Token_L();
+    translate(token_pitch * [  -1.0,   0.5 ]) Token_L();
+    translate(token_pitch * [  -1.0,   1.5 ]) Token_L();
+    translate(token_pitch * [   0.0,  -1.5 ]) Token_L();
+    translate(token_pitch * [   0.0,  -0.5 ]) Token_L();
+  };
+  union(){
+    Frame($phase, token_pitch * [ 5 + 1.00, 4 + 0.50 ]);
+    $nspots = 2;
+    translate(token_pitch * [   0.0,   0.5 ]) Token_L();
+    translate(token_pitch * [   0.0,   1.5 ]) Token_L();
+    translate(token_pitch * [   1.0,  -1.5 ]) Token_L();
+    translate(token_pitch * [   1.0,  -0.5 ]) Token_L();
+    translate(token_pitch * [   1.0,   0.5 ]) Token_L();
+  };
+  union(){
+    Frame($phase, token_pitch * [ 5 + 1.00, 4 + 0.50 ]);
+    $nspots = 3;
+  };
+  union(){
+    Frame($phase, token_pitch * [ 5 + 1.00, 4 + 0.50 ]);
+    $nspots = 4;
+    translate(token_pitch * [   1.0,   1.5 ]) Token_L();
+    translate(token_pitch * [   2.0,  -1.5 ]) Token_L();
+    translate(token_pitch * [   2.0,  -0.5 ]) Token_L();
+    translate(token_pitch * [   2.0,   0.5 ]) Token_L();
+    translate(token_pitch * [   2.0,   1.5 ]) Token_L();
+  };
+}
+module Witches_Orange(){ ////toplevel
+// Witches  Orange      total=12  rowsz=4  nrows=3
+  union(){
+    Frame($phase, token_pitch * [ 4 + 1.00, 3 + 0.50 ]);
+    $nspots = 1;
+    translate(token_pitch * [  -1.5,  -1.0 ]) Token_L();
+    translate(token_pitch * [  -1.5,   0.0 ]) Token_L();
+    translate(token_pitch * [  -1.5,   1.0 ]) Token_L();
+    translate(token_pitch * [  -0.5,  -1.0 ]) Token_L();
+    translate(token_pitch * [  -0.5,   0.0 ]) Token_L();
+    translate(token_pitch * [  -0.5,   1.0 ]) Token_L();
+    translate(token_pitch * [   0.5,  -1.0 ]) Token_L();
+    translate(token_pitch * [   0.5,   0.0 ]) Token_L();
+    translate(token_pitch * [   0.5,   1.0 ]) Token_L();
+    translate(token_pitch * [   1.5,  -1.0 ]) Token_L();
+    translate(token_pitch * [   1.5,   0.0 ]) Token_L();
+    translate(token_pitch * [   1.5,   1.0 ]) Token_L();
+  };
+  union(){
+    Frame($phase, token_pitch * [ 4 + 1.00, 3 + 0.50 ]);
+    $nspots = 2;
+  };
+  union(){
+    Frame($phase, token_pitch * [ 4 + 1.00, 3 + 0.50 ]);
+    $nspots = 3;
+  };
+  union(){
+    Frame($phase, token_pitch * [ 4 + 1.00, 3 + 0.50 ]);
+    $nspots = 4;
+  };
+}
+module Witches_Purple(){ ////toplevel
+// Witches  Purple      total= 8  rowsz=3  nrows=3
+  union(){
+    Frame($phase, token_pitch * [ 3 + 1.00, 3 + 0.50 ]);
+    $nspots = 1;
+    translate(token_pitch * [  -1.0,  -1.0 ]) Token_L();
+    translate(token_pitch * [  -1.0,   0.0 ]) Token_L();
+    translate(token_pitch * [  -1.0,   1.0 ]) Token_L();
+    translate(token_pitch * [   0.0,  -1.0 ]) Token_L();
+    translate(token_pitch * [   0.0,   0.0 ]) Token_L();
+    translate(token_pitch * [   0.0,   1.0 ]) Token_L();
+    translate(token_pitch * [   1.0,  -1.0 ]) Token_L();
+    translate(token_pitch * [   1.0,   0.0 ]) Token_L();
+  };
+  union(){
+    Frame($phase, token_pitch * [ 3 + 1.00, 3 + 0.50 ]);
+    $nspots = 2;
+  };
+  union(){
+    Frame($phase, token_pitch * [ 3 + 1.00, 3 + 0.50 ]);
+    $nspots = 3;
+  };
+  union(){
+    Frame($phase, token_pitch * [ 3 + 1.00, 3 + 0.50 ]);
+    $nspots = 4;
+  };
+}
+module Witches_Red(){ ////toplevel
+// Witches  Red         total=16  rowsz=4  nrows=4
+  union(){
+    Frame($phase, token_pitch * [ 4 + 1.00, 4 + 0.50 ]);
+    $nspots = 1;
+    translate(token_pitch * [  -1.5,  -1.5 ]) Token_L();
+    translate(token_pitch * [  -1.5,  -0.5 ]) Token_L();
+    translate(token_pitch * [  -1.5,   0.5 ]) Token_L();
+    translate(token_pitch * [  -1.5,   1.5 ]) Token_L();
+    translate(token_pitch * [  -0.5,  -1.5 ]) Token_L();
+    translate(token_pitch * [  -0.5,  -0.5 ]) Token_L();
+  };
+  union(){
+    Frame($phase, token_pitch * [ 4 + 1.00, 4 + 0.50 ]);
+    $nspots = 2;
+    translate(token_pitch * [  -0.5,   0.5 ]) Token_L();
+    translate(token_pitch * [  -0.5,   1.5 ]) Token_L();
+    translate(token_pitch * [   0.5,  -1.5 ]) Token_L();
+    translate(token_pitch * [   0.5,  -0.5 ]) Token_L();
+    translate(token_pitch * [   0.5,   0.5 ]) Token_L();
+  };
+  union(){
+    Frame($phase, token_pitch * [ 4 + 1.00, 4 + 0.50 ]);
+    $nspots = 3;
+  };
+  union(){
+    Frame($phase, token_pitch * [ 4 + 1.00, 4 + 0.50 ]);
+    $nspots = 4;
+    translate(token_pitch * [   0.5,   1.5 ]) Token_L();
+    translate(token_pitch * [   1.5,  -1.5 ]) Token_L();
+    translate(token_pitch * [   1.5,  -0.5 ]) Token_L();
+    translate(token_pitch * [   1.5,   0.5 ]) Token_L();
+    translate(token_pitch * [   1.5,   1.5 ]) Token_L();
+  };
+}
+module Witches_White(){ ////toplevel
+// Witches  White       total=11  rowsz=4  nrows=3
+  union(){
+    Frame($phase, token_pitch * [ 4 + 1.00, 3 + 0.50 ]);
+    $nspots = 1;
+    translate(token_pitch * [  -1.5,  -1.0 ]) Token_L();
+    translate(token_pitch * [  -1.5,   0.0 ]) Token_L();
+    translate(token_pitch * [  -1.5,   1.0 ]) Token_L();
+    translate(token_pitch * [  -0.5,  -1.0 ]) Token_L();
+    translate(token_pitch * [  -0.5,   0.0 ]) Token_L();
+    translate(token_pitch * [  -0.5,   1.0 ]) Token_L();
+  };
+  union(){
+    Frame($phase, token_pitch * [ 4 + 1.00, 3 + 0.50 ]);
+    $nspots = 2;
+    translate(token_pitch * [   0.5,  -1.0 ]) Token_L();
+    translate(token_pitch * [   0.5,   0.0 ]) Token_L();
+    translate(token_pitch * [   0.5,   1.0 ]) Token_L();
+  };
+  union(){
+    Frame($phase, token_pitch * [ 4 + 1.00, 3 + 0.50 ]);
+    $nspots = 3;
+    translate(token_pitch * [   1.5,  -1.0 ]) Token_L();
+    translate(token_pitch * [   1.5,   0.0 ]) Token_L();
+  };
+  union(){
+    Frame($phase, token_pitch * [ 4 + 1.00, 3 + 0.50 ]);
+    $nspots = 4;
+  };
+}
+module Witches_Yellow(){ ////toplevel
+// Witches  Yellow      total=16  rowsz=4  nrows=4
+  union(){
+    Frame($phase, token_pitch * [ 4 + 1.00, 4 + 0.50 ]);
+    $nspots = 1;
+    translate(token_pitch * [  -1.5,  -1.5 ]) Token_L();
+    translate(token_pitch * [  -1.5,  -0.5 ]) Token_L();
+    translate(token_pitch * [  -1.5,   0.5 ]) Token_L();
+    translate(token_pitch * [  -1.5,   1.5 ]) Token_L();
+    translate(token_pitch * [  -0.5,  -1.5 ]) Token_L();
+    translate(token_pitch * [  -0.5,  -0.5 ]) Token_L();
+  };
+  union(){
+    Frame($phase, token_pitch * [ 4 + 1.00, 4 + 0.50 ]);
+    $nspots = 2;
+    translate(token_pitch * [  -0.5,   0.5 ]) Token_L();
+    translate(token_pitch * [  -0.5,   1.5 ]) Token_L();
+    translate(token_pitch * [   0.5,  -1.5 ]) Token_L();
+    translate(token_pitch * [   0.5,  -0.5 ]) Token_L();
+    translate(token_pitch * [   0.5,   0.5 ]) Token_L();
+  };
+  union(){
+    Frame($phase, token_pitch * [ 4 + 1.00, 4 + 0.50 ]);
+    $nspots = 3;
+  };
+  union(){
+    Frame($phase, token_pitch * [ 4 + 1.00, 4 + 0.50 ]);
+    $nspots = 4;
+    translate(token_pitch * [   0.5,   1.5 ]) Token_L();
+    translate(token_pitch * [   1.5,  -1.5 ]) Token_L();
+    translate(token_pitch * [   1.5,  -0.5 ]) Token_L();
+    translate(token_pitch * [   1.5,   0.5 ]) Token_L();
+    translate(token_pitch * [   1.5,   1.5 ]) Token_L();
+  };
+}
+// Witches  total_count=109   total_real_count=109
+// Witches  max_rowsz=5       max_nrows=4
index 86ccfba4b7a5601e7db46ee99ac6df9162740358..395770d13ee62e104b7662e3f4d5e37e98eff539 100755 (executable)
@@ -20,7 +20,9 @@ cat >$f.tmp <<END
 //   source is quacks-ingredients-counts
 END
 
-./quacks-ingredients-counts Base >>$f.tmp
+for which in Base All Witches; do
+       ./quacks-ingredients-counts $which >>$f.tmp
+done
 mv -f $f.tmp $f
 
 egrep '^// [A-Z][a-z]*  *[A-Za-z]' $f | sort