parent
389867336d
commit
ddc939fe45
@ -1,18 +1,18 @@ |
|||||||
package cap3 |
package cap3 |
||||||
|
|
||||||
type Pair struct { |
type Pair struct { |
||||||
first, second int |
first, second int |
||||||
} |
} |
||||||
|
|
||||||
func Ex23(nums []int) [][]int { |
func Ex23(nums []int) [][]int { |
||||||
countMap := _makeMatrix(10) |
countMap := _makeMatrix(10) |
||||||
|
|
||||||
for _, num1 := range nums { |
for _, num1 := range nums { |
||||||
for _, num2 := range nums { |
for _, num2 := range nums { |
||||||
countMap[num1][num2]++ |
countMap[num1][num2]++ |
||||||
countMap[num2][num1]++ |
countMap[num2][num1]++ |
||||||
} |
} |
||||||
} |
} |
||||||
|
|
||||||
return countMap |
return countMap |
||||||
} |
} |
||||||
|
@ -1,5 +1,5 @@ |
|||||||
package cap3 |
package cap3 |
||||||
|
|
||||||
func Ex24(n int) int { |
func Ex24(n int) int { |
||||||
return 0 |
return 0 |
||||||
} |
} |
||||||
|
@ -1,20 +1,20 @@ |
|||||||
package cap3 |
package cap3 |
||||||
|
|
||||||
func Ex25(studentScore [][]int) int { |
func Ex25(studentScore [][]int) int { |
||||||
studentCount := 0 |
studentCount := 0 |
||||||
for _, scores := range studentScore { |
for _, scores := range studentScore { |
||||||
scoreCount := 0 |
scoreCount := 0 |
||||||
for _, score := range scores { |
for _, score := range scores { |
||||||
if score >= 90 { |
if score >= 90 { |
||||||
scoreCount++ |
scoreCount++ |
||||||
} |
} |
||||||
|
|
||||||
if scoreCount > 3 { |
if scoreCount > 3 { |
||||||
studentCount++ |
studentCount++ |
||||||
break |
break |
||||||
} |
} |
||||||
} |
} |
||||||
} |
} |
||||||
|
|
||||||
return studentCount |
return studentCount |
||||||
} |
} |
||||||
|
@ -1,22 +1,22 @@ |
|||||||
package cap3 |
package cap3 |
||||||
|
|
||||||
func Ex26(n int) []int { |
func Ex26(n int) []int { |
||||||
lights := make([]bool, n) |
lights := make([]bool, n) |
||||||
// 默认值false,实际上意味着第一个人已经把所有灯关了,没必要再操作一遍
|
// 默认值false,实际上意味着第一个人已经把所有灯关了,没必要再操作一遍
|
||||||
// 第i个人,从第二个人开始
|
// 第i个人,从第二个人开始
|
||||||
for i := 2; i <= n; i++ { |
for i := 2; i <= n; i++ { |
||||||
// 编号为i的倍数的灯状态取反
|
// 编号为i的倍数的灯状态取反
|
||||||
for j := 1; i*j <= n; j++ { |
for j := 1; i*j <= n; j++ { |
||||||
lights[i*j-1] = !lights[i*j-1] |
lights[i*j-1] = !lights[i*j-1] |
||||||
} |
} |
||||||
} |
} |
||||||
|
|
||||||
result := make([]int, 0, n) |
result := make([]int, 0, n) |
||||||
for light, on := range lights { |
for light, on := range lights { |
||||||
if on { |
if on { |
||||||
result = append(result, light+1) |
result = append(result, light+1) |
||||||
} |
} |
||||||
} |
} |
||||||
|
|
||||||
return result |
return result |
||||||
} |
} |
||||||
|
@ -1,20 +1,20 @@ |
|||||||
package cap3 |
package cap3 |
||||||
|
|
||||||
func Ex28(nums []int) { |
func Ex28(nums []int) { |
||||||
n := len(nums) |
n := len(nums) |
||||||
for i := 0; i < n-1; i++ { |
for i := 0; i < n-1; i++ { |
||||||
swapped := false |
swapped := false |
||||||
for j := 0; j < n-1-i; j++ { |
for j := 0; j < n-1-i; j++ { |
||||||
if nums[j] < nums[j+1] { |
if nums[j] < nums[j+1] { |
||||||
tmp := nums[j] |
tmp := nums[j] |
||||||
nums[j] = nums[j+1] |
nums[j] = nums[j+1] |
||||||
nums[j+1] = tmp |
nums[j+1] = tmp |
||||||
swapped = true |
swapped = true |
||||||
} |
} |
||||||
} |
} |
||||||
|
|
||||||
if !swapped { |
if !swapped { |
||||||
break |
break |
||||||
} |
} |
||||||
} |
} |
||||||
} |
} |
||||||
|
@ -1,13 +1,13 @@ |
|||||||
package cap3 |
package cap3 |
||||||
|
|
||||||
func Ex29(nums []int) bool { |
func Ex29(nums []int) bool { |
||||||
for _, num1 := range nums { |
for _, num1 := range nums { |
||||||
for _, num2 := range nums { |
for _, num2 := range nums { |
||||||
if num1 == num2 { |
if num1 == num2 { |
||||||
return false |
return false |
||||||
} |
} |
||||||
} |
} |
||||||
} |
} |
||||||
|
|
||||||
return true |
return true |
||||||
} |
} |
||||||
|
@ -1,34 +1,34 @@ |
|||||||
package cap3 |
package cap3 |
||||||
|
|
||||||
func Ex31(a, b, c int) int { |
func Ex31(a, b, c int) int { |
||||||
lcm, maxNum := 0, 0 |
lcm, maxNum := 0, 0 |
||||||
maxNum = max(a, b, c) |
maxNum = max(a, b, c) |
||||||
for i := 2; i <= maxNum; i++ { |
for i := 2; i <= maxNum; i++ { |
||||||
hasDivisible := true |
hasDivisible := true |
||||||
for hasDivisible { |
for hasDivisible { |
||||||
hasDivisible = false |
hasDivisible = false |
||||||
if a%i == 0 { |
if a%i == 0 { |
||||||
a = a / i |
a = a / i |
||||||
hasDivisible = true |
hasDivisible = true |
||||||
} |
} |
||||||
|
|
||||||
if b%i == 0 { |
if b%i == 0 { |
||||||
b = b / i |
b = b / i |
||||||
hasDivisible = true |
hasDivisible = true |
||||||
} |
} |
||||||
|
|
||||||
if c%i == 0 { |
if c%i == 0 { |
||||||
c = c / i |
c = c / i |
||||||
hasDivisible = true |
hasDivisible = true |
||||||
} |
} |
||||||
|
|
||||||
if hasDivisible { |
if hasDivisible { |
||||||
lcm = lcm * i |
lcm = lcm * i |
||||||
} |
} |
||||||
} |
} |
||||||
|
|
||||||
maxNum = max(a, b, c) |
maxNum = max(a, b, c) |
||||||
} |
} |
||||||
|
|
||||||
return lcm |
return lcm |
||||||
} |
} |
||||||
|
@ -1,28 +1,28 @@ |
|||||||
package cap3 |
package cap3 |
||||||
|
|
||||||
func Ex32() int { |
func Ex32() int { |
||||||
for x := 1; x <= 4; x++ { |
for x := 1; x <= 4; x++ { |
||||||
count := 0 |
count := 0 |
||||||
if x != 1 { |
if x != 1 { |
||||||
count++ |
count++ |
||||||
} |
} |
||||||
|
|
||||||
if x == 3 { |
if x == 3 { |
||||||
count++ |
count++ |
||||||
} |
} |
||||||
|
|
||||||
if x == 4 { |
if x == 4 { |
||||||
count++ |
count++ |
||||||
} |
} |
||||||
|
|
||||||
if x != 4 { |
if x != 4 { |
||||||
count++ |
count++ |
||||||
} |
} |
||||||
|
|
||||||
if count == 3 { |
if count == 3 { |
||||||
return x |
return x |
||||||
} |
} |
||||||
} |
} |
||||||
|
|
||||||
return 0 |
return 0 |
||||||
} |
} |
||||||
|
@ -1,24 +1,24 @@ |
|||||||
package cap3 |
package cap3 |
||||||
|
|
||||||
func Ex35(boxNum int, expectWeigh, actualWeigh int) []int { |
func Ex35(boxNum int, expectWeigh, actualWeigh int) []int { |
||||||
result := make([]int, 0) |
result := make([]int, 0) |
||||||
|
|
||||||
// 实际值重量正常重量差 / 10
|
// 实际值重量正常重量差 / 10
|
||||||
w := (expectWeigh - actualWeigh) / 10 |
w := (expectWeigh - actualWeigh) / 10 |
||||||
// w转化为2的幂的和
|
// w转化为2的幂的和
|
||||||
for w != 0 { |
for w != 0 { |
||||||
// k是箱子编号,从0开始, t是2的幂
|
// k是箱子编号,从0开始, t是2的幂
|
||||||
k, t := 0, 1 |
k, t := 0, 1 |
||||||
// 找到最接近w的2的k次方t,当t大于w时结束小循环
|
// 找到最接近w的2的k次方t,当t大于w时结束小循环
|
||||||
for w-t >= 0 { |
for w-t >= 0 { |
||||||
t *= 2 |
t *= 2 |
||||||
// t是2的k次方
|
// t是2的k次方
|
||||||
k++ |
k++ |
||||||
} |
} |
||||||
|
|
||||||
result = append(result, k-1) |
result = append(result, k-1) |
||||||
w -= t / 2 |
w -= t / 2 |
||||||
} |
} |
||||||
|
|
||||||
return result |
return result |
||||||
} |
} |
||||||
|
@ -1,20 +1,20 @@ |
|||||||
package cap3 |
package cap3 |
||||||
|
|
||||||
func Ex36(num int) []int { |
func Ex36(num int) []int { |
||||||
// 用另外一种写法,直接存能整除的数
|
// 用另外一种写法,直接存能整除的数
|
||||||
divNums := make([]int, 0) |
divNums := make([]int, 0) |
||||||
|
|
||||||
if num%3 == 0 { |
if num%3 == 0 { |
||||||
divNums = append(divNums, 3) |
divNums = append(divNums, 3) |
||||||
} |
} |
||||||
|
|
||||||
if num%5 == 0 { |
if num%5 == 0 { |
||||||
divNums = append(divNums, 5) |
divNums = append(divNums, 5) |
||||||
} |
} |
||||||
|
|
||||||
if num%7 == 0 { |
if num%7 == 0 { |
||||||
divNums = append(divNums, 7) |
divNums = append(divNums, 7) |
||||||
} |
} |
||||||
|
|
||||||
return divNums |
return divNums |
||||||
} |
} |
||||||
|
@ -1,24 +1,24 @@ |
|||||||
package cap3 |
package cap3 |
||||||
|
|
||||||
func Ex37(n int) []int { |
func Ex37(n int) []int { |
||||||
var coeff func(nums []int, n int) |
var coeff func(nums []int, n int) |
||||||
coeff = func(nums []int, n int) { |
coeff = func(nums []int, n int) { |
||||||
if n <= 0 { |
if n <= 0 { |
||||||
return |
return |
||||||
} |
} |
||||||
|
|
||||||
// 第一个和最后一个数字肯定是1
|
// 第一个和最后一个数字肯定是1
|
||||||
nums[0] = 1 |
nums[0] = 1 |
||||||
coeff(nums, n-1) |
coeff(nums, n-1) |
||||||
nums[n] = 1 |
nums[n] = 1 |
||||||
|
|
||||||
for i := n - 1; i > 0; i-- { |
for i := n - 1; i > 0; i-- { |
||||||
nums[i] += nums[i-1] |
nums[i] += nums[i-1] |
||||||
} |
} |
||||||
} |
} |
||||||
|
|
||||||
nums := make([]int, n+1) |
nums := make([]int, n+1) |
||||||
coeff(nums, n) |
coeff(nums, n) |
||||||
|
|
||||||
return nums |
return nums |
||||||
} |
} |
||||||
|
@ -1,33 +1,33 @@ |
|||||||
package cap3 |
package cap3 |
||||||
|
|
||||||
func Ex38(k int, nums []int) { |
func Ex38(k int, nums []int) { |
||||||
gcd := func(m, n int) int { |
gcd := func(m, n int) int { |
||||||
a, b := m, n |
a, b := m, n |
||||||
if m < n { |
if m < n { |
||||||
a, b = n, m |
a, b = n, m |
||||||
} |
} |
||||||
|
|
||||||
r := a % b |
r := a % b |
||||||
for r != 0 { |
for r != 0 { |
||||||
a = b |
a = b |
||||||
b = r |
b = r |
||||||
r = a % b |
r = a % b |
||||||
} |
} |
||||||
|
|
||||||
return b |
return b |
||||||
} |
} |
||||||
|
|
||||||
numsLen := len(nums) |
numsLen := len(nums) |
||||||
first, gcdNumb := 0, gcd(numsLen, k) |
first, gcdNumb := 0, gcd(numsLen, k) |
||||||
for i := 0; i < gcdNumb; i++ { |
for i := 0; i < gcdNumb; i++ { |
||||||
first = nums[i] |
first = nums[i] |
||||||
startIdx := i |
startIdx := i |
||||||
for j := 0; j < numsLen/gcdNumb; j++ { |
for j := 0; j < numsLen/gcdNumb; j++ { |
||||||
startIdx = (startIdx + k) % numsLen |
startIdx = (startIdx + k) % numsLen |
||||||
// 交换
|
// 交换
|
||||||
tmp := nums[startIdx] |
tmp := nums[startIdx] |
||||||
nums[startIdx] = first |
nums[startIdx] = first |
||||||
first = tmp |
first = tmp |
||||||
} |
} |
||||||
} |
} |
||||||
} |
} |
||||||
|
@ -1,10 +1,10 @@ |
|||||||
package cap3 |
package cap3 |
||||||
|
|
||||||
func Ex39(a, b, c int) int { |
func Ex39(a, b, c int) int { |
||||||
result := 70*a + 21*b + 15*c |
result := 70*a + 21*b + 15*c |
||||||
for result > 105 { |
for result > 105 { |
||||||
result -= 105 |
result -= 105 |
||||||
} |
} |
||||||
|
|
||||||
return result |
return result |
||||||
} |
} |
||||||
|
@ -1,18 +1,18 @@ |
|||||||
package cap3 |
package cap3 |
||||||
|
|
||||||
func Ex40(n int) int { |
func Ex40(n int) int { |
||||||
var fab func(n int) int |
var fab func(n int) int |
||||||
fab = func(n int) int { |
fab = func(n int) int { |
||||||
if n == 1 { |
if n == 1 { |
||||||
return 1 |
return 1 |
||||||
} |
} |
||||||
|
|
||||||
if n == 2 { |
if n == 2 { |
||||||
return 2 |
return 2 |
||||||
} |
} |
||||||
|
|
||||||
return fab(n-1) + fab(n-2) |
return fab(n-1) + fab(n-2) |
||||||
} |
} |
||||||
|
|
||||||
return fab(n) |
return fab(n) |
||||||
} |
} |
||||||
|
@ -1,247 +1,247 @@ |
|||||||
package cap3 |
package cap3 |
||||||
|
|
||||||
import ( |
import ( |
||||||
"fmt" |
"fmt" |
||||||
"strconv" |
"strconv" |
||||||
"testing" |
"testing" |
||||||
) |
) |
||||||
|
|
||||||
func TestEx1(t *testing.T) { |
func TestEx1(t *testing.T) { |
||||||
fmt.Println(Ex1(1)) |
fmt.Println(Ex1(1)) |
||||||
fmt.Println(Ex1(2)) |
fmt.Println(Ex1(2)) |
||||||
fmt.Println(Ex1(3)) |
fmt.Println(Ex1(3)) |
||||||
fmt.Println(Ex1(4)) |
fmt.Println(Ex1(4)) |
||||||
fmt.Println(Ex1(5)) |
fmt.Println(Ex1(5)) |
||||||
fmt.Println(Ex1(6)) |
fmt.Println(Ex1(6)) |
||||||
fmt.Println(Ex1(7)) |
fmt.Println(Ex1(7)) |
||||||
fmt.Println(Ex1(8)) |
fmt.Println(Ex1(8)) |
||||||
fmt.Println(Ex1(9)) |
fmt.Println(Ex1(9)) |
||||||
} |
} |
||||||
|
|
||||||
func TestEx2(t *testing.T) { |
func TestEx2(t *testing.T) { |
||||||
result := Ex2() |
result := Ex2() |
||||||
for num, factors := range result { |
for num, factors := range result { |
||||||
fmt.Printf("%d's factors are %+v\n", num, factors) |
fmt.Printf("%d's factors are %+v\n", num, factors) |
||||||
} |
} |
||||||
} |
} |
||||||
|
|
||||||
func TestEx3(t *testing.T) { |
func TestEx3(t *testing.T) { |
||||||
matrix := [][]int{ |
matrix := [][]int{ |
||||||
{1, 4, 5, 1}, |
{1, 4, 5, 1}, |
||||||
{8, 9, 6, 7}, |
{8, 9, 6, 7}, |
||||||
{1, 1, 4, 2}, |
{1, 1, 4, 2}, |
||||||
{0, 8, 2, 9}, |
{0, 8, 2, 9}, |
||||||
} |
} |
||||||
|
|
||||||
row, col, val := Ex3(matrix) |
row, col, val := Ex3(matrix) |
||||||
if row != -1 && col != -1 { |
if row != -1 && col != -1 { |
||||||
fmt.Printf("(%d,%d): %d\n", row, col, val) |
fmt.Printf("(%d,%d): %d\n", row, col, val) |
||||||
} |
} |
||||||
} |
} |
||||||
|
|
||||||
func TestEx5(t *testing.T) { |
func TestEx5(t *testing.T) { |
||||||
beadsNum := 5 |
beadsNum := 5 |
||||||
step := 0 |
step := 0 |
||||||
|
|
||||||
fmt.Println("NoneRecursive: ") |
fmt.Println("NoneRecursive: ") |
||||||
Ex5(beadsNum, AlgoTypeNoneRecursion, func(from string, to string) { |
Ex5(beadsNum, AlgoTypeNoneRecursion, func(from string, to string) { |
||||||
step++ |
step++ |
||||||
fmt.Printf("step %d: %s -> %s\n", step, from, to) |
fmt.Printf("step %d: %s -> %s\n", step, from, to) |
||||||
}) |
}) |
||||||
|
|
||||||
fmt.Println("----------------") |
fmt.Println("----------------") |
||||||
|
|
||||||
step = 0 |
step = 0 |
||||||
fmt.Println("Recursive: ") |
fmt.Println("Recursive: ") |
||||||
Ex5(beadsNum, AlgoTypeRecursion, func(from string, to string) { |
Ex5(beadsNum, AlgoTypeRecursion, func(from string, to string) { |
||||||
step++ |
step++ |
||||||
fmt.Printf("step %d: %s -> %s\n", step, from, to) |
fmt.Printf("step %d: %s -> %s\n", step, from, to) |
||||||
}) |
}) |
||||||
} |
} |
||||||
|
|
||||||
func TestEx6(t *testing.T) { |
func TestEx6(t *testing.T) { |
||||||
prev := 0 |
prev := 0 |
||||||
Ex6RecursionOutput(6, func(dividedNums []int) { |
Ex6RecursionOutput(6, func(dividedNums []int) { |
||||||
for i, num := range dividedNums { |
for i, num := range dividedNums { |
||||||
if i == 0 { |
if i == 0 { |
||||||
if prev != num { |
if prev != num { |
||||||
prev = num |
prev = num |
||||||
fmt.Println() |
fmt.Println() |
||||||
} |
} |
||||||
fmt.Printf("%d", num) |
fmt.Printf("%d", num) |
||||||
} else { |
} else { |
||||||
fmt.Printf("+%d", num) |
fmt.Printf("+%d", num) |
||||||
} |
} |
||||||
} |
} |
||||||
|
|
||||||
fmt.Print("\t\t\t") |
fmt.Print("\t\t\t") |
||||||
}) |
}) |
||||||
|
|
||||||
fmt.Println() |
fmt.Println() |
||||||
fmt.Println("------------") |
fmt.Println("------------") |
||||||
|
|
||||||
result := Ex6Recursion(6) |
result := Ex6Recursion(6) |
||||||
fmt.Println(result) |
fmt.Println(result) |
||||||
|
|
||||||
result = Ex6NoneRecursion(6) |
result = Ex6NoneRecursion(6) |
||||||
fmt.Println(result) |
fmt.Println(result) |
||||||
} |
} |
||||||
|
|
||||||
func TestEx7(t *testing.T) { |
func TestEx7(t *testing.T) { |
||||||
num := uint64(123456) |
num := uint64(123456) |
||||||
Ex7(num, AlgoTypeNoneRecursion, func(digit uint8) { |
Ex7(num, AlgoTypeNoneRecursion, func(digit uint8) { |
||||||
fmt.Printf("%d ", digit) |
fmt.Printf("%d ", digit) |
||||||
}) |
}) |
||||||
fmt.Println() |
fmt.Println() |
||||||
|
|
||||||
Ex7(num, AlgoTypeRecursion, func(digit uint8) { |
Ex7(num, AlgoTypeRecursion, func(digit uint8) { |
||||||
fmt.Printf("%d ", digit) |
fmt.Printf("%d ", digit) |
||||||
}) |
}) |
||||||
fmt.Println() |
fmt.Println() |
||||||
} |
} |
||||||
|
|
||||||
func TestEx8(t *testing.T) { |
func TestEx8(t *testing.T) { |
||||||
num := uint64(123456) |
num := uint64(123456) |
||||||
Ex8(num, AlgoTypeNoneRecursion, func(digit uint8) { |
Ex8(num, AlgoTypeNoneRecursion, func(digit uint8) { |
||||||
fmt.Printf("%d ", digit) |
fmt.Printf("%d ", digit) |
||||||
}) |
}) |
||||||
fmt.Println() |
fmt.Println() |
||||||
|
|
||||||
Ex8(num, AlgoTypeRecursion, func(digit uint8) { |
Ex8(num, AlgoTypeRecursion, func(digit uint8) { |
||||||
fmt.Printf("%d ", digit) |
fmt.Printf("%d ", digit) |
||||||
}) |
}) |
||||||
fmt.Println() |
fmt.Println() |
||||||
} |
} |
||||||
|
|
||||||
func TestEx9(t *testing.T) { |
func TestEx9(t *testing.T) { |
||||||
bits := Ex9t1(137) |
bits := Ex9t1(137) |
||||||
fmt.Printf("%d=", 137) |
fmt.Printf("%d=", 137) |
||||||
for i, bit := range bits { |
for i, bit := range bits { |
||||||
if bit { |
if bit { |
||||||
fmt.Printf("2^%d + ", i) |
fmt.Printf("2^%d + ", i) |
||||||
} |
} |
||||||
} |
} |
||||||
|
|
||||||
println() |
println() |
||||||
|
|
||||||
pows := Ex9t2(137) |
pows := Ex9t2(137) |
||||||
fmt.Printf("%d=", 137) |
fmt.Printf("%d=", 137) |
||||||
for _, pow := range pows { |
for _, pow := range pows { |
||||||
fmt.Printf("2^%d + ", pow) |
fmt.Printf("2^%d + ", pow) |
||||||
} |
} |
||||||
|
|
||||||
println() |
println() |
||||||
} |
} |
||||||
|
|
||||||
func TestEx10(t *testing.T) { |
func TestEx10(t *testing.T) { |
||||||
Ex10(5, 3, func(nums []int) { |
Ex10(5, 3, func(nums []int) { |
||||||
fmt.Printf("%+v\n", nums) |
fmt.Printf("%+v\n", nums) |
||||||
}) |
}) |
||||||
} |
} |
||||||
|
|
||||||
func TestEx14(t *testing.T) { |
func TestEx14(t *testing.T) { |
||||||
num := uint64(8734112) |
num := uint64(8734112) |
||||||
Ex14StrInput(strconv.FormatUint(num, 10), func(str string) { |
Ex14StrInput(strconv.FormatUint(num, 10), func(str string) { |
||||||
fmt.Printf("%s-", str) |
fmt.Printf("%s-", str) |
||||||
}) |
}) |
||||||
fmt.Println() |
fmt.Println() |
||||||
|
|
||||||
Ex14NumInput(num, func(str string) { |
Ex14NumInput(num, func(str string) { |
||||||
fmt.Printf("%s-", str) |
fmt.Printf("%s-", str) |
||||||
}) |
}) |
||||||
fmt.Println() |
fmt.Println() |
||||||
} |
} |
||||||
|
|
||||||
func TestEx15(t *testing.T) { |
func TestEx15(t *testing.T) { |
||||||
result := Ex15(60, 70) |
result := Ex15(60, 70) |
||||||
for cash, cashNum := range result { |
for cash, cashNum := range result { |
||||||
fmt.Printf("%d->%d, ", cashes[cash], cashNum) |
fmt.Printf("%d->%d, ", cashes[cash], cashNum) |
||||||
} |
} |
||||||
fmt.Println() |
fmt.Println() |
||||||
|
|
||||||
result = Ex15(60, 100) |
result = Ex15(60, 100) |
||||||
for cash, cashNum := range result { |
for cash, cashNum := range result { |
||||||
fmt.Printf("%d->%d, ", cashes[cash], cashNum) |
fmt.Printf("%d->%d, ", cashes[cash], cashNum) |
||||||
} |
} |
||||||
fmt.Println() |
fmt.Println() |
||||||
|
|
||||||
result = Ex15(60, 74) |
result = Ex15(60, 74) |
||||||
for cash, cashNum := range result { |
for cash, cashNum := range result { |
||||||
fmt.Printf("%d->%d, ", cashes[cash], cashNum) |
fmt.Printf("%d->%d, ", cashes[cash], cashNum) |
||||||
} |
} |
||||||
fmt.Println() |
fmt.Println() |
||||||
|
|
||||||
result = Ex15(60, 130) |
result = Ex15(60, 130) |
||||||
for cash, cashNum := range result { |
for cash, cashNum := range result { |
||||||
fmt.Printf("%d->%d, ", cashes[cash], cashNum) |
fmt.Printf("%d->%d, ", cashes[cash], cashNum) |
||||||
} |
} |
||||||
|
|
||||||
fmt.Println() |
fmt.Println() |
||||||
} |
} |
||||||
|
|
||||||
func TestEx16(t *testing.T) { |
func TestEx16(t *testing.T) { |
||||||
count := 0 |
count := 0 |
||||||
Ex16(func(x, x2 int) { |
Ex16(func(x, x2 int) { |
||||||
count++ |
count++ |
||||||
fmt.Printf("%d: %d, x^2=%d\n", count, x, x2) |
fmt.Printf("%d: %d, x^2=%d\n", count, x, x2) |
||||||
}) |
}) |
||||||
} |
} |
||||||
|
|
||||||
func TestEx17(t *testing.T) { |
func TestEx17(t *testing.T) { |
||||||
n, k := 10, 2 |
n, k := 10, 2 |
||||||
result := Ex17Normal(n, k) |
result := Ex17Normal(n, k) |
||||||
fmt.Println(result) |
fmt.Println(result) |
||||||
|
|
||||||
result = Ex17Math(n, k) |
result = Ex17Math(n, k) |
||||||
fmt.Println(result) |
fmt.Println(result) |
||||||
} |
} |
||||||
|
|
||||||
func TestEx18(t *testing.T) { |
func TestEx18(t *testing.T) { |
||||||
fmt.Println(Ex18("6451", "6637") == "42815287") |
fmt.Println(Ex18("6451", "6637") == "42815287") |
||||||
fmt.Println(Ex18("1111", "2") == "2222") |
fmt.Println(Ex18("1111", "2") == "2222") |
||||||
|
|
||||||
// 来个夸张点的
|
// 来个夸张点的
|
||||||
ans := "59431035264803873745814101793588195732295068254603339623610036212240642359886400430165726959529476600423448130231213495885200101414878403047792277609642" |
ans := "59431035264803873745814101793588195732295068254603339623610036212240642359886400430165726959529476600423448130231213495885200101414878403047792277609642" |
||||||
fmt.Println(Ex18( |
fmt.Println(Ex18( |
||||||
"953249582974085793083245237450927435989430572386540298743509843545728475284751234", |
"953249582974085793083245237450927435989430572386540298743509843545728475284751234", |
||||||
"62345723854798175908734905872984724974984398572942345324535728479275413") == ans, |
"62345723854798175908734905872984724974984398572942345324535728479275413") == ans, |
||||||
) |
) |
||||||
|
|
||||||
result := Ex18type3([]uint8{6, 4, 5, 1}, 6637) |
result := Ex18type3([]uint8{6, 4, 5, 1}, 6637) |
||||||
fmt.Println(DigitSlice2String(result) == "42815287") |
fmt.Println(DigitSlice2String(result) == "42815287") |
||||||
} |
} |
||||||
|
|
||||||
func TestEx19(t *testing.T) { |
func TestEx19(t *testing.T) { |
||||||
fmt.Println(Ex19(10)) |
fmt.Println(Ex19(10)) |
||||||
fmt.Println(Ex19(100)) |
fmt.Println(Ex19(100)) |
||||||
} |
} |
||||||
|
|
||||||
func TestEx20(t *testing.T) { |
func TestEx20(t *testing.T) { |
||||||
matrix := Ex20(5) |
matrix := Ex20(5) |
||||||
_printMatrix(matrix) |
_printMatrix(matrix) |
||||||
} |
} |
||||||
|
|
||||||
func TestEx21(t *testing.T) { |
func TestEx21(t *testing.T) { |
||||||
matrix := Ex21(3) |
matrix := Ex21(3) |
||||||
_printMatrix(matrix) |
_printMatrix(matrix) |
||||||
|
|
||||||
fmt.Println("----------------") |
fmt.Println("----------------") |
||||||
|
|
||||||
matrix = Ex21(4) |
matrix = Ex21(4) |
||||||
_printMatrix(matrix) |
_printMatrix(matrix) |
||||||
|
|
||||||
fmt.Println("================") |
fmt.Println("================") |
||||||
|
|
||||||
matrix = Ex21type2(3) |
matrix = Ex21type2(3) |
||||||
_printMatrix(matrix) |
_printMatrix(matrix) |
||||||
|
|
||||||
fmt.Println("----------------") |
fmt.Println("----------------") |
||||||
|
|
||||||
matrix = Ex21type2(4) |
matrix = Ex21type2(4) |
||||||
_printMatrix(matrix) |
_printMatrix(matrix) |
||||||
} |
} |
||||||
|
|
||||||
func TestEx22(t *testing.T) { |
func TestEx22(t *testing.T) { |
||||||
m := Ex22(3) |
m := Ex22(3) |
||||||
_printMatrix(m) |
_printMatrix(m) |
||||||
} |
} |
||||||
|
@ -1,24 +1,24 @@ |
|||||||
package cap3 |
package cap3 |
||||||
|
|
||||||
func Work12() []int { |
func Work12() []int { |
||||||
size := 52 |
size := 52 |
||||||
cardStatus := make([]bool, 52) |
cardStatus := make([]bool, 52) |
||||||
start, count := 2, 0 |
start, count := 2, 0 |
||||||
for count <= 104 { |
for count <= 104 { |
||||||
for j := start; j < size; j++ { |
for j := start; j < size; j++ { |
||||||
if j%start == 0 { |
if j%start == 0 { |
||||||
cardStatus[j] = !cardStatus[j] |
cardStatus[j] = !cardStatus[j] |
||||||
count++ |
count++ |
||||||
} |
} |
||||||
} |
} |
||||||
} |
} |
||||||
|
|
||||||
result := make([]int, 0) |
result := make([]int, 0) |
||||||
for i, faceDown := range cardStatus { |
for i, faceDown := range cardStatus { |
||||||
if !faceDown { |
if !faceDown { |
||||||
result = append(result, i) |
result = append(result, i) |
||||||
} |
} |
||||||
} |
} |
||||||
|
|
||||||
return result |
return result |
||||||
} |
} |
||||||
|
@ -1,33 +1,33 @@ |
|||||||
package cap3 |
package cap3 |
||||||
|
|
||||||
func Work15() map[string]string { |
func Work15() map[string]string { |
||||||
// 甲队成员
|
// 甲队成员
|
||||||
teamA := []string{"A", "B", "C"} |
teamA := []string{"A", "B", "C"} |
||||||
|
|
||||||
// 乙队成员
|
// 乙队成员
|
||||||
teamB := []string{"X", "Y", "Z"} |
teamB := []string{"X", "Y", "Z"} |
||||||
|
|
||||||
match := map[string]string{} |
match := map[string]string{} |
||||||
|
|
||||||
// 遍历所有可能的匹配方式
|
// 遍历所有可能的匹配方式
|
||||||
for _, b := range teamB { |
for _, b := range teamB { |
||||||
for _, a := range teamA { |
for _, a := range teamA { |
||||||
// A不和X比赛
|
// A不和X比赛
|
||||||
if a == "A" && b == "X" { |
if a == "A" && b == "X" { |
||||||
continue |
continue |
||||||
} |
} |
||||||
|
|
||||||
// C不和X或Z比赛
|
// C不和X或Z比赛
|
||||||
if a == "C" && (b == "X" || b == "Z") { |
if a == "C" && (b == "X" || b == "Z") { |
||||||
continue |
continue |
||||||
} |
} |
||||||
|
|
||||||
// 如果没人匹配,当前就作为对手匹配
|
// 如果没人匹配,当前就作为对手匹配
|
||||||
if _, exists := match[b]; !exists { |
if _, exists := match[b]; !exists { |
||||||
match[a] = b |
match[a] = b |
||||||
} |
} |
||||||
} |
} |
||||||
} |
} |
||||||
|
|
||||||
return match |
return match |
||||||
} |
} |
||||||
|
@ -1,18 +1,18 @@ |
|||||||
package cap3 |
package cap3 |
||||||
|
|
||||||
func Work16(n int) []int { |
func Work16(n int) []int { |
||||||
result := make([]int, 0) |
result := make([]int, 0) |
||||||
if n%4 == 0 { |
if n%4 == 0 { |
||||||
result = append(result, 7) |
result = append(result, 7) |
||||||
} |
} |
||||||
|
|
||||||
if n%7 == 0 { |
if n%7 == 0 { |
||||||
result = append(result, 7) |
result = append(result, 7) |
||||||
} |
} |
||||||
|
|
||||||
if n%9 == 0 { |
if n%9 == 0 { |
||||||
result = append(result, 9) |
result = append(result, 9) |
||||||
} |
} |
||||||
|
|
||||||
return result |
return result |
||||||
} |
} |
||||||
|
@ -1,10 +1,10 @@ |
|||||||
package cap3 |
package cap3 |
||||||
|
|
||||||
func Work17(a, b, c int) int { |
func Work17(a, b, c int) int { |
||||||
result := 70*a + 21*b + 15*c |
result := 70*a + 21*b + 15*c |
||||||
for result > 105 { |
for result > 105 { |
||||||
result -= 105 |
result -= 105 |
||||||
} |
} |
||||||
|
|
||||||
return result |
return result |
||||||
} |
} |
||||||
|
@ -1,45 +1,45 @@ |
|||||||
package cap3 |
package cap3 |
||||||
|
|
||||||
func Work18(callback func(four, five int)) { |
func Work18(callback func(four, five int)) { |
||||||
// 检查两个数是否由9个不同的数字组成
|
// 检查两个数是否由9个不同的数字组成
|
||||||
checkDigitUnique := func(a, b int) bool { |
checkDigitUnique := func(a, b int) bool { |
||||||
// 创建一个map来跟踪每个数字是否已经出现过
|
// 创建一个map来跟踪每个数字是否已经出现过
|
||||||
mark := map[int]bool{} |
mark := map[int]bool{} |
||||||
|
|
||||||
// 检查第一个数的每一位数字
|
// 检查第一个数的每一位数字
|
||||||
for ; a > 0; a /= 10 { |
for ; a > 0; a /= 10 { |
||||||
// 如果数字已经在map中,直接返回false
|
// 如果数字已经在map中,直接返回false
|
||||||
if _, exists := mark[a%10]; exists { |
if _, exists := mark[a%10]; exists { |
||||||
return false |
return false |
||||||
} else { |
} else { |
||||||
// map标记
|
// map标记
|
||||||
mark[a%10] = true |
mark[a%10] = true |
||||||
} |
} |
||||||
} |
} |
||||||
|
|
||||||
for ; b > 0; b /= 10 { |
for ; b > 0; b /= 10 { |
||||||
if _, exists := mark[b%10]; exists { |
if _, exists := mark[b%10]; exists { |
||||||
return false |
return false |
||||||
} else { |
} else { |
||||||
mark[b%10] = true |
mark[b%10] = true |
||||||
} |
} |
||||||
} |
} |
||||||
|
|
||||||
// map中的数字总数为9,返回true
|
// map中的数字总数为9,返回true
|
||||||
return len(mark) == 9 |
return len(mark) == 9 |
||||||
} |
} |
||||||
|
|
||||||
// 遍历所有的四位数
|
// 遍历所有的四位数
|
||||||
for four := 1000; four <= 9999; four++ { |
for four := 1000; four <= 9999; four++ { |
||||||
// 计算当前四位数的两倍
|
// 计算当前四位数的两倍
|
||||||
five := 2 * four |
five := 2 * four |
||||||
|
|
||||||
// 检查结果是否为五位数
|
// 检查结果是否为五位数
|
||||||
if 10000 <= five && five <= 99999 { |
if 10000 <= five && five <= 99999 { |
||||||
// 调用checkUnique函数检查数字是否互不相同,条件满足则回调
|
// 调用checkUnique函数检查数字是否互不相同,条件满足则回调
|
||||||
if checkDigitUnique(four, five) { |
if checkDigitUnique(four, five) { |
||||||
callback(four, five) |
callback(four, five) |
||||||
} |
} |
||||||
} |
} |
||||||
} |
} |
||||||
} |
} |
||||||
|
@ -1,31 +1,31 @@ |
|||||||
package cap3 |
package cap3 |
||||||
|
|
||||||
import ( |
import ( |
||||||
"math" |
"math" |
||||||
"strings" |
"strings" |
||||||
) |
) |
||||||
|
|
||||||
var ( |
var ( |
||||||
_hexMap = map[byte]int{ |
_hexMap = map[byte]int{ |
||||||
'0': 0, '1': 1, '2': 2, '3': 3, '4': 4, |
'0': 0, '1': 1, '2': 2, '3': 3, '4': 4, |
||||||
'5': 5, '6': 6, '7': 7, '8': 8, '9': 9, |
'5': 5, '6': 6, '7': 7, '8': 8, '9': 9, |
||||||
'A': 10, 'B': 11, 'C': 12, 'D': 13, 'E': 14, 'F': 15, |
'A': 10, 'B': 11, 'C': 12, 'D': 13, 'E': 14, 'F': 15, |
||||||
} |
} |
||||||
) |
) |
||||||
|
|
||||||
func Work19(hexStr string) int { |
func Work19(hexStr string) int { |
||||||
// 将输入字符串转换为大写,以便匹配映射表
|
// 将输入字符串转换为大写,以便匹配映射表
|
||||||
hexStr = strings.ToUpper(hexStr) |
hexStr = strings.ToUpper(hexStr) |
||||||
|
|
||||||
decValue := 0 |
decValue := 0 |
||||||
// 从字符串最右端开始转换每个字符
|
// 从字符串最右端开始转换每个字符
|
||||||
for i := 0; i < len(hexStr); i++ { |
for i := 0; i < len(hexStr); i++ { |
||||||
char := hexStr[len(hexStr)-1-i] |
char := hexStr[len(hexStr)-1-i] |
||||||
// 获取字符对应的十进制值,计算十进制
|
// 获取字符对应的十进制值,计算十进制
|
||||||
if value, exists := _hexMap[char]; exists { |
if value, exists := _hexMap[char]; exists { |
||||||
decValue += value * int(math.Pow(16, float64(i))) |
decValue += value * int(math.Pow(16, float64(i))) |
||||||
} |
} |
||||||
} |
} |
||||||
|
|
||||||
return decValue |
return decValue |
||||||
} |
} |
||||||
|
@ -1,56 +1,56 @@ |
|||||||
package cap3 |
package cap3 |
||||||
|
|
||||||
func Work20(callback func(x, y, z int)) { |
func Work20(callback func(x, y, z int)) { |
||||||
// 检查x, y, z是否包含1到9的所有数字各一次,且不包含0
|
// 检查x, y, z是否包含1到9的所有数字各一次,且不包含0
|
||||||
checkDigit := func(x, y, z int) bool { |
checkDigit := func(x, y, z int) bool { |
||||||
appearCnt := make([]int, 10) // 创建一个数组来存储数字0-9的出现次数
|
appearCnt := make([]int, 10) // 创建一个数组来存储数字0-9的出现次数
|
||||||
|
|
||||||
// x的各位数字
|
// x的各位数字
|
||||||
appearCnt[x/10]++ |
appearCnt[x/10]++ |
||||||
appearCnt[x%10]++ |
appearCnt[x%10]++ |
||||||
|
|
||||||
// y的各位数字
|
// y的各位数字
|
||||||
appearCnt[y%10]++ |
appearCnt[y%10]++ |
||||||
appearCnt[y/10%10]++ |
appearCnt[y/10%10]++ |
||||||
appearCnt[y/100]++ |
appearCnt[y/100]++ |
||||||
|
|
||||||
// z的各位数字
|
// z的各位数字
|
||||||
appearCnt[z%10]++ |
appearCnt[z%10]++ |
||||||
appearCnt[z/10%10]++ |
appearCnt[z/10%10]++ |
||||||
appearCnt[z/100%10]++ |
appearCnt[z/100%10]++ |
||||||
appearCnt[z/1000]++ |
appearCnt[z/1000]++ |
||||||
|
|
||||||
// 有0,不符合条件
|
// 有0,不符合条件
|
||||||
if appearCnt[0] != 0 { |
if appearCnt[0] != 0 { |
||||||
return false |
return false |
||||||
} |
} |
||||||
|
|
||||||
// 检查1-9出现次数
|
// 检查1-9出现次数
|
||||||
for _, cnt := range appearCnt { |
for _, cnt := range appearCnt { |
||||||
if cnt != 1 { |
if cnt != 1 { |
||||||
return false |
return false |
||||||
} |
} |
||||||
} |
} |
||||||
|
|
||||||
return true |
return true |
||||||
} |
} |
||||||
|
|
||||||
// 双重循环遍历所有可能的x和y组合
|
// 双重循环遍历所有可能的x和y组合
|
||||||
// x从12开始到98
|
// x从12开始到98
|
||||||
for x := 12; x < 99; x++ { |
for x := 12; x < 99; x++ { |
||||||
// y从123开始到986
|
// y从123开始到986
|
||||||
for y := 123; y < 987; y++ { |
for y := 123; y < 987; y++ { |
||||||
// 如果乘积超过9999,停止内层循环(太大了,已经不符合条件了)
|
// 如果乘积超过9999,停止内层循环(太大了,已经不符合条件了)
|
||||||
z := x * y |
z := x * y |
||||||
if z > 9999 { |
if z > 9999 { |
||||||
break |
break |
||||||
} |
} |
||||||
|
|
||||||
// 检查x, y, z各位数字情况
|
// 检查x, y, z各位数字情况
|
||||||
if checkDigit(x, y, z) { |
if checkDigit(x, y, z) { |
||||||
// 回调结果
|
// 回调结果
|
||||||
callback(x, y, z) |
callback(x, y, z) |
||||||
} |
} |
||||||
} |
} |
||||||
} |
} |
||||||
} |
} |
||||||
|
@ -1,13 +1,13 @@ |
|||||||
package cap3 |
package cap3 |
||||||
|
|
||||||
func Work22(nums []int) int { |
func Work22(nums []int) int { |
||||||
size := len(nums) |
size := len(nums) |
||||||
maxSum := 0 |
maxSum := 0 |
||||||
for i := size; i < size*2; i++ { |
for i := size; i < size*2; i++ { |
||||||
i1, i2, i3, i4 := (i-1)%size, i%size, (i+2)%size, (i+2)%size |
i1, i2, i3, i4 := (i-1)%size, i%size, (i+2)%size, (i+2)%size |
||||||
sum := nums[i1] + nums[i2] + nums[i3] + nums[i4] |
sum := nums[i1] + nums[i2] + nums[i3] + nums[i4] |
||||||
maxSum = max(maxSum, sum) |
maxSum = max(maxSum, sum) |
||||||
} |
} |
||||||
|
|
||||||
return maxSum |
return maxSum |
||||||
} |
} |
||||||
|
@ -1,10 +1,10 @@ |
|||||||
package cap3 |
package cap3 |
||||||
|
|
||||||
func Work23(n int) []int { |
func Work23(n int) []int { |
||||||
digits := make([]int, 0, 16) |
digits := make([]int, 0, 16) |
||||||
for ; n > 0; n /= 10 { |
for ; n > 0; n /= 10 { |
||||||
digits = append(digits, n%10) |
digits = append(digits, n%10) |
||||||
} |
} |
||||||
|
|
||||||
return digits |
return digits |
||||||
} |
} |
||||||
|
@ -1,29 +1,29 @@ |
|||||||
package cap3 |
package cap3 |
||||||
|
|
||||||
func Work24(callback func(num1, num2, result int)) { |
func Work24(callback func(num1, num2, result int)) { |
||||||
check := func(x int) bool { |
check := func(x int) bool { |
||||||
for ; x != 0; x /= 10 { |
for ; x != 0; x /= 10 { |
||||||
n := x % 10 |
n := x % 10 |
||||||
// 如果有一个数字不是素数,直接false
|
// 如果有一个数字不是素数,直接false
|
||||||
if n != 2 && n != 3 && n != 5 && n != 7 { |
if n != 2 && n != 3 && n != 5 && n != 7 { |
||||||
return false |
return false |
||||||
} |
} |
||||||
} |
} |
||||||
|
|
||||||
return true |
return true |
||||||
} |
} |
||||||
|
|
||||||
// num1三位数,num2一位数,遍历查找
|
// num1三位数,num2一位数,遍历查找
|
||||||
for num1 := 100; num1 <= 9999; num1++ { |
for num1 := 100; num1 <= 9999; num1++ { |
||||||
for num2 := 1; num2 <= 0; num2++ { |
for num2 := 1; num2 <= 0; num2++ { |
||||||
// 乘出来的结果应该是四位数
|
// 乘出来的结果应该是四位数
|
||||||
result := num1 * num2 |
result := num1 * num2 |
||||||
if 1000 <= result && result <= 9999 { |
if 1000 <= result && result <= 9999 { |
||||||
if check(num1) && check(num2) && check(result) { |
if check(num1) && check(num2) && check(result) { |
||||||
callback(num1, num2, result) |
callback(num1, num2, result) |
||||||
} |
} |
||||||
} |
} |
||||||
} |
} |
||||||
} |
} |
||||||
|
|
||||||
} |
} |
||||||
|
@ -1,33 +1,33 @@ |
|||||||
package cap3 |
package cap3 |
||||||
|
|
||||||
func Work25(callback func(num1, num2, num3, num4, result int)) { |
func Work25(callback func(num1, num2, num3, num4, result int)) { |
||||||
// 类似work24
|
// 类似work24
|
||||||
check := func(x int) bool { |
check := func(x int) bool { |
||||||
for ; x != 0; x /= 10 { |
for ; x != 0; x /= 10 { |
||||||
n := x % 10 |
n := x % 10 |
||||||
// 如果有一个数字不是素数,直接false
|
// 如果有一个数字不是素数,直接false
|
||||||
if n != 2 && n != 3 && n != 5 && n != 7 { |
if n != 2 && n != 3 && n != 5 && n != 7 { |
||||||
return false |
return false |
||||||
} |
} |
||||||
} |
} |
||||||
|
|
||||||
return true |
return true |
||||||
} |
} |
||||||
|
|
||||||
// num1三位数,num2一位数,遍历查找
|
// num1三位数,num2一位数,遍历查找
|
||||||
for num1 := 100; num1 <= 9999; num1++ { |
for num1 := 100; num1 <= 9999; num1++ { |
||||||
for num2 := 1; num2 <= 0; num2++ { |
for num2 := 1; num2 <= 0; num2++ { |
||||||
// 乘出来的结果应该是四位数
|
// 乘出来的结果应该是四位数
|
||||||
result := num1 * num2 |
result := num1 * num2 |
||||||
if 1000 <= result && result <= 9999 { |
if 1000 <= result && result <= 9999 { |
||||||
// 第二个乘数的两个数字位和中间的两个相乘结果
|
// 第二个乘数的两个数字位和中间的两个相乘结果
|
||||||
num2Digit1, num2Digit2 := num2%10, num2/10 |
num2Digit1, num2Digit2 := num2%10, num2/10 |
||||||
num3, num4 := num2Digit1*num1, num2Digit2*num1 |
num3, num4 := num2Digit1*num1, num2Digit2*num1 |
||||||
|
|
||||||
if check(num1) && check(num2) && check(num3) && check(num4) && check(result) { |
if check(num1) && check(num2) && check(num3) && check(num4) && check(result) { |
||||||
callback(num1, num2, num3, num4, result) |
callback(num1, num2, num3, num4, result) |
||||||
} |
} |
||||||
} |
} |
||||||
} |
} |
||||||
} |
} |
||||||
} |
} |
||||||
|
@ -1,11 +1,11 @@ |
|||||||
package cap3 |
package cap3 |
||||||
|
|
||||||
var _monthNames = []string{ |
var _monthNames = []string{ |
||||||
"January", "February", "March", "April", |
"January", "February", "March", "April", |
||||||
"May", "June", "July", "August", "September", |
"May", "June", "July", "August", "September", |
||||||
"October", "November", "December", |
"October", "November", "December", |
||||||
} |
} |
||||||
|
|
||||||
func Work27(n int) string { |
func Work27(n int) string { |
||||||
return _monthNames[n-1] |
return _monthNames[n-1] |
||||||
} |
} |
||||||
|
@ -1,18 +1,18 @@ |
|||||||
package cap3 |
package cap3 |
||||||
|
|
||||||
func Work7(m, n int) int { |
func Work7(m, n int) int { |
||||||
var ack func(m, n int) int |
var ack func(m, n int) int |
||||||
ack = func(m, n int) int { |
ack = func(m, n int) int { |
||||||
if m == 0 { |
if m == 0 { |
||||||
return n + 1 |
return n + 1 |
||||||
} |
} |
||||||
|
|
||||||
if n == 0 { |
if n == 0 { |
||||||
return ack(m-1, 1) |
return ack(m-1, 1) |
||||||
} |
} |
||||||
|
|
||||||
return ack(m-1, ack(m, n-1)) |
return ack(m-1, ack(m, n-1)) |
||||||
} |
} |
||||||
|
|
||||||
return ack(m, n) |
return ack(m, n) |
||||||
} |
} |
||||||
|
@ -1,12 +1,12 @@ |
|||||||
package cap3 |
package cap3 |
||||||
|
|
||||||
func Work8(input string) bool { |
func Work8(input string) bool { |
||||||
length := len(input) |
length := len(input) |
||||||
for i := 0; i < length/2; i++ { |
for i := 0; i < length/2; i++ { |
||||||
if input[i] != input[length-1-i] { |
if input[i] != input[length-1-i] { |
||||||
return false |
return false |
||||||
} |
} |
||||||
} |
} |
||||||
|
|
||||||
return true |
return true |
||||||
} |
} |
||||||
|
@ -1,107 +1,107 @@ |
|||||||
package cap3 |
package cap3 |
||||||
|
|
||||||
import ( |
import ( |
||||||
"fmt" |
"fmt" |
||||||
"testing" |
"testing" |
||||||
) |
) |
||||||
|
|
||||||
func TestWork1(t *testing.T) { |
func TestWork1(t *testing.T) { |
||||||
result := Work1(100) |
result := Work1(100) |
||||||
for _, b := range result { |
for _, b := range result { |
||||||
fmt.Print(b) |
fmt.Print(b) |
||||||
} |
} |
||||||
|
|
||||||
fmt.Println() |
fmt.Println() |
||||||
} |
} |
||||||
|
|
||||||
func TestWork2(t *testing.T) { |
func TestWork2(t *testing.T) { |
||||||
matrix := Work2([]int{5, 7, 4, 8, 9, 1}) |
matrix := Work2([]int{5, 7, 4, 8, 9, 1}) |
||||||
_printMatrix(matrix) |
_printMatrix(matrix) |
||||||
|
|
||||||
println("----------------") |
println("----------------") |
||||||
|
|
||||||
matrix = Work2type2([]int{5, 7, 4, 8, 9, 1}) |
matrix = Work2type2([]int{5, 7, 4, 8, 9, 1}) |
||||||
_printMatrix(matrix) |
_printMatrix(matrix) |
||||||
} |
} |
||||||
|
|
||||||
func TestWork3(t *testing.T) { |
func TestWork3(t *testing.T) { |
||||||
matrix := Work3(7) |
matrix := Work3(7) |
||||||
_printMatrix(matrix) |
_printMatrix(matrix) |
||||||
|
|
||||||
fmt.Println("----------------") |
fmt.Println("----------------") |
||||||
|
|
||||||
matrix = Work3(6) |
matrix = Work3(6) |
||||||
_printMatrix(matrix) |
_printMatrix(matrix) |
||||||
} |
} |
||||||
|
|
||||||
func TestWork4(t *testing.T) { |
func TestWork4(t *testing.T) { |
||||||
matrix := Work4(5) |
matrix := Work4(5) |
||||||
_printMatrix(matrix) |
_printMatrix(matrix) |
||||||
} |
} |
||||||
|
|
||||||
func TestWork5(t *testing.T) { |
func TestWork5(t *testing.T) { |
||||||
matrix := Work5(6) |
matrix := Work5(6) |
||||||
_printMatrix(matrix) |
_printMatrix(matrix) |
||||||
|
|
||||||
fmt.Println("----------------") |
fmt.Println("----------------") |
||||||
|
|
||||||
matrix = Work5(5) |
matrix = Work5(5) |
||||||
_printMatrix(matrix) |
_printMatrix(matrix) |
||||||
|
|
||||||
fmt.Println("----------------") |
fmt.Println("----------------") |
||||||
|
|
||||||
matrix = Work5(10) |
matrix = Work5(10) |
||||||
_printMatrix(matrix) |
_printMatrix(matrix) |
||||||
} |
} |
||||||
|
|
||||||
func TestWork9(t *testing.T) { |
func TestWork9(t *testing.T) { |
||||||
result := Work9(1, 2) |
result := Work9(1, 2) |
||||||
println(result) |
println(result) |
||||||
result = Work9(3, 6) |
result = Work9(3, 6) |
||||||
println(result) |
println(result) |
||||||
} |
} |
||||||
|
|
||||||
func TestWork11(t *testing.T) { |
func TestWork11(t *testing.T) { |
||||||
result := Work11(4) |
result := Work11(4) |
||||||
println(result) |
println(result) |
||||||
|
|
||||||
result = Work11(60) |
result = Work11(60) |
||||||
println(result) |
println(result) |
||||||
|
|
||||||
result = Work11(1000) |
result = Work11(1000) |
||||||
println(result) |
println(result) |
||||||
} |
} |
||||||
|
|
||||||
func TestWork15(t *testing.T) { |
func TestWork15(t *testing.T) { |
||||||
match := Work15() |
match := Work15() |
||||||
for a, b := range match { |
for a, b := range match { |
||||||
fmt.Println(a, " vs ", b) |
fmt.Println(a, " vs ", b) |
||||||
} |
} |
||||||
} |
} |
||||||
|
|
||||||
func TestWork16(t *testing.T) { |
func TestWork16(t *testing.T) { |
||||||
result := Work16(123) |
result := Work16(123) |
||||||
fmt.Print("can be devide by ") |
fmt.Print("can be devide by ") |
||||||
for _, num := range result { |
for _, num := range result { |
||||||
fmt.Printf("%d, ", num) |
fmt.Printf("%d, ", num) |
||||||
} |
} |
||||||
|
|
||||||
println() |
println() |
||||||
} |
} |
||||||
|
|
||||||
func TestWork23(t *testing.T) { |
func TestWork23(t *testing.T) { |
||||||
digits := Work23(123456) |
digits := Work23(123456) |
||||||
fmt.Printf("%d digits\n", len(digits)) |
fmt.Printf("%d digits\n", len(digits)) |
||||||
|
|
||||||
for i := len(digits) - 1; i >= 0; i-- { |
for i := len(digits) - 1; i >= 0; i-- { |
||||||
print(digits[i]) |
print(digits[i]) |
||||||
} |
} |
||||||
|
|
||||||
println() |
println() |
||||||
|
|
||||||
for _, digit := range digits { |
for _, digit := range digits { |
||||||
print(digit) |
print(digit) |
||||||
} |
} |
||||||
|
|
||||||
println() |
println() |
||||||
} |
} |
||||||
|
Loading…
Reference in new issue