-
Notifications
You must be signed in to change notification settings - Fork 0
/
getcol
102 lines (100 loc) · 1.53 KB
/
getcol
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
#!/bin/bash
function getcol(){
if [ $# == 3 ]; then
echo "$((($1 % 6)* 36 + ($2 % 6) * 6 + ($3 % 6) + 16))"
elif [ $# == 2 ]; then
if [ $2 == 0 ]; then
echo "0"
return
fi
v="$((($2 % 8)))"
case "$1" in
r|R) if [[ $v == 4 ]]; then
v=1
elif [[ $v == 7 ]]; then
v=9
else
if [[ $v -gt 4 ]]; then
v=$((v - 1))
fi
v=$(getcol $v 0 0)
fi
;;
g|G) if [[ $v == 4 ]]; then
v=2
elif [[ $v == 7 ]]; then
v=10
else
if [[ $v -gt 4 ]]; then
v=$((v - 1))
fi
v=$(getcol 0 $v 0)
fi
;;
b|B) if [[ $v == 4 ]]; then
v=4
elif [[ $v == 7 ]]; then
v=12
else
if [[ $v -gt 4 ]]; then
v=$((v - 1))
fi
v=$(getcol 0 0 $v)
fi
;;
y|Y) if [[ $v == 4 ]]; then
v=3
elif [[ $v == 7 ]]; then
v=11
else
if [[ $v -gt 4 ]]; then
v=$((v - 1))
fi
v=$(getcol $v $v 0)
fi
;;
c|C) if [[ $v == 4 ]]; then
v=6
elif [[ $v == 7 ]]; then
v=14
else
if [[ $v -gt 4 ]]; then
v=$((v - 1))
fi
v=$(getcol 0 $v $v)
fi
;;
m|M) if [[ $v == 4 ]]; then
v=5
elif [[ $v == 7 ]]; then
v=13
else
if [[ $v -gt 4 ]]; then
v=$((v - 1))
fi
v=$(getcol $v 0 $v)
fi
;;
w|W|x|X) v="$(($2 % 28))"
if [[ $v == 7 ]]; then
v=8
elif [[ $v == 21 ]]; then
v=7
elif [[ $v == 27 ]]; then
v=15
else
if [[ $v -gt 21 ]]; then
v=$((v - 2))
elif [[ $v -gt 7 ]]; then
v=$((v - 1))
fi
v=$((v + 231))
fi
;;
*) v=0
;;
esac
echo "$v"
fi
}
getcol $*