diff options
| author | Adrien Hopkins <adrien.p.hopkins@gmail.com> | 2023-08-30 15:20:43 -0500 |
|---|---|---|
| committer | Adrien Hopkins <adrien.p.hopkins@gmail.com> | 2023-08-30 15:20:43 -0500 |
| commit | 347e49fba8dc1f9ec01c18fe35628a35e1432f1e (patch) | |
| tree | 8800d78306fb764b5f39b763a2820c75ace4994f | |
| parent | 45d7d682c7e9676802fb21e74e47a3c7cca30e19 (diff) | |
Add colours to digit map output
| -rw-r--r-- | print_digit_map.go | 37 |
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" +} |
