Initial data commit
This commit is contained in:
parent
72d218235f
commit
f23f22d71c
199087 changed files with 3378941 additions and 0 deletions
71
Task/Prime-triangle/Go/prime-triangle.go
Normal file
71
Task/Prime-triangle/Go/prime-triangle.go
Normal file
|
|
@ -0,0 +1,71 @@
|
|||
package main
|
||||
|
||||
import "fmt"
|
||||
|
||||
var canFollow [][]bool
|
||||
var arrang []int
|
||||
var bFirst = true
|
||||
|
||||
var pmap = make(map[int]bool)
|
||||
|
||||
func init() {
|
||||
for _, i := range []int{2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37} {
|
||||
pmap[i] = true
|
||||
}
|
||||
}
|
||||
|
||||
func ptrs(res, n, done int) int {
|
||||
ad := arrang[done-1]
|
||||
if n-done <= 1 {
|
||||
if canFollow[ad-1][n-1] {
|
||||
if bFirst {
|
||||
for _, e := range arrang {
|
||||
fmt.Printf("%2d ", e)
|
||||
}
|
||||
fmt.Println()
|
||||
bFirst = false
|
||||
}
|
||||
res++
|
||||
}
|
||||
} else {
|
||||
done++
|
||||
for i := done - 1; i <= n-2; i += 2 {
|
||||
ai := arrang[i]
|
||||
if canFollow[ad-1][ai-1] {
|
||||
arrang[i], arrang[done-1] = arrang[done-1], arrang[i]
|
||||
res = ptrs(res, n, done)
|
||||
arrang[i], arrang[done-1] = arrang[done-1], arrang[i]
|
||||
}
|
||||
}
|
||||
}
|
||||
return res
|
||||
}
|
||||
|
||||
func primeTriangle(n int) int {
|
||||
canFollow = make([][]bool, n)
|
||||
for i := 0; i < n; i++ {
|
||||
canFollow[i] = make([]bool, n)
|
||||
for j := 0; j < n; j++ {
|
||||
_, ok := pmap[i+j+2]
|
||||
canFollow[i][j] = ok
|
||||
}
|
||||
}
|
||||
bFirst = true
|
||||
arrang = make([]int, n)
|
||||
for i := 0; i < n; i++ {
|
||||
arrang[i] = i + 1
|
||||
}
|
||||
return ptrs(0, n, 1)
|
||||
}
|
||||
|
||||
func main() {
|
||||
counts := make([]int, 19)
|
||||
for i := 2; i <= 20; i++ {
|
||||
counts[i-2] = primeTriangle(i)
|
||||
}
|
||||
fmt.Println()
|
||||
for i := 0; i < 19; i++ {
|
||||
fmt.Printf("%d ", counts[i])
|
||||
}
|
||||
fmt.Println()
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue