diff options
Diffstat (limited to '')
| -rwxr-xr-x | alg | 180 |
1 files changed, 180 insertions, 0 deletions
| @@ -0,0 +1,180 @@ | |||
| 1 | #!/bin/sh | ||
| 2 | |||
| 3 | # Script to store and access blindsolving algs (speedcubing stuff) | ||
| 4 | |||
| 5 | # Example: alg e FG - opens up editor to edit $basedir/edges/$ebuffer/RD/LD | ||
| 6 | # Example: alg c UBL E - prints out all first algs for UBL-FDR-* | ||
| 7 | |||
| 8 | usage() { | ||
| 9 | echo "Usage: alg [c|e|w] [buffer] [1 letter|2 letters]" | ||
| 10 | } | ||
| 11 | |||
| 12 | editor=vi | ||
| 13 | basedir="$HOME/box/speedcubing/bld/algs" | ||
| 14 | ebuffer=UR | ||
| 15 | cbuffer=UFR | ||
| 16 | wbuffer=UFr | ||
| 17 | |||
| 18 | edge() { | ||
| 19 | [ "$1" = "A" ] && echo FU | ||
| 20 | [ "$1" = "B" ] && echo UF | ||
| 21 | [ "$1" = "C" ] && echo UL | ||
| 22 | [ "$1" = "D" ] && echo UB | ||
| 23 | [ "$1" = "E" ] && echo FD | ||
| 24 | [ "$1" = "F" ] && echo RD | ||
| 25 | [ "$1" = "G" ] && echo LD | ||
| 26 | [ "$1" = "I" ] && echo FR | ||
| 27 | [ "$1" = "J" ] && echo LU | ||
| 28 | [ "$1" = "K" ] && echo RB | ||
| 29 | [ "$1" = "L" ] && echo DF | ||
| 30 | [ "$1" = "M" ] && echo DB | ||
| 31 | [ "$1" = "N" ] && echo DR | ||
| 32 | [ "$1" = "O" ] && echo FL | ||
| 33 | [ "$1" = "P" ] && echo DL | ||
| 34 | [ "$1" = "R" ] && echo BU | ||
| 35 | [ "$1" = "S" ] && echo BD | ||
| 36 | [ "$1" = "T" ] && echo BL | ||
| 37 | [ "$1" = "U" ] && echo BR | ||
| 38 | [ "$1" = "V" ] && echo LF | ||
| 39 | [ "$1" = "W" ] && echo LB | ||
| 40 | [ "$1" = "Z" ] && echo RF | ||
| 41 | } | ||
| 42 | |||
| 43 | corner() { | ||
| 44 | [ "$1" = "A" ] && echo FUL | ||
| 45 | [ "$1" = "B" ] && echo UBL | ||
| 46 | [ "$1" = "C" ] && echo UFL | ||
| 47 | [ "$1" = "D" ] && echo UBR | ||
| 48 | [ "$1" = "E" ] && echo FDR | ||
| 49 | [ "$1" = "F" ] && echo RDB | ||
| 50 | [ "$1" = "G" ] && echo LDF | ||
| 51 | [ "$1" = "J" ] && echo LUF | ||
| 52 | [ "$1" = "K" ] && echo RUB | ||
| 53 | [ "$1" = "L" ] && echo DFR | ||
| 54 | [ "$1" = "M" ] && echo DBR | ||
| 55 | [ "$1" = "N" ] && echo DFL | ||
| 56 | [ "$1" = "O" ] && echo FDL | ||
| 57 | [ "$1" = "P" ] && echo DBL | ||
| 58 | [ "$1" = "R" ] && echo BUR | ||
| 59 | [ "$1" = "S" ] && echo BUL | ||
| 60 | [ "$1" = "T" ] && echo BDL | ||
| 61 | [ "$1" = "U" ] && echo BDR | ||
| 62 | [ "$1" = "V" ] && echo LUB | ||
| 63 | [ "$1" = "W" ] && echo LDB | ||
| 64 | [ "$1" = "Z" ] && echo RDF | ||
| 65 | } | ||
| 66 | |||
| 67 | wing() { | ||
| 68 | [ "$1" = "A" ] && echo FUl | ||
| 69 | [ "$1" = "B" ] && echo URb | ||
| 70 | [ "$1" = "C" ] && echo ULf | ||
| 71 | [ "$1" = "D" ] && echo UBl | ||
| 72 | [ "$1" = "E" ] && echo FDr | ||
| 73 | [ "$1" = "F" ] && echo RDb | ||
| 74 | [ "$1" = "G" ] && echo LDf | ||
| 75 | [ "$1" = "I" ] && echo FRu | ||
| 76 | [ "$1" = "J" ] && echo LUb | ||
| 77 | [ "$1" = "K" ] && echo RBu | ||
| 78 | [ "$1" = "L" ] && echo DFl | ||
| 79 | [ "$1" = "M" ] && echo DBr | ||
| 80 | [ "$1" = "N" ] && echo DRf | ||
| 81 | [ "$1" = "O" ] && echo FLd | ||
| 82 | [ "$1" = "P" ] && echo DLb | ||
| 83 | [ "$1" = "R" ] && echo BUr | ||
| 84 | [ "$1" = "S" ] && echo BDl | ||
| 85 | [ "$1" = "T" ] && echo BLu | ||
| 86 | [ "$1" = "U" ] && echo BRd | ||
| 87 | [ "$1" = "V" ] && echo LFu | ||
| 88 | [ "$1" = "W" ] && echo LBd | ||
| 89 | [ "$1" = "X" ] && echo LUf | ||
| 90 | [ "$1" = "Z" ] && echo RFd | ||
| 91 | } | ||
| 92 | |||
| 93 | edit() { | ||
| 94 | mkdir -p "$basedir/$1/$2/$3" | ||
| 95 | $editor "$basedir/$1/$2/$3/$4" | ||
| 96 | } | ||
| 97 | |||
| 98 | showall_c() { | ||
| 99 | all_letters="A B C D E F G J K L M N O P R S T U V W Z" | ||
| 100 | buffer="$1" | ||
| 101 | firstletter="$2" | ||
| 102 | firsttarget="$(corner $firstletter)" | ||
| 103 | for secondletter in $all_letters; do | ||
| 104 | secondtarget="$(corner $secondletter)" | ||
| 105 | f="$basedir/corners/$buffer/$firsttarget/$secondtarget" | ||
| 106 | [ -f "$f" ] || continue | ||
| 107 | line="$(head -n 1 "$f")" | ||
| 108 | printf '%s %s\n' "$firstletter$secondletter" "$line" | ||
| 109 | done | ||
| 110 | } | ||
| 111 | |||
| 112 | showall_e() { | ||
| 113 | all_letters="A B C D E F G I J K L M N O P R S T U V W Z" | ||
| 114 | buffer="$1" | ||
| 115 | firstletter="$2" | ||
| 116 | firsttarget="$(edge $firstletter)" | ||
| 117 | for secondletter in $all_letters; do | ||
| 118 | secondtarget="$(edge $secondletter)" | ||
| 119 | f="$basedir/edges/$buffer/$firsttarget/$secondtarget" | ||
| 120 | [ -f "$f" ] || continue | ||
| 121 | line="$(head -n 1 "$f")" | ||
| 122 | printf '%s %s\n' "$firstletter$secondletter" "$line" | ||
| 123 | done | ||
| 124 | } | ||
| 125 | |||
| 126 | showall_w() { | ||
| 127 | all_letters="A B C D E F G I J K L M N O P R S T U V W X Z" | ||
| 128 | buffer="$1" | ||
| 129 | firstletter="$2" | ||
| 130 | firsttarget="$(wing $firstletter)" | ||
| 131 | for secondletter in $all_letters; do | ||
| 132 | secondtarget="$(wing $secondletter)" | ||
| 133 | f="$basedir/wings/$buffer/$firsttarget/$secondtarget" | ||
| 134 | [ -f "$f" ] || continue | ||
| 135 | line="$(head -n 1 "$f")" | ||
| 136 | printf '%s %s\n' "$firstletter$secondletter" "$line" | ||
| 137 | done | ||
| 138 | } | ||
| 139 | |||
| 140 | type="$1" | ||
| 141 | if [ -z "$3" ]; then | ||
| 142 | letters="$2" | ||
| 143 | else | ||
| 144 | letters="$3" | ||
| 145 | cbuffer="$2" | ||
| 146 | ebuffer="$2" | ||
| 147 | wbuffer="$2" | ||
| 148 | fi | ||
| 149 | |||
| 150 | letter1="$(echo "$letters" | cut -c 1)" | ||
| 151 | letter2="$(echo "$letters" | cut -b 2)" | ||
| 152 | |||
| 153 | [ -z "$letter1" ] && usage && exit 1 | ||
| 154 | |||
| 155 | case "$type" in | ||
| 156 | c) | ||
| 157 | if [ -n "$letter2" ]; then | ||
| 158 | edit corners $cbuffer $(corner $letter1) $(corner $letter2) | ||
| 159 | else | ||
| 160 | showall_c $cbuffer $letter1 | ||
| 161 | fi | ||
| 162 | ;; | ||
| 163 | e) | ||
| 164 | if [ -n "$letter2" ]; then | ||
| 165 | edit edges $ebuffer $(edge $letter1) $(edge $letter2) | ||
| 166 | else | ||
| 167 | showall_e $ebuffer $letter1 | ||
| 168 | fi | ||
| 169 | ;; | ||
| 170 | w) | ||
| 171 | if [ -n "$letter2" ]; then | ||
| 172 | edit wings $wbuffer $(wing $letter1) $(wing $letter2) | ||
| 173 | else | ||
| 174 | showall_w $wbuffer $letter1 | ||
| 175 | fi | ||
| 176 | ;; | ||
| 177 | *) | ||
| 178 | usage && exit 1 | ||
| 179 | ;; | ||
| 180 | esac | ||
