52: permuted multiples

This commit is contained in:
VicRen
2020-11-29 08:25:18 +08:00
parent 894922820a
commit e06692fa96
2 changed files with 84 additions and 0 deletions

View File

@@ -0,0 +1,52 @@
package main
import (
"fmt"
"strconv"
"strings"
)
func main() {
i := 10
for {
if isSameDigits([6]int{i, 2 * i, 3 * i, 4 * i, 5 * i, 6 * i}) {
break
}
i++
}
fmt.Println("i=", i)
}
func isSameDigits(value [6]int) bool {
last := 0
for i, n := range value {
x := sortInt(n)
if i == 0 {
last = x
} else if x != last {
return false
}
}
return true
}
func sortInt(input int) int {
swapped, _ := strconv.Atoi(bubbleSort(strconv.Itoa(input)))
return swapped
}
func bubbleSort(word string) string {
wordtable := strings.Split(word, "")
for j := 0; j < len(word); j++ {
for i := 0; i < len(word)-1; i++ {
if wordtable[i] < wordtable[i+1] {
temp := wordtable[i]
wordtable[i] = wordtable[i+1]
wordtable[i+1] = temp
}
}
}
return strings.Join(wordtable, "")
}

View File

@@ -0,0 +1,32 @@
package main
import "testing"
func Test_isSameDigits(t *testing.T) {
type args struct {
value [6]int
}
tests := []struct {
name string
args args
want bool
}{
{
"test1",
args{[6]int{2, 4, 6, 8, 10, 12}},
false,
},
{
"test2",
args{[6]int{142857, 285714, 428571, 571428, 714285, 857142}},
true,
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
if got := isSameDigits(tt.args.value); got != tt.want {
t.Errorf("isSameDigits() = %v, want %v", got, tt.want)
}
})
}
}