五月天青色头像情侣网名,国产亚洲av片在线观看18女人,黑人巨茎大战俄罗斯美女,扒下她的小内裤打屁股

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

什錦區(qū)大鴿子敲出的代碼(GO語言)

2022-03-17 14:13 作者:老司機的陽光628  | 我要投稿

// This program solves the (English) peg

// solitaire board game.

// http://en.wikipedia.org/wiki/Peg_solitaire


package main


import "fmt"


const N = 11 + 1 // length of a row (+1 for \n)


// The board must be surrounded by 2 illegal

// fields in each direction so that move()

// doesn't need to check the board boundaries.

// Periods represent illegal fields,

// ● are pegs, and ○ are holes.


var board = []rune(

`...........

...........

....●●●....

....●●●....

..●●●●●●●..

..●●●○●●●..

..●●●●●●●..

....●●●....

....●●●....

...........

...........

`)


// center is the position of the center hole if

// there is a single one; otherwise it is -1.

var center int


func init() {

n := 0

for pos, field := range board {

if field == '○' {

center = pos

n++

}

}

if n != 1 {

center = -1 // no single hole

}

}


var moves int // number of times move is called


// move tests if there is a peg at position pos that

// can jump over another peg in direction dir. If the

// move is valid, it is executed and move returns true.

// Otherwise, move returns false.

func move(pos, dir int) bool {

moves++

if board[pos] == '●' && board[pos+dir] == '●' && board[pos+2*dir] == '○' {

board[pos] = '○'

board[pos+dir] = '○'

board[pos+2*dir] = '●'

return true

}

return false

}


// unmove reverts a previously executed valid move.

func unmove(pos, dir int) {

board[pos] = '●'

board[pos+dir] = '●'

board[pos+2*dir] = '○'

}


// solve tries to find a sequence of moves such that

// there is only one peg left at the end; if center is

// >= 0, that last peg must be in the center position.

// If a solution is found, solve prints the board after

// each move in a backward fashion (i.e., the last

// board position is printed first, all the way back to

// the starting board position).

func solve() bool {

var last, n int

for pos, field := range board {

// try each board position

if field == '●' {

// found a peg

for _, dir := range [...]int{-1, -N, +1, +N} {

// try each direction

if move(pos, dir) {

// a valid move was found and executed,

// see if this new board has a solution

if solve() {

unmove(pos, dir)

fmt.Println(string(board))

return true

}

unmove(pos, dir)

}

}

last = pos

n++

}

}

// tried each possible move

if n == 1 && (center < 0 || last == center) {

// there's only one peg left

fmt.Println(string(board))

return true

}

// no solution found for this board

return false

}


func main() {

if !solve() {

fmt.Println("no solution found")

}

fmt.Println(moves, "moves tried")

}


什錦區(qū)大鴿子敲出的代碼(GO語言)的評論 (共 條)

分享到微博請遵守國家法律
湟中县| 江城| 齐齐哈尔市| 芦山县| 会宁县| 东阳市| 墨竹工卡县| 黄山市| 上蔡县| 阳山县| 沙湾县| 保德县| 隆林| 峨山| 鹤岗市| 政和县| 濮阳市| 孝昌县| 紫金县| 宾阳县| 百色市| 南澳县| 惠东县| 平昌县| 巴南区| 英德市| 建水县| 荥经县| 亚东县| 潮州市| 越西县| 揭阳市| 汝阳县| 凌源市| 阿克苏市| 西宁市| 岗巴县| 泾阳县| 罗山县| 孝义市| 福泉市|