public

Solution written in Go for challenge 2012-03-23 on ProgrammingPraxis.com

  • Download Gist
challenge-2012-03-23.go
Go
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
// Exercise from: http://programmingpraxis.com/2012/03/23/base-26-arithmetic/
// Exercise: Write a function that takes two base-26 numbers in which digits are represented by letters with A=0, B=1, … Z=25 and returns their product using the same notation. As an example, CSGHJ × CBA = FNEUZJA.
 
package main
 
import (
"fmt"
"math"
)
 
func main() {
fmt.Println("base26Multiply('CSGHJ', 'CBA'):", base26Multiply("CSGHJ", "CBA"))
}
 
func base26Multiply(a, b string) string {
return base10ToBase26(base26ToBase10(a) * base26ToBase10(b))
}
 
func base26ToBase10(a string) (number int) {
for index, value := range a {
number += int(float64(value-65) * math.Pow(26, float64(len(a)-index-1)))
}
 
return
}
 
func base10ToBase26(number int) (converted string) {
for number > 0 {
remainder := number % 26
converted = string(remainder+65) + converted
number = (number - remainder) / 26
}
 
return
}

Console output:

$ go run challenge-2012-03-23.go
base26Multiply('CSGHJ', 'CBA'): FNEUZJA

Please sign in to comment on this gist.

Something went wrong with that request. Please try again.