summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAdrien Hopkins <adrien.p.hopkins@gmail.com>2023-09-04 19:53:20 -0500
committerAdrien Hopkins <adrien.p.hopkins@gmail.com>2023-09-04 19:53:20 -0500
commitd034179fde42c4fc633b98fef6e84c2e0d1c2834 (patch)
treea9969a5ab054d4db50d6eb18f9710af5855c60fa
parenta663fa77cde6ad48f29abd6973211c179ff32464 (diff)
Add ability to show full digit maps
Full digit maps will show every digit from 0 to 35, regardless of the radix. This allows you to see extra fractions for small radices and to get a digit map for radices above 36. This isn't enabled by default because the extra "digits" added for small radices aren't actually digits - so it may be unintuitive. There are also some situations where only a radix's actual digits matter, such as multiplication tables.
-rw-r--r--args.go4
-rw-r--r--factor_info.go9
-rw-r--r--radix_info.go2
3 files changed, 12 insertions, 3 deletions
diff --git a/args.go b/args.go
index 10c28b1..f2ede5d 100644
--- a/args.go
+++ b/args.go
@@ -13,6 +13,7 @@ const ProgramVersion = "1.0.0-alpha+dev"
type args struct {
Radix uint
Compact bool
+ FullMap bool
// If true, exit the program immediately after parsing args.
Exit bool
}
@@ -20,6 +21,9 @@ type args struct {
func parseArgs() (args, error) {
var a args
flag.BoolVar(&a.Compact, "c", false, "Compact the output display")
+ flag.BoolVar(&a.FullMap, "f", false,
+ fmt.Sprintf("Show full digit map (up to %d) for every radix",
+ maxSmallRadix))
help := flag.Bool("?", false,
"Get information about program usage then exit")
version := flag.Bool("V", false,
diff --git a/factor_info.go b/factor_info.go
index b6a4a3d..f908b9b 100644
--- a/factor_info.go
+++ b/factor_info.go
@@ -49,7 +49,7 @@ type FactorInfo struct {
DigitMap []factors.DigitType
}
-func GetFactorInfo(radix uint) *FactorInfo {
+func GetFactorInfo(radix uint, fullMap bool) *FactorInfo {
r_factors := factors.Factors(radix)
slices.Sort(r_factors)
@@ -66,7 +66,12 @@ func GetFactorInfo(radix uint) *FactorInfo {
}
var digitMap []factors.DigitType
- if radix <= maxSmallRadix {
+ if fullMap {
+ digitMap = make([]factors.DigitType, maxSmallRadix)
+ for d := 0; d < maxSmallRadix; d++ {
+ digitMap[d] = factors.GetDigitType(uint(d), radix)
+ }
+ } else if radix <= maxSmallRadix {
digitMap = factors.DigitMap(radix)
} else {
digitMap = []factors.DigitType{}
diff --git a/radix_info.go b/radix_info.go
index fb1caef..0500a33 100644
--- a/radix_info.go
+++ b/radix_info.go
@@ -12,7 +12,7 @@ func main() {
}
if err == nil {
- factorInfo := GetFactorInfo(args.Radix)
+ factorInfo := GetFactorInfo(args.Radix, args.FullMap)
if args.Compact {
factorInfo.WriteToCompact(os.Stdout)
} else {