aboutsummaryrefslogtreecommitdiff
path: root/practice
diff options
context:
space:
mode:
Diffstat (limited to '')
-rwxr-xr-xpractice116
1 files changed, 78 insertions, 38 deletions
diff --git a/practice b/practice
index 8c7c450..4e1126c 100755
--- a/practice
+++ b/practice
@@ -2,21 +2,25 @@
2 2
3# Script based on nissy (see https://nissy.tronto.net) to practice FMC 3# Script based on nissy (see https://nissy.tronto.net) to practice FMC
4 4
5# Usage: practice [eo|htr|slice] 5# Usage: practice [eo|dr|htr|slice]
6
7nissy="nissy"
8prompt="Press enter for a new scramble, Ctr+C (or Ctrl+Z) to quit:"
6 9
7usage() { 10usage() {
8 echo "Usage: practice [eo|htr|slice]" 11 echo "Usage: practice [eo|dr|htr|slice]"
12 exit 1
9} 13}
10 14
11eo() { 15practice_eo() {
12 nextscr="$(nissy scramble)" 16 nextscr="$(${nissy} scramble)"
13 while true; do 17 while true; do
14 scr="$nextscr" 18 scr="$nextscr"
15 nextscr="$(nissy scramble)" 19 echo "Scramble: $scr"
16 echo "$scr" 20 nextscr="$(${nissy} scramble)"
17 eofb="$(nissy solve -N -M 4 eofb -p "$scr")" 21 eofb="$(${nissy} solve -N -M 4 eofb -p "$scr")"
18 eorl="$(nissy solve -N -M 4 eorl -p "$scr")" 22 eorl="$(${nissy} solve -N -M 4 eorl -p "$scr")"
19 eoud="$(nissy solve -N -M 4 eoud -p "$scr")" 23 eoud="$(${nissy} solve -N -M 4 eoud -p "$scr")"
20 nfbn="$(echo "$eofb" | grep -v '^$' | grep -Fv '(' | wc -l)" 24 nfbn="$(echo "$eofb" | grep -v '^$' | grep -Fv '(' | wc -l)"
21 nrln="$(echo "$eorl" | grep -v '^$' | grep -Fv '(' | wc -l)" 25 nrln="$(echo "$eorl" | grep -v '^$' | grep -Fv '(' | wc -l)"
22 nudn="$(echo "$eoud" | grep -v '^$' | grep -Fv '(' | wc -l)" 26 nudn="$(echo "$eoud" | grep -v '^$' | grep -Fv '(' | wc -l)"
@@ -39,51 +43,87 @@ eo() {
39 echo "$eorl" 43 echo "$eorl"
40 echo "---" 44 echo "---"
41 echo "$eoud" 45 echo "$eoud"
46 printf '\n%s' "$prompt"
42 read -r x 47 read -r x
43 done 48 done
44} 49}
45 50
46htr() { 51dr_scramble() {
47 nextscr="$(nissy scramble dr)" 52 d="9"
53 min="4"
54 max="7"
55 while true; do
56 eo="$(tr -cd 'UDRL' < /dev/random | fold -w "$d" | head -n 1)"
57 sol="$(${nissy} solve -p drud-eofb "$eo")"
58 len="$(echo "$sol" | wc -w)"
59 if [ "$len" -ge "$min" ] && [ "$len" -le "$max" ]; then
60 break
61 fi
62 done
63 ${nissy} solve drud -p -m $((d + 1)) "$eo"
64}
65
66practice_dr() {
67 nextscr="$(dr_scramble)"
48 while true; do 68 while true; do
49 scr="$nextscr" 69 scr="$nextscr"
50 nextscr="$(nissy scramble dr)" 70 echo "Scramble: $scr"
51 echo "$scr" 71 nextscr="$(dr_scramble)"
72 soleo="$(${nissy} solve -o -p drud-eofb "$scr")"
73 neo="$(echo "$soleo" | grep -v '^$' | wc -l)"
74 leo="$(echo "$soleo" | head -n 1 | wc -w)"
75 solht="$(${nissy} solve -o -p drud "$scr")"
76 nht="$(echo "$soleo" | grep -v '^$' | wc -l)"
77 lht="$(echo "$soleo" | head -n 1 | wc -w)"
52 read -r x 78 read -r x
53 nissy solve -o htr "$scr" 79 echo "$leo moves ($neo solutions)"
80 if [ "$nht" != "$neo" ] || [ "$lht" != "$leo" ]; then
81 echo "Breaking EO: $lht moves ($nht solutions)"
82 fi
83 read -r x
84 echo "$soleo"
85 if [ "$nht" != "$neo" ] || [ "$lht" != "$leo" ]; then
86 echo "$solht"
87 fi
88 printf '\n%s' "$prompt"
54 read -r x 89 read -r x
55 done 90 done
56} 91}
57 92
58slice() { 93practice_htr() {
59 nextscr="$(nissy scramble htr)" 94 nextscr="$(${nissy} scramble dr)"
60 while true; do 95 while true; do
61 scr="$nextscr" 96 scr="$nextscr"
62 nextscr="$(nissy scramble htr)" 97 echo "Scramble: $scr"
63 echo "$scr" 98 nextscr="$(${nissy} scramble dr)"
99 sol="$(${nissy} solve -o -p htr "$scr")"
100 nsol="$(echo "$sol" | grep -v '^$' | wc -l)"
101 len="$(echo "$sol" | head -n 1 | wc -w)"
102 read -r x
103 echo "$len moves ($nsol solutions)"
64 read -r x 104 read -r x
65 nissy solve -o drudslice "$scr" 105 echo "$sol"
106 printf '\n%s' "$prompt"
66 read -r x 107 read -r x
67 done 108 done
68} 109}
69 110
70if [ -z "$1" ]; then 111practice_slice() {
71 usage 112 nextscr="$(${nissy} scramble htr)"
72 exit 1 113 while true; do
73fi 114 scr="$nextscr"
115 echo "Scramble: $scr"
116 nextscr="$(${nissy} scramble htr)"
117 sol="$(${nissy} solve -o -p drudslice "$scr")"
118 nsol="$(echo "$sol" | grep -v '^$' | wc -l)"
119 len="$(echo "$sol" | head -n 1 | wc -w)"
120 read -r x
121 echo "$len moves ($nsol solutions)"
122 read -r x
123 echo "$sol"
124 printf '\n%s' "$prompt"
125 read -r x
126 done
127}
74 128
75case "$1" in 129"practice_$1" || usage
76 eo)
77 eo
78 ;;
79 htr)
80 htr
81 ;;
82 slice)
83 slice
84 ;;
85 *)
86 usage
87 exit 1
88 ;;
89esac

Generated with cgit - Back to sebastiano.tronto.net