diff --git a/introductory.go b/introductory.go index 18eb7cf..50e1f1e 100644 --- a/introductory.go +++ b/introductory.go @@ -136,3 +136,16 @@ func NumberSpiral(row, col int) int64 { return result } + +// I could not have solved it wothout the help of +// https://japlslounge.com/posts/cses/two_knights/1.htm +func TwoKnights(n int) []int { + result := []int{} + + for i := 1; i <= n; i++ { + positions := i*i*(i*i-1)/2 - (i-2)*(i-1)*4 + result = append(result, positions) + } + + return result +} diff --git a/introductory_test.go b/introductory_test.go index ab23fb3..2ed214e 100644 --- a/introductory_test.go +++ b/introductory_test.go @@ -56,3 +56,7 @@ func TestNumberSpiral(t *testing.T) { assert.Equal(t, int64(871712102163621276), NumberSpiral(586095107, 933655238)) assert.Equal(t, int64(999999997000000003), NumberSpiral(999_999_999, 999_999_999)) } + +func TestTwoKnights(t *testing.T) { + assert.Equal(t, []int{0, 6, 28, 96, 252, 550, 1056, 1848}, TwoKnights(8)) +}