aboutsummaryrefslogtreecommitdiff
path: root/practice
blob: 4e1126c4f455291e463ba7266ed0878b299a7a8c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
#!/bin/sh

# Script based on nissy (see https://nissy.tronto.net) to practice FMC

# Usage: practice [eo|dr|htr|slice]

nissy="nissy"
prompt="Press enter for a new scramble, Ctr+C (or Ctrl+Z) to quit:"

usage() {
	echo "Usage: practice [eo|dr|htr|slice]"
	exit 1
}

practice_eo() {
	nextscr="$(${nissy} scramble)"
	while true; do
		scr="$nextscr"
		echo "Scramble: $scr"
		nextscr="$(${nissy} scramble)"
		eofb="$(${nissy} solve -N -M 4 eofb -p "$scr")"
		eorl="$(${nissy} solve -N -M 4 eorl -p "$scr")"
		eoud="$(${nissy} solve -N -M 4 eoud -p "$scr")"
		nfbn="$(echo "$eofb" | grep -v '^$' | grep -Fv '(' | wc -l)"
		nrln="$(echo "$eorl" | grep -v '^$' | grep -Fv '(' | wc -l)"
		nudn="$(echo "$eoud" | grep -v '^$' | grep -Fv '(' | wc -l)"
		nfbi="$(echo "$eofb" | grep '^(' | wc -l)"
		nrli="$(echo "$eorl" | grep '^(' | wc -l)"
		nudi="$(echo "$eoud" | grep '^(' | wc -l)"
		nfbniss="$(echo "$eofb" | grep -v '^(' | grep '(' | wc -l)"
		nrlniss="$(echo "$eorl" | grep -v '^(' | grep '(' | wc -l)"
		nudniss="$(echo "$eoud" | grep -v '^(' | grep '(' | wc -l)"
		nfb="$((nfbn + nfbi + nfbniss))"
		nrl="$((nrln + nrli + nrlniss))"
		nud="$((nudn + nudi + nudniss))"
		read -r x
		echo "FB: $nfb ($nfbn normal, $nfbi inverse, $nfbniss niss)"
		echo "RL: $nrl ($nrln normal, $nrli inverse, $nrlniss niss)"
		echo "UD: $nud ($nudn normal, $nudi inverse, $nudniss niss)"
		read -r x
		echo "$eofb"
		echo "---"
		echo "$eorl"
		echo "---"
		echo "$eoud"
		printf '\n%s' "$prompt"
		read -r x
	done
}

dr_scramble() {
	d="9"
	min="4"
	max="7"
	while true; do
		eo="$(tr -cd 'UDRL' < /dev/random | fold -w "$d" | head -n 1)"
		sol="$(${nissy} solve -p drud-eofb "$eo")"
		len="$(echo "$sol" | wc -w)"
		if [ "$len" -ge "$min" ] && [ "$len" -le "$max" ]; then
			break
		fi
	done
	${nissy} solve drud -p -m $((d + 1)) "$eo"
}

practice_dr() {
	nextscr="$(dr_scramble)"
	while true; do
		scr="$nextscr"
		echo "Scramble: $scr"
		nextscr="$(dr_scramble)"
		soleo="$(${nissy} solve -o -p drud-eofb "$scr")"
		neo="$(echo "$soleo" | grep -v '^$' | wc -l)"
		leo="$(echo "$soleo" | head -n 1 | wc -w)"
		solht="$(${nissy} solve -o -p drud "$scr")"
		nht="$(echo "$soleo" | grep -v '^$' | wc -l)"
		lht="$(echo "$soleo" | head -n 1 | wc -w)"
		read -r x
		echo "$leo moves ($neo solutions)"
		if [ "$nht" != "$neo" ] || [ "$lht" != "$leo" ]; then
			echo "Breaking EO: $lht moves ($nht solutions)"
		fi
		read -r x
		echo "$soleo"
		if [ "$nht" != "$neo" ] || [ "$lht" != "$leo" ]; then
			echo "$solht"
		fi
		printf '\n%s' "$prompt"
		read -r x
	done
}

practice_htr() {
	nextscr="$(${nissy} scramble dr)"
	while true; do
		scr="$nextscr"
		echo "Scramble: $scr"
		nextscr="$(${nissy} scramble dr)"
		sol="$(${nissy} solve -o -p htr "$scr")"
		nsol="$(echo "$sol" | grep -v '^$' | wc -l)"
		len="$(echo "$sol" | head -n 1 | wc -w)"
		read -r x
		echo "$len moves ($nsol solutions)"
		read -r x
		echo "$sol"
		printf '\n%s' "$prompt"
		read -r x
	done
}

practice_slice() {
	nextscr="$(${nissy} scramble htr)"
	while true; do
		scr="$nextscr"
		echo "Scramble: $scr"
		nextscr="$(${nissy} scramble htr)"
		sol="$(${nissy} solve -o -p drudslice "$scr")"
		nsol="$(echo "$sol" | grep -v '^$' | wc -l)"
		len="$(echo "$sol" | head -n 1 | wc -w)"
		read -r x
		echo "$len moves ($nsol solutions)"
		read -r x
		echo "$sol"
		printf '\n%s' "$prompt"
		read -r x
	done
}

"practice_$1" || usage

Generated with cgit - Back to sebastiano.tronto.net