diff options
| author | Adrien Hopkins <adrien.p.hopkins@gmail.com> | 2023-08-30 14:27:19 -0500 |
|---|---|---|
| committer | Adrien Hopkins <adrien.p.hopkins@gmail.com> | 2023-08-30 14:29:52 -0500 |
| commit | 45d7d682c7e9676802fb21e74e47a3c7cca30e19 (patch) | |
| tree | 5895cf21c4a79931f0518f161ab9bd705e22426d | |
| parent | 778220b2e3ce662e733727fb9a560fcfe85c19eb (diff) | |
Print digit map to stdout
| -rw-r--r-- | print_digit_map.go | 37 | ||||
| -rw-r--r-- | radix_info.go | 1 |
2 files changed, 38 insertions, 0 deletions
diff --git a/print_digit_map.go b/print_digit_map.go new file mode 100644 index 0000000..356ca37 --- /dev/null +++ b/print_digit_map.go @@ -0,0 +1,37 @@ +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()) +} diff --git a/radix_info.go b/radix_info.go index 1a8cccb..20cbc20 100644 --- a/radix_info.go +++ b/radix_info.go @@ -32,6 +32,7 @@ func main() { float32(n)*float32(n-2)) } fmt.Printf("Natural Logarithm: %.2f\n", math.Log(float64(n))) + writeDigitMap(os.Stdout, factors.DigitMap(n)) } else { fmt.Println("Argument must be an integer above 1.") } |
