Goで競技プログラミング 02 [サイコロの問題]

はじめに

サイコロを扱う問題で使うであろう構造体と関連するメソッドを載せます。
サイコロ転がして、今の状態を問う問題で使えるのではないでしょうか。

環境

Go 1.6

コード

type Dice struct {
	top, bottom, left, right, front, back int
}

func (d *Dice) Up() {
	d.top, d.bottom, d.left, d.right, d.front, d.back =
		d.front, d.back, d.left, d.right, d.bottom, d.top
}
func (d *Dice) Down() {
	d.top, d.bottom, d.left, d.right, d.front, d.back =
		d.back, d.front, d.left, d.right, d.top, d.bottom
}
func (d *Dice) Left() {
	d.top, d.bottom, d.left, d.right, d.front, d.back =
		d.right, d.left, d.top, d.bottom, d.front, d.back
}
func (d *Dice) Right() {
	d.top, d.bottom, d.left, d.right, d.front, d.back =
		d.left, d.right, d.bottom, d.top, d.front, d.back
}

func main() {
	dice := Dice{top: 1, bottom: 6, left: 3, right: 4, front: 5, back: 2}
}

コードについての補足

まずは、サイコロをDice という名前の構造体で定義します。
構造体には、サイコロを正面から見た、つまり下記のような絵の状態 (ポンチ絵失礼)
dice-01
つまりはmain で使用しているコードのイメージは下記のような感じ
dice-02

転がすメソッドについては、Up, Down, Left, Rightでそれぞれの方向に転がしたときに、サイコロの目がどのように変わるかの処理を書いてます。

おわりに

AOJとかpaiza, AtCoderとかで使える(のだと思います)

Hugo で構築されています。
テーマ StackJimmy によって設計されています。