From 347e49fba8dc1f9ec01c18fe35628a35e1432f1e Mon Sep 17 00:00:00 2001 From: Adrien Hopkins Date: Wed, 30 Aug 2023 15:20:43 -0500 Subject: Add colours to digit map output --- print_digit_map.go | 37 +++++++++++++++++++++++++++++++++++-- 1 file 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" +} -- cgit v1.2.3