659 lines
		
	
	
		
			14 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			659 lines
		
	
	
		
			14 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
package main
 | 
						|
 | 
						|
import (
 | 
						|
	"fmt"
 | 
						|
	"os"
 | 
						|
	"strconv"
 | 
						|
	"strings"
 | 
						|
)
 | 
						|
 | 
						|
/* This program generates instructions to display words
 | 
						|
 * on the screen from day 8
 | 
						|
 * It assumes the screen size is 50x6
 | 
						|
 */
 | 
						|
func main() {
 | 
						|
	if len(os.Args) < 2 {
 | 
						|
		fmt.Println("Expected argument with word to convert.")
 | 
						|
		os.Exit(1)
 | 
						|
	}
 | 
						|
	wrd := strings.ToUpper(os.Args[1])
 | 
						|
	for i := len(wrd) - 1; i >= 0; i-- {
 | 
						|
		printInst(runeToInst(rune(wrd[i])))
 | 
						|
		if i > 0 {
 | 
						|
			printInst(shiftCols(2))
 | 
						|
		}
 | 
						|
	}
 | 
						|
}
 | 
						|
 | 
						|
func printInst(i []string) {
 | 
						|
	for j := range i {
 | 
						|
		fmt.Println(i[j])
 | 
						|
	}
 | 
						|
}
 | 
						|
 | 
						|
func runeToInst(r rune) []string {
 | 
						|
	var ret []string
 | 
						|
	switch r {
 | 
						|
	case 'A':
 | 
						|
		/*
 | 
						|
			    ##
 | 
						|
			   #  #
 | 
						|
			   #  #
 | 
						|
			   ####
 | 
						|
			   #  #
 | 
						|
				 #  #
 | 
						|
		*/
 | 
						|
		ret = append(ret, "rect 1x5")
 | 
						|
		ret = append(ret, "rotate column x=0 by 1")
 | 
						|
		ret = append(ret, shiftCols(1)...)
 | 
						|
 | 
						|
		ret = append(ret, "rect 1x1")
 | 
						|
		ret = append(ret, "rotate column x=0 by 3")
 | 
						|
		ret = append(ret, "rect 1x1")
 | 
						|
		ret = append(ret, shiftCols(1)...)
 | 
						|
 | 
						|
		ret = append(ret, "rect 1x1")
 | 
						|
		ret = append(ret, "rotate column x=0 by 3")
 | 
						|
		ret = append(ret, "rect 1x1")
 | 
						|
		ret = append(ret, shiftCols(1)...)
 | 
						|
 | 
						|
		ret = append(ret, "rect 1x5")
 | 
						|
		ret = append(ret, "rotate column x=0 by 1")
 | 
						|
	case 'B':
 | 
						|
		/*
 | 
						|
		   ###
 | 
						|
		   #  #
 | 
						|
		   ###
 | 
						|
		   #  #
 | 
						|
		   #  #
 | 
						|
		   ###
 | 
						|
		*/
 | 
						|
		ret = append(ret, "rect 1x2")
 | 
						|
		ret = append(ret, "rotate column x=0 by 2")
 | 
						|
		ret = append(ret, "rect 1x1")
 | 
						|
		ret = append(ret, "rotate column x=0 by 1")
 | 
						|
		ret = append(ret, shiftCols(1)...)
 | 
						|
 | 
						|
		ret = append(ret, "rect 1x1")
 | 
						|
		ret = append(ret, "rotate column x=0 by 3")
 | 
						|
		ret = append(ret, "rect 1x1")
 | 
						|
		ret = append(ret, "rotate column x=0 by 2")
 | 
						|
		ret = append(ret, "rect 1x1")
 | 
						|
		ret = append(ret, shiftCols(1)...)
 | 
						|
 | 
						|
		ret = append(ret, "rect 1x1")
 | 
						|
		ret = append(ret, "rotate column x=0 by 3")
 | 
						|
		ret = append(ret, "rect 1x1")
 | 
						|
		ret = append(ret, "rotate column x=0 by 2")
 | 
						|
		ret = append(ret, "rect 1x1")
 | 
						|
		ret = append(ret, shiftCols(1)...)
 | 
						|
 | 
						|
		ret = append(ret, "rect 1x6")
 | 
						|
	case 'C':
 | 
						|
		/*
 | 
						|
			    ##
 | 
						|
			   #  #
 | 
						|
			   #
 | 
						|
				 #
 | 
						|
			   #  #
 | 
						|
			    ##
 | 
						|
		*/
 | 
						|
		ret = append(ret, "rect 1x1")
 | 
						|
		ret = append(ret, "rotate column x=0 by 3")
 | 
						|
		ret = append(ret, "rect 1x1")
 | 
						|
		ret = append(ret, "rotate column x=0 by 1")
 | 
						|
		ret = append(ret, shiftCols(1)...)
 | 
						|
 | 
						|
		ret = append(ret, "rect 1x1")
 | 
						|
		ret = append(ret, "rotate column x=0 by 5")
 | 
						|
		ret = append(ret, "rect 1x1")
 | 
						|
		ret = append(ret, shiftCols(1)...)
 | 
						|
 | 
						|
		ret = append(ret, "rect 1x1")
 | 
						|
		ret = append(ret, "rotate column x=0 by 5")
 | 
						|
		ret = append(ret, "rect 1x1")
 | 
						|
		ret = append(ret, shiftCols(1)...)
 | 
						|
 | 
						|
		ret = append(ret, "rect 1x4")
 | 
						|
		ret = append(ret, "rotate column x=0 by 1")
 | 
						|
	case 'D':
 | 
						|
		/*
 | 
						|
		   ###
 | 
						|
		   #  #
 | 
						|
		   #  #
 | 
						|
		   #  #
 | 
						|
		   #  #
 | 
						|
		   ###
 | 
						|
		*/
 | 
						|
		ret = append(ret, "rect 1x4")
 | 
						|
		ret = append(ret, "rotate column x=0 by 1")
 | 
						|
		ret = append(ret, shiftCols(1)...)
 | 
						|
 | 
						|
		ret = append(ret, "rect 1x1")
 | 
						|
		ret = append(ret, "rotate column x=0 by 5")
 | 
						|
		ret = append(ret, "rect 1x1")
 | 
						|
		ret = append(ret, shiftCols(1)...)
 | 
						|
 | 
						|
		ret = append(ret, "rect 1x1")
 | 
						|
		ret = append(ret, "rotate column x=0 by 5")
 | 
						|
		ret = append(ret, "rect 1x1")
 | 
						|
		ret = append(ret, shiftCols(1)...)
 | 
						|
 | 
						|
		ret = append(ret, "rect 1x6")
 | 
						|
	case 'E':
 | 
						|
		/*
 | 
						|
		   ####
 | 
						|
		   #
 | 
						|
		   ###
 | 
						|
		   #
 | 
						|
		   #
 | 
						|
		   ####
 | 
						|
		*/
 | 
						|
		ret = append(ret, "rect 1x1")
 | 
						|
		ret = append(ret, "rotate column x=0 by 5")
 | 
						|
		ret = append(ret, "rect 1x1")
 | 
						|
		ret = append(ret, shiftCols(1)...)
 | 
						|
 | 
						|
		ret = append(ret, "rect 1x1")
 | 
						|
		ret = append(ret, "rotate column x=0 by 3")
 | 
						|
		ret = append(ret, "rect 1x1")
 | 
						|
		ret = append(ret, "rotate column x=0 by 2")
 | 
						|
		ret = append(ret, "rect 1x1")
 | 
						|
		ret = append(ret, shiftCols(1)...)
 | 
						|
 | 
						|
		ret = append(ret, "rect 1x1")
 | 
						|
		ret = append(ret, "rotate column x=0 by 3")
 | 
						|
		ret = append(ret, "rect 1x1")
 | 
						|
		ret = append(ret, "rotate column x=0 by 2")
 | 
						|
		ret = append(ret, "rect 1x1")
 | 
						|
		ret = append(ret, shiftCols(1)...)
 | 
						|
 | 
						|
		ret = append(ret, "rect 1x6")
 | 
						|
	case 'F':
 | 
						|
		/*
 | 
						|
		   ####
 | 
						|
		   #
 | 
						|
		   ###
 | 
						|
		   #
 | 
						|
		   #
 | 
						|
		   #
 | 
						|
		*/
 | 
						|
		ret = append(ret, shiftCols(5)...)
 | 
						|
		ret = append(ret, "rect 3x1")
 | 
						|
		ret = append(ret, "rotate column x=2 by 2")
 | 
						|
		ret = append(ret, "rotate column x=1 by 2")
 | 
						|
		ret = append(ret, "rotate column x=0 by 2")
 | 
						|
		ret = append(ret, "rect 4x1")
 | 
						|
		ret = append(ret, "rect 1x6")
 | 
						|
	case 'G':
 | 
						|
		/*
 | 
						|
		    ###
 | 
						|
		   #
 | 
						|
		   # ##
 | 
						|
		   #  #
 | 
						|
		   #  #
 | 
						|
		    ##
 | 
						|
		*/
 | 
						|
		ret = append(ret, "rect 1x3")
 | 
						|
		ret = append(ret, "rotate column x=0 by 2")
 | 
						|
		ret = append(ret, "rect 1x1")
 | 
						|
		ret = append(ret, shiftCols(1)...)
 | 
						|
 | 
						|
		ret = append(ret, "rect 1x1")
 | 
						|
		ret = append(ret, "rotate column x=0 by 3")
 | 
						|
		ret = append(ret, "rect 1x1")
 | 
						|
		ret = append(ret, "rotate column x=0 by 2")
 | 
						|
		ret = append(ret, "rect 1x1")
 | 
						|
		ret = append(ret, shiftCols(1)...)
 | 
						|
 | 
						|
		ret = append(ret, "rect 1x1")
 | 
						|
		ret = append(ret, "rotate column x=0 by 5")
 | 
						|
		ret = append(ret, "rect 1x1")
 | 
						|
		ret = append(ret, shiftCols(1)...)
 | 
						|
 | 
						|
		ret = append(ret, "rect 1x4")
 | 
						|
		ret = append(ret, "rotate column x=0 by 1")
 | 
						|
	case 'H':
 | 
						|
		/*
 | 
						|
		   #  #
 | 
						|
		   #  #
 | 
						|
		   ####
 | 
						|
		   #  #
 | 
						|
		   #  #
 | 
						|
		   #  #
 | 
						|
		*/
 | 
						|
		ret = append(ret, "rect 1x6")
 | 
						|
		ret = append(ret, shiftCols(1)...)
 | 
						|
 | 
						|
		ret = append(ret, "rect 1x1")
 | 
						|
		ret = append(ret, "rotate column x=0 by 2")
 | 
						|
		ret = append(ret, shiftCols(1)...)
 | 
						|
 | 
						|
		ret = append(ret, "rect 1x1")
 | 
						|
		ret = append(ret, "rotate column x=0 by 2")
 | 
						|
		ret = append(ret, shiftCols(1)...)
 | 
						|
 | 
						|
		ret = append(ret, "rect 1x6")
 | 
						|
	case 'I':
 | 
						|
		/*
 | 
						|
		   ###
 | 
						|
		    #
 | 
						|
		    #
 | 
						|
		    #
 | 
						|
		    #
 | 
						|
		   ###
 | 
						|
		*/
 | 
						|
		ret = append(ret, "rect 1x1")
 | 
						|
		ret = append(ret, "rotate column x=0 by 5")
 | 
						|
		ret = append(ret, "rect 1x1")
 | 
						|
		ret = append(ret, shiftCols(1)...)
 | 
						|
 | 
						|
		ret = append(ret, "rect 1x6")
 | 
						|
		ret = append(ret, shiftCols(1)...)
 | 
						|
 | 
						|
		ret = append(ret, "rect 1x1")
 | 
						|
		ret = append(ret, "rotate column x=0 by 5")
 | 
						|
		ret = append(ret, "rect 1x1")
 | 
						|
	case 'J':
 | 
						|
		/*
 | 
						|
		      #
 | 
						|
		      #
 | 
						|
		      #
 | 
						|
		   #  #
 | 
						|
		   #  #
 | 
						|
		    ##
 | 
						|
		*/
 | 
						|
		ret = append(ret, "rect 1x5")
 | 
						|
		ret = append(ret, shiftCols(2)...)
 | 
						|
 | 
						|
		ret = append(ret, "rect 2x1")
 | 
						|
		ret = append(ret, "rotate column x=1 by 5")
 | 
						|
		ret = append(ret, "rotate column x=0 by 5")
 | 
						|
		ret = append(ret, shiftCols(1)...)
 | 
						|
 | 
						|
		ret = append(ret, "rect 1x2")
 | 
						|
		ret = append(ret, "rotate column x=0 by 3")
 | 
						|
	case 'K':
 | 
						|
		/*
 | 
						|
		   #  #
 | 
						|
		   # #
 | 
						|
		   ##
 | 
						|
		   # #
 | 
						|
		   #  #
 | 
						|
		   #  #
 | 
						|
		*/
 | 
						|
		ret = append(ret, "rect 1x2")
 | 
						|
		ret = append(ret, "rotate column x=0 by 4")
 | 
						|
		ret = append(ret, "rect 1x1")
 | 
						|
		ret = append(ret, shiftCols(1)...)
 | 
						|
 | 
						|
		ret = append(ret, "rect 1x1")
 | 
						|
		ret = append(ret, "rotate column x=0 by 2")
 | 
						|
		ret = append(ret, "rect 1x1")
 | 
						|
		ret = append(ret, "rotate column x=0 by 1")
 | 
						|
		ret = append(ret, shiftCols(1)...)
 | 
						|
 | 
						|
		ret = append(ret, "rect 1x1")
 | 
						|
		ret = append(ret, "rotate column x=0 by 2")
 | 
						|
		ret = append(ret, shiftCols(1)...)
 | 
						|
 | 
						|
		ret = append(ret, "rect 1x6")
 | 
						|
	case 'L':
 | 
						|
		/*
 | 
						|
		   #
 | 
						|
		   #
 | 
						|
		   #
 | 
						|
		   #
 | 
						|
		   #
 | 
						|
		   ####
 | 
						|
		*/
 | 
						|
		ret = append(ret, shiftCols(3)...)
 | 
						|
		ret = append(ret, "rect 4x1")
 | 
						|
		ret = append(ret, "rotate column x=0 by 5")
 | 
						|
		ret = append(ret, "rotate column x=1 by 5")
 | 
						|
		ret = append(ret, "rotate column x=2 by 5")
 | 
						|
		ret = append(ret, "rotate column x=3 by 5")
 | 
						|
		ret = append(ret, "rect 1x6")
 | 
						|
	case 'M':
 | 
						|
		/*
 | 
						|
		   #  #
 | 
						|
		   ####
 | 
						|
		   ####
 | 
						|
		   #  #
 | 
						|
		   #  #
 | 
						|
		   #  #
 | 
						|
		*/
 | 
						|
		ret = append(ret, "rect 1x6")
 | 
						|
		ret = append(ret, shiftCols(1)...)
 | 
						|
 | 
						|
		ret = append(ret, "rect 1x2")
 | 
						|
		ret = append(ret, "rotate column x=0 by 1")
 | 
						|
		ret = append(ret, shiftCols(1)...)
 | 
						|
 | 
						|
		ret = append(ret, "rect 1x2")
 | 
						|
		ret = append(ret, "rotate column x=0 by 1")
 | 
						|
		ret = append(ret, shiftCols(1)...)
 | 
						|
 | 
						|
		ret = append(ret, "rect 1x6")
 | 
						|
	case 'N':
 | 
						|
		/*
 | 
						|
		   #  #
 | 
						|
		   ## #
 | 
						|
		   # ##
 | 
						|
		   # ##
 | 
						|
		   #  #
 | 
						|
		   #  #
 | 
						|
		*/
 | 
						|
		ret = append(ret, "rect 1x6")
 | 
						|
		ret = append(ret, shiftCols(1)...)
 | 
						|
 | 
						|
		ret = append(ret, "rect 1x2")
 | 
						|
		ret = append(ret, "rotate column x=0 by 2")
 | 
						|
		ret = append(ret, shiftCols(1)...)
 | 
						|
 | 
						|
		ret = append(ret, "rect 1x1")
 | 
						|
		ret = append(ret, "rotate column x=0 by 1")
 | 
						|
		ret = append(ret, shiftCols(1)...)
 | 
						|
 | 
						|
		ret = append(ret, "rect 1x6")
 | 
						|
 | 
						|
	case 'O':
 | 
						|
		/*
 | 
						|
		    ##
 | 
						|
		   #  #
 | 
						|
		   #  #
 | 
						|
		   #  #
 | 
						|
		   #  #
 | 
						|
		    ##
 | 
						|
		*/
 | 
						|
		ret = append(ret, "rect 1x4")
 | 
						|
		ret = append(ret, "rotate column x=0 by 1")
 | 
						|
		ret = append(ret, shiftCols(2)...)
 | 
						|
		ret = append(ret, "rect 2x1")
 | 
						|
		ret = append(ret, "rotate column x=1 by 5")
 | 
						|
		ret = append(ret, "rotate column x=0 by 5")
 | 
						|
		ret = append(ret, "rect 2x1")
 | 
						|
		ret = append(ret, shiftCols(1)...)
 | 
						|
		ret = append(ret, "rect 1x4")
 | 
						|
		ret = append(ret, "rotate column x=0 by 1")
 | 
						|
 | 
						|
	case 'P':
 | 
						|
		/*
 | 
						|
		   ###
 | 
						|
		   #  #
 | 
						|
		   ###
 | 
						|
		   #
 | 
						|
		   #
 | 
						|
		   #
 | 
						|
		*/
 | 
						|
		ret = append(ret, "rect 1x1")
 | 
						|
		ret = append(ret, "rotate column x=0 by 1")
 | 
						|
		ret = append(ret, shiftCols(2)...)
 | 
						|
 | 
						|
		ret = append(ret, "rect 2x1")
 | 
						|
		ret = append(ret, "rotate column x=1 by 2")
 | 
						|
		ret = append(ret, "rotate column x=0 by 2")
 | 
						|
		ret = append(ret, "rect 2x1")
 | 
						|
		ret = append(ret, shiftCols(1)...)
 | 
						|
 | 
						|
		ret = append(ret, "rect 1x6")
 | 
						|
 | 
						|
	case 'Q':
 | 
						|
		/*
 | 
						|
		    ##
 | 
						|
		   #  #
 | 
						|
		   #  #
 | 
						|
		   #  #
 | 
						|
		   # ##
 | 
						|
		    ###
 | 
						|
		*/
 | 
						|
		ret = append(ret, "rect 1x5")
 | 
						|
		ret = append(ret, "rotate column x=0 by 1")
 | 
						|
		ret = append(ret, shiftCols(1)...)
 | 
						|
 | 
						|
		ret = append(ret, "rect 1x2")
 | 
						|
		ret = append(ret, "rotate column x=0 by 4")
 | 
						|
		ret = append(ret, "rect 1x1")
 | 
						|
		ret = append(ret, shiftCols(1)...)
 | 
						|
 | 
						|
		ret = append(ret, "rect 1x1")
 | 
						|
		ret = append(ret, "rotate column x=0 by 5")
 | 
						|
		ret = append(ret, "rect 1x1")
 | 
						|
		ret = append(ret, shiftCols(1)...)
 | 
						|
 | 
						|
		ret = append(ret, "rect 1x4")
 | 
						|
		ret = append(ret, "rotate column x=0 by 1")
 | 
						|
 | 
						|
	case 'R':
 | 
						|
		/*
 | 
						|
		   ###
 | 
						|
		   #  #
 | 
						|
		   #  #
 | 
						|
		   ###
 | 
						|
		   #  #
 | 
						|
		   #  #
 | 
						|
		*/
 | 
						|
		ret = append(ret, "rect 1x2")
 | 
						|
		ret = append(ret, "rotate column x=0 by 3")
 | 
						|
		ret = append(ret, "rect 1x2")
 | 
						|
		ret = append(ret, "rotate column x=0 by 1")
 | 
						|
		ret = append(ret, shiftCols(2)...)
 | 
						|
 | 
						|
		ret = append(ret, "rect 2x1")
 | 
						|
		ret = append(ret, "rotate column x=1 by 3")
 | 
						|
		ret = append(ret, "rotate column x=0 by 3")
 | 
						|
		ret = append(ret, "rect 2x1")
 | 
						|
		ret = append(ret, shiftCols(1)...)
 | 
						|
 | 
						|
		ret = append(ret, "rect 1x6")
 | 
						|
 | 
						|
	case 'S':
 | 
						|
		/*
 | 
						|
		    ###
 | 
						|
		   #
 | 
						|
		   #
 | 
						|
		    ##
 | 
						|
		      #
 | 
						|
		   ###
 | 
						|
		*/
 | 
						|
		ret = append(ret, "rect 1x1")
 | 
						|
		ret = append(ret, "rotate column x=0 by 4")
 | 
						|
		ret = append(ret, "rect 1x1")
 | 
						|
		ret = append(ret, shiftCols(1)...)
 | 
						|
 | 
						|
		ret = append(ret, "rect 1x1")
 | 
						|
		ret = append(ret, "rotate column x=0 by 2")
 | 
						|
		ret = append(ret, "rect 1x1")
 | 
						|
		ret = append(ret, "rotate column x=0 by 3")
 | 
						|
		ret = append(ret, "rect 1x1")
 | 
						|
		ret = append(ret, shiftCols(1)...)
 | 
						|
 | 
						|
		ret = append(ret, "rect 1x1")
 | 
						|
		ret = append(ret, "rotate column x=0 by 2")
 | 
						|
		ret = append(ret, "rect 1x1")
 | 
						|
		ret = append(ret, "rotate column x=0 by 3")
 | 
						|
		ret = append(ret, "rect 1x1")
 | 
						|
		ret = append(ret, shiftCols(1)...)
 | 
						|
 | 
						|
		ret = append(ret, "rect 1x2")
 | 
						|
		ret = append(ret, "rotate column x=0 by 1")
 | 
						|
 | 
						|
	case 'T':
 | 
						|
		/*
 | 
						|
		   ####
 | 
						|
		    #
 | 
						|
		    #
 | 
						|
		    #
 | 
						|
		    #
 | 
						|
		    #
 | 
						|
		*/
 | 
						|
		ret = append(ret, shiftCols(2)...)
 | 
						|
		ret = append(ret, "rect 3x1")
 | 
						|
		ret = append(ret, "rect 1x6")
 | 
						|
		ret = append(ret, shiftCols(1)...)
 | 
						|
		ret = append(ret, "rect 1x1")
 | 
						|
 | 
						|
	case 'U':
 | 
						|
		/*
 | 
						|
		   #  #
 | 
						|
		   #  #
 | 
						|
		   #  #
 | 
						|
		   #  #
 | 
						|
		   #  #
 | 
						|
		    ##
 | 
						|
		*/
 | 
						|
		ret = append(ret, "rect 1x5")
 | 
						|
		ret = append(ret, shiftCols(1)...)
 | 
						|
		ret = append(ret, "rect 1x1")
 | 
						|
		ret = append(ret, "rotate column x=0 by 5")
 | 
						|
		ret = append(ret, shiftCols(1)...)
 | 
						|
		ret = append(ret, "rect 1x1")
 | 
						|
		ret = append(ret, "rotate column x=0 by 5")
 | 
						|
		ret = append(ret, shiftCols(1)...)
 | 
						|
		ret = append(ret, "rect 1x5")
 | 
						|
 | 
						|
	case 'V':
 | 
						|
		/*
 | 
						|
		   #  #
 | 
						|
		   #  #
 | 
						|
		   #  #
 | 
						|
		    ##
 | 
						|
		    ##
 | 
						|
		    ##
 | 
						|
		*/
 | 
						|
		ret = append(ret, "rect 1x3")
 | 
						|
		ret = append(ret, shiftCols(1)...)
 | 
						|
		ret = append(ret, "rect 1x3")
 | 
						|
		ret = append(ret, "rotate column x=0 by 3")
 | 
						|
		ret = append(ret, shiftCols(1)...)
 | 
						|
		ret = append(ret, "rect 1x3")
 | 
						|
		ret = append(ret, "rotate column x=0 by 3")
 | 
						|
		ret = append(ret, shiftCols(1)...)
 | 
						|
		ret = append(ret, "rect 1x3")
 | 
						|
 | 
						|
	case 'W':
 | 
						|
		/*
 | 
						|
		   #  #
 | 
						|
		   #  #
 | 
						|
		   #  #
 | 
						|
		   ####
 | 
						|
		   ####
 | 
						|
		   #  #
 | 
						|
		*/
 | 
						|
		ret = append(ret, "rect 1x6")
 | 
						|
		ret = append(ret, shiftCols(1)...)
 | 
						|
		ret = append(ret, "rect 1x2")
 | 
						|
		ret = append(ret, "rotate column x=0 by 3")
 | 
						|
		ret = append(ret, shiftCols(1)...)
 | 
						|
		ret = append(ret, "rect 1x2")
 | 
						|
		ret = append(ret, "rotate column x=0 by 3")
 | 
						|
		ret = append(ret, shiftCols(1)...)
 | 
						|
		ret = append(ret, "rect 1x6")
 | 
						|
 | 
						|
	case 'X':
 | 
						|
		/*
 | 
						|
		   #  #
 | 
						|
		   #  #
 | 
						|
		    ##
 | 
						|
		    ##
 | 
						|
		   #  #
 | 
						|
		   #  #
 | 
						|
		*/
 | 
						|
		ret = append(ret, "rect 1x2")
 | 
						|
		ret = append(ret, "rotate column x=0 by 4")
 | 
						|
		ret = append(ret, "rect 1x2")
 | 
						|
		ret = append(ret, shiftCols(1)...)
 | 
						|
		ret = append(ret, "rect 1x2")
 | 
						|
		ret = append(ret, "rotate column x=0 by 2")
 | 
						|
		ret = append(ret, shiftCols(1)...)
 | 
						|
		ret = append(ret, "rect 1x2")
 | 
						|
		ret = append(ret, "rotate column x=0 by 2")
 | 
						|
		ret = append(ret, shiftCols(1)...)
 | 
						|
		ret = append(ret, "rect 1x2")
 | 
						|
		ret = append(ret, "rotate column x=0 by 4")
 | 
						|
		ret = append(ret, "rect 1x2")
 | 
						|
 | 
						|
	case 'Y':
 | 
						|
		/*
 | 
						|
		   #  #
 | 
						|
		   #  #
 | 
						|
		    ###
 | 
						|
		      #
 | 
						|
		      #
 | 
						|
		    ##
 | 
						|
		*/
 | 
						|
		ret = append(ret, "rect 1x5")
 | 
						|
		ret = append(ret, shiftCols(1)...)
 | 
						|
		ret = append(ret, "rect 1x1")
 | 
						|
		ret = append(ret, "rotate column x=0 by 3")
 | 
						|
		ret = append(ret, "rect 1x1")
 | 
						|
		ret = append(ret, "rotate column x=0 by 2")
 | 
						|
		ret = append(ret, shiftCols(1)...)
 | 
						|
		ret = append(ret, "rect 1x1")
 | 
						|
		ret = append(ret, "rotate column x=0 by 3")
 | 
						|
		ret = append(ret, "rect 1x1")
 | 
						|
		ret = append(ret, "rotate column x=0 by 2")
 | 
						|
		ret = append(ret, shiftCols(1)...)
 | 
						|
		ret = append(ret, "rect 1x2")
 | 
						|
 | 
						|
	case 'Z':
 | 
						|
		/*
 | 
						|
		   ####
 | 
						|
		   #  #
 | 
						|
		     #
 | 
						|
		    #
 | 
						|
		   #  #
 | 
						|
		   ####
 | 
						|
		*/
 | 
						|
		ret = append(ret, "rect 1x2")
 | 
						|
		ret = append(ret, "rotate column x=0 by 4")
 | 
						|
		ret = append(ret, "rect 1x2")
 | 
						|
		ret = append(ret, shiftCols(1)...)
 | 
						|
		ret = append(ret, "rect 1x1")
 | 
						|
		ret = append(ret, "rotate column x=0 by 3")
 | 
						|
		ret = append(ret, "rect 1x1")
 | 
						|
		ret = append(ret, "rotate column x=0 by 2")
 | 
						|
		ret = append(ret, "rect 1x1")
 | 
						|
		ret = append(ret, shiftCols(1)...)
 | 
						|
		ret = append(ret, "rect 1x1")
 | 
						|
		ret = append(ret, "rotate column x=0 by 2")
 | 
						|
		ret = append(ret, "rect 1x1")
 | 
						|
		ret = append(ret, "rotate column x=0 by 3")
 | 
						|
		ret = append(ret, "rect 1x1")
 | 
						|
		ret = append(ret, shiftCols(1)...)
 | 
						|
		ret = append(ret, "rect 1x2")
 | 
						|
		ret = append(ret, "rotate column x=0 by 4")
 | 
						|
		ret = append(ret, "rect 1x2")
 | 
						|
	case ' ':
 | 
						|
		ret = append(ret, shiftCols(4)...)
 | 
						|
	default:
 | 
						|
		ret = append(ret, shiftCols(4)...)
 | 
						|
		ret = append(ret, "rect 4x1")
 | 
						|
		ret = append(ret, "rotate column x=3 by 2")
 | 
						|
		ret = append(ret, "rotate column x=2 by 2")
 | 
						|
		ret = append(ret, "rotate column x=1 by 2")
 | 
						|
		ret = append(ret, "rotate column x=0 by 2")
 | 
						|
	}
 | 
						|
	return ret
 | 
						|
}
 | 
						|
 | 
						|
func shiftCols(dist int) []string {
 | 
						|
	var ret []string
 | 
						|
	for i := 0; i < 6; i++ {
 | 
						|
		ret = append(ret, "rotate row y="+itoa(i)+" by "+itoa(dist))
 | 
						|
	}
 | 
						|
	return ret
 | 
						|
}
 | 
						|
 | 
						|
func shiftRows(dist int) []string {
 | 
						|
	var ret []string
 | 
						|
	for i := 0; i < 50; i++ {
 | 
						|
		ret = append(ret, "rotate col x="+itoa(i)+" by "+itoa(dist))
 | 
						|
	}
 | 
						|
	return ret
 | 
						|
}
 | 
						|
 | 
						|
func itoa(i int) string {
 | 
						|
	return strconv.Itoa(i)
 | 
						|
}
 |