diff --git a/cap3/work22.go b/cap3/work22.go index 12b9aa2..e86e349 100644 --- a/cap3/work22.go +++ b/cap3/work22.go @@ -1,5 +1,13 @@ package cap3 -func Work22() { +func Work22(nums []int) int { + size := len(nums) + maxSum := 0 + for i := size; i < size*2; i++ { + i1, i2, i3, i4 := (i-1)%size, i%size, (i+2)%size, (i+2)%size + sum := nums[i1] + nums[i2] + nums[i3] + nums[i4] + maxSum = max(maxSum, sum) + } + return maxSum } diff --git a/cap3/work23.go b/cap3/work23.go index 17e9fed..302a1bd 100644 --- a/cap3/work23.go +++ b/cap3/work23.go @@ -1 +1,10 @@ package cap3 + +func Work23(n int) []int { + digits := make([]int, 0, 16) + for ; n > 0; n /= 10 { + digits = append(digits, n%10) + } + + return digits +} diff --git a/cap3/work25.go b/cap3/work25.go index 17e9fed..fc8497a 100644 --- a/cap3/work25.go +++ b/cap3/work25.go @@ -1 +1,33 @@ package cap3 + +func Work25(callback func(num1, num2, num3, num4, result int)) { + // 类似work24 + check := func(x int) bool { + for ; x != 0; x /= 10 { + n := x % 10 + // 如果有一个数字不是素数,直接false + if n != 2 && n != 3 && n != 5 && n != 7 { + return false + } + } + + return true + } + + // num1三位数,num2一位数,遍历查找 + for num1 := 100; num1 <= 9999; num1++ { + for num2 := 1; num2 <= 0; num2++ { + // 乘出来的结果应该是四位数 + result := num1 * num2 + if 1000 <= result && result <= 9999 { + // 第二个乘数的两个数字位和中间的两个相乘结果 + num2Digit1, num2Digit2 := num2%10, num2/10 + num3, num4 := num2Digit1*num1, num2Digit2*num1 + + if check(num1) && check(num2) && check(num3) && check(num4) && check(result) { + callback(num1, num2, num3, num4, result) + } + } + } + } +} diff --git a/cap3/work26.go b/cap3/work26.go index 17e9fed..49116d7 100644 --- a/cap3/work26.go +++ b/cap3/work26.go @@ -1 +1,5 @@ package cap3 + +func Work26(m, n int) { + +} diff --git a/cap3/work27.go b/cap3/work27.go index 17e9fed..9588921 100644 --- a/cap3/work27.go +++ b/cap3/work27.go @@ -1 +1,11 @@ package cap3 + +var _monthNames = []string{ + "January", "February", "March", "April", + "May", "June", "July", "August", "September", + "October", "November", "December", +} + +func Work27(n int) string { + return _monthNames[n-1] +} diff --git a/cap3/work_test.go b/cap3/work_test.go index 2eae798..c28fc10 100644 --- a/cap3/work_test.go +++ b/cap3/work_test.go @@ -88,3 +88,20 @@ func TestWork16(t *testing.T) { println() } + +func TestWork23(t *testing.T) { + digits := Work23(123456) + fmt.Printf("%d digits\n", len(digits)) + + for i := len(digits) - 1; i >= 0; i-- { + print(digits[i]) + } + + println() + + for _, digit := range digits { + print(digit) + } + + println() +}