summaryrefslogtreecommitdiff
path: root/print_digit_map.go
diff options
context:
space:
mode:
authorAdrien Hopkins <adrien.p.hopkins@gmail.com>2023-08-30 15:20:43 -0500
committerAdrien Hopkins <adrien.p.hopkins@gmail.com>2023-08-30 15:20:43 -0500
commit347e49fba8dc1f9ec01c18fe35628a35e1432f1e (patch)
tree8800d78306fb764b5f39b763a2820c75ace4994f /print_digit_map.go
parent45d7d682c7e9676802fb21e74e47a3c7cca30e19 (diff)
Add colours to digit map output
Diffstat (limited to 'print_digit_map.go')
-rw-r--r--print_digit_map.go37
1 files changed, 35 insertions, 2 deletions
diff --git a/print_digit_map.go b/print_digit_map.go
index 356ca37..d4f7f3d 100644
--- a/print_digit_map.go
+++ b/print_digit_map.go
@@ -28,10 +28,43 @@ func writeDigitMapSmall(w io.Writer, digitMap []factors.DigitType) {
digitString := fmt.Sprintf("%2s", strings.ToUpper(
strconv.FormatUint(uint64(digit), int(radix))))
typeString := digitType.String()
- fmt.Fprintf(&digitsString, " %s", digitString)
- fmt.Fprintf(&typesString, " %s", typeString)
+ fmt.Fprintf(&digitsString, " %s", colourString(digitString, digitType))
+ fmt.Fprintf(&typesString, " %s", colourString(typeString, digitType))
}
fmt.Fprintln(w, digitsString.String())
fmt.Fprintln(w, typesString.String())
}
+
+func colourString(s string, digitType factors.DigitType) string {
+ var colourBegin string
+ switch digitType.TotativeType() {
+ case factors.Regular:
+ switch digitType.Regularity() {
+ case 0:
+ colourBegin = "\x1B[48;5;5m" // special cases (1)
+ case 1:
+ colourBegin = "\x1B[48;5;4m" // factors
+ case 2:
+ colourBegin = "\x1B[48;5;6m" // 2-regulars
+ default:
+ colourBegin = "\x1B[48;5;2m" // other regulars
+ }
+ case factors.Neighbour:
+ if digitType.Regularity() == 0 {
+ colourBegin = "\x1B[48;5;198m" // neighbourly totatives
+ } else {
+ colourBegin = "\x1B[48;5;136m" // neighbourly semitotatives
+ }
+ case factors.Opaque:
+ if digitType.Regularity() == 0 {
+ colourBegin = "\x1B[48;5;1m" // opaque totatives
+ } else {
+ colourBegin = "\x1B[48;5;130m" // opaque semitotatives
+ }
+ default:
+ colourBegin = "\x1B[48;5;5m" // special cases (0)
+ }
+
+ return colourBegin + "\x1B[38;5;15m" + s + "\x1B[0m"
+}