package main import ( "aphopkins/radix_info/factors" "fmt" "io" "strconv" "strings" ) func writeDigitMap(w io.Writer, digitMap []factors.DigitType) { if len(digitMap) <= 2 { panic("Radices cannot be less than 2!") } else if len(digitMap) <= 36 { writeDigitMapSmall(w, digitMap) } } // Prints a digit map suitable for small bases (≤36). func writeDigitMapSmall(w io.Writer, digitMap []factors.DigitType) { radix := uint(len(digitMap)) digitsString := strings.Builder{} digitsString.Grow(int(3*radix + 6)) digitsString.WriteString("Digit:") typesString := strings.Builder{} typesString.WriteString("Class:") for digit, digitType := range digitMap { 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.Fprintln(w, digitsString.String()) fmt.Fprintln(w, typesString.String()) }