aboutsummaryrefslogtreecommitdiff
path: root/unused/practice
diff options
context:
space:
mode:
Diffstat (limited to 'unused/practice')
-rwxr-xr-xunused/practice170
1 files changed, 170 insertions, 0 deletions
diff --git a/unused/practice b/unused/practice
new file mode 100755
index 0000000..628f15b
--- /dev/null
+++ b/unused/practice
@@ -0,0 +1,170 @@
1#!/bin/sh
2
3# Script based on nissy (see https://nissy.tronto.net) to practice FMC
4
5# Usage: practice [eo|dr|htr|slice]
6
7nissy="nissy"
8prompt="Press enter for a new scramble, Ctr+C (or Ctrl+Z) to quit:"
9
10usage() {
11 echo "Usage: practice [eo|dr|htr|fin]"
12 exit 1
13}
14
15practice_eo() {
16 nextscr="$(${nissy} scramble fmc)"
17 while true; do
18 scr="$nextscr"
19 echo "Scramble: $scr"
20 nextscr="$(${nissy} scramble fmc)"
21 eofb="$(${nissy} solve -N -M 4 eofb -p "$scr")"
22 eorl="$(${nissy} solve -N -M 4 eorl -p "$scr")"
23 eoud="$(${nissy} solve -N -M 4 eoud -p "$scr")"
24 nfbn="$(echo "$eofb" | grep -v '^$' | grep -Fv '(' | wc -l)"
25 nrln="$(echo "$eorl" | grep -v '^$' | grep -Fv '(' | wc -l)"
26 nudn="$(echo "$eoud" | grep -v '^$' | grep -Fv '(' | wc -l)"
27 nfbi="$(echo "$eofb" | grep '^(' | wc -l)"
28 nrli="$(echo "$eorl" | grep '^(' | wc -l)"
29 nudi="$(echo "$eoud" | grep '^(' | wc -l)"
30 nfbniss="$(echo "$eofb" | grep -v '^(' | grep '(' | wc -l)"
31 nrlniss="$(echo "$eorl" | grep -v '^(' | grep '(' | wc -l)"
32 nudniss="$(echo "$eoud" | grep -v '^(' | grep '(' | wc -l)"
33 nfb="$((nfbn + nfbi + nfbniss))"
34 nrl="$((nrln + nrli + nrlniss))"
35 nud="$((nudn + nudi + nudniss))"
36 n5linear="$(${nissy} solve -L -m 5 -M 5 eo -c "$scr")"
37 n5niss="$(${nissy} solve -N -m 5 -M 5 eo -c "$scr")"
38 n5nonlinear="$((n5niss - n5linear))"
39 read -r x
40 echo "FB: $nfb ($nfbn normal, $nfbi inverse, $nfbniss niss)"
41 echo "RL: $nrl ($nrln normal, $nrli inverse, $nrlniss niss)"
42 echo "UD: $nud ($nudn normal, $nudi inverse, $nudniss niss)"
43 echo "5 movers: $n5linear linear, $n5nonlinear NISS'd"
44 read -r x
45 echo "$eofb"
46 echo "---"
47 echo "$eorl"
48 echo "---"
49 echo "$eoud"
50 printf '\n%s' "$prompt"
51 read -r x
52 done
53}
54
55practice_dr() {
56 nextscr="$(${nissy} scramble eo)"
57 while true; do
58 scr="$nextscr"
59 echo "Scramble: $scr"
60 nextscr="$(${nissy} scramble eo)"
61 soleo="$(${nissy} solve -o -p drud-eofb "$scr")"
62 neo="$(echo "$soleo" | grep -v '^$' | wc -l)"
63 leo="$(echo "$soleo" | head -n 1 | wc -w)"
64 solht="$(${nissy} solve -o -p drud "$scr")"
65 nht="$(echo "$solht" | grep -v '^$' | wc -l)"
66 lht="$(echo "$solht" | head -n 1 | wc -w)"
67 soleolr="$(${nissy} solve -o -p drrl-eofb "$scr")"
68 neolr="$(echo "$soleolr" | grep -v '^$' | wc -l)"
69 leolr="$(echo "$soleolr" | head -n 1 | wc -w)"
70 solhtlr="$(${nissy} solve -o -p drrl "$scr")"
71 nhtlr="$(echo "$solhtlr" | grep -v '^$' | wc -l)"
72 lhtlr="$(echo "$solhtlr" | head -n 1 | wc -w)"
73 read -r x
74 echo "DR on U/D: $leo moves ($neo solutions)"
75 if [ "$nht" != "$neo" ]; then
76 echo "Breaking EO: $lht moves ($nht solutions)"
77 fi
78 echo "DR on R/L: $leolr moves ($neolr solutions)"
79 if [ "$nhtlr" != "$neolr" ]; then
80 echo "Breaking EO: $lhtlr moves ($nhtlr solutions)"
81 fi
82 read -r x
83 echo "On U/D:"
84 echo "$soleo"
85 echo ""
86 if [ "$nht" != "$neo" ] || [ "$lht" != "$leo" ]; then
87 echo "Breaking EO:"
88 echo "$solht"
89 echo ""
90 fi
91 echo "On R/L:"
92 echo "$soleolr"
93 echo ""
94 if [ "$nhtlr" != "$neolr" ] || [ "$lhtlr" != "$leolr" ]; then
95 echo "Breaking EO:"
96 echo "$solhtlr"
97 echo ""
98 fi
99 printf '\n%s' "$prompt"
100 read -r x
101 done
102}
103
104practice_htr() {
105 nextscr="$(${nissy} scramble dr)"
106 while true; do
107 scr="$nextscr"
108 echo "Scramble: $scr"
109 nextscr="$(${nissy} scramble dr)"
110 sol="$(${nissy} solve -o -p htr "$scr")"
111 nsol="$(echo "$sol" | grep -v '^$' | wc -l)"
112 len="$(echo "$sol" | head -n 1 | wc -w)"
113 fin="$(${nissy} solve -o -p drfin "$scr")"
114 lenf="$(echo "$fin" | head -n 1 | wc -w)"
115 slice="$(${nissy} solve -o -p drslice "$scr")"
116 lens="$(echo "$slice" | head -n 1 | wc -w)"
117 read -r x
118 echo "$len moves ($nsol solutions)"
119 read -r x
120 echo "$sol"
121 if [ "$lenf" != "$lens" ]; then
122 echo ""
123 echo "Optimal leave slice ($lens):"
124 echo "$slice"
125 fi
126 echo ""
127 echo "Optimal DR finish ($lenf):"
128 echo "$fin"
129 printf '\n%s' "$prompt"
130 read -r x
131 done
132}
133
134practice_fin() {
135 nextscr="$(${nissy} scramble htr)"
136 while true; do
137 scr="$nextscr"
138 echo "Scramble: $scr"
139 nextscr="$(${nissy} scramble htr)"
140 sol="$(${nissy} solve -o -p drudslice "$scr")"
141 nsol="$(echo "$sol" | grep -v '^$' | wc -l)"
142 len="$(echo "$sol" | head -n 1 | wc -w)"
143 fin="$(${nissy} solve -o -p drudfin "$scr")"
144 nfin="$(echo "$fin" | grep -v '^$' | wc -l)"
145 lenf="$(echo "$fin" | head -n 1 | wc -w)"
146 opt="$(${nissy} solve -o -p "$scr")"
147 leno="$(echo "$opt" | head -n 1 | wc -w)"
148 read -r x
149 echo "Leave slice: $len moves ($nsol solutions)"
150 if [ "$lenf" != "$len" ]; then
151 echo "DR finish: $lenf moves"
152 fi
153 read -r x
154 echo "$sol"
155 if [ "$lenf" != "$len" ]; then
156 echo ""
157 echo "Optimal DR finish ($lenf):"
158 echo "$fin"
159 fi
160 if [ "$leno" != "$lenf" ]; then
161 echo ""
162 echo "Optimal DR-breaking ($leno):"
163 echo "$opt"
164 fi
165 printf '\n%s' "$prompt"
166 read -r x
167 done
168}
169
170"practice_$1" || usage

Generated with cgit - Back to sebastiano.tronto.net