mirror of https://github.com/01-edu/public.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
71 lines
1.4 KiB
71 lines
1.4 KiB
package main |
|
|
|
import ( |
|
"fmt" |
|
|
|
student "student" |
|
|
|
"github.com/01-edu/public/go/tests/base" |
|
"github.com/01-edu/public/go/tests/lib" |
|
) |
|
|
|
func printNbrBase(n int, b string) { |
|
if base.IsValid(b) { |
|
length := len(b) |
|
sign := 1 |
|
rbase := []rune(b) |
|
if n < 0 { |
|
fmt.Print("-") |
|
sign = -1 |
|
} |
|
if n < length && n >= 0 { |
|
fmt.Printf("%c", rbase[n]) |
|
} else { |
|
printNbrBase(sign*(n/length), b) |
|
fmt.Printf("%c", rbase[sign*(n%length)]) |
|
} |
|
} else { |
|
fmt.Print("NV") |
|
} |
|
} |
|
|
|
func main() { |
|
type node struct { |
|
n int |
|
base string |
|
} |
|
|
|
table := []node{} |
|
|
|
// 15 random pairs of ints with valid bases |
|
for i := 0; i < 15; i++ { |
|
validBaseToInput := base.Valid() |
|
val := node{ |
|
n: lib.RandIntBetween(-1000000, 1000000), |
|
base: validBaseToInput, |
|
} |
|
table = append(table, val) |
|
} |
|
|
|
// 15 random pairs of ints with invalid bases |
|
for i := 0; i < 15; i++ { |
|
invalidBaseToInput := base.Invalid() |
|
val := node{ |
|
n: lib.RandIntBetween(-1000000, 1000000), |
|
base: invalidBaseToInput, |
|
} |
|
table = append(table, val) |
|
} |
|
|
|
table = append(table, |
|
node{n: 125, base: "0123456789"}, |
|
node{n: -125, base: "01"}, |
|
node{n: 125, base: "0123456789ABCDEF"}, |
|
node{n: -125, base: "choumi"}, |
|
node{n: 125, base: "-ab"}, |
|
node{n: lib.MinInt, base: "0123456789"}, |
|
) |
|
for _, arg := range table { |
|
lib.Challenge("PrintNbrBase", student.PrintNbrBase, printNbrBase, arg.n, arg.base) |
|
} |
|
}
|
|
|