結果
| 問題 |
No.217 魔方陣を作ろう
|
| コンテスト | |
| ユーザー |
fmhr
|
| 提出日時 | 2015-05-27 06:02:50 |
| 言語 | Go (1.23.4) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 1,540 bytes |
| コンパイル時間 | 11,001 ms |
| コンパイル使用メモリ | 237,720 KB |
| 実行使用メモリ | 6,824 KB |
| 最終ジャッジ日時 | 2024-10-10 18:46:39 |
| 合計ジャッジ時間 | 11,906 ms |
|
ジャッジサーバーID (参考情報) |
judge2 / judge1 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 10 WA * 8 |
ソースコード
package main
import (
"fmt"
)
func odd(N int, z [][]int) [][]int{
row := 0
col := N / 2
for i := 0; i < N*N; i++ {
z[row][col] = i + 1
nrow := (row + N - 1) % N
ncol := (col + 1) % N
if z[nrow][ncol] != 0 {
nrow = (row + 1) % N
ncol = col
}
row = nrow
col = ncol
}
return z
}
func print(z [][]int){
for i := range z {
for j:= range z[i] {
fmt.Print(z[i][j], " ")
}
fmt.Println("")
}
}
func main() {
var N int
fmt.Scan(&N)
z := make([][]int, N)
for i := 0; i < N; i++ {
z[i] = make([]int, N)
}
if N%2 == 1 {
z = odd(N, z)
} else if N%4 == 0 {
for y := 0; y < N; y++ {
for x := 0; x < N; x++ {
ty := y % 4
tx := x % 4
if (tx%3 == 0 || ty%3 == 0) && (tx%3 == 0 && ty%3 == 0) {
z[y][x] = N*N + 1-(y*N+x+1)
} else {
z[y][x] = y*N + x + 1
}
}
}
} else{
seed := make([][]int, N/2+1)
for i:= range seed{
seed[i] = make([]int, N/2)
}
seed = odd(N/2, seed)
LUX := make([][]int, N/2+1)
for i:= range LUX{
LUX[i] = make([]int, N/2)
}
for i:=0; i<N/2; i++{
LUX[N/2-1][i] = 1
}
for i:=0; i<N/2; i++{
LUX[N/2][i] = 2
}
LUX[N/4][N/4] = 1
LUX[1 + N/4][N/4] = 0
L := [2][2]int{{4,1},{2,3}}
U := [2][2]int{{1,4},{2,3}}
X := [2][2]int{{1,4},{3,2}}
LUXmat := [3][2][2]int{L,U,X}
for x:=0; x<N/2; x++{
for y:=0; y<N/2; y++{
val := (seed[x][y] - 1) * 4
idx := LUX[x][y]
for a:=0;a<2;a++{
for b:=0;b<2;b++{
z[2 * x + a][2 * y + b] = LUXmat[idx][a][b] + val
}
}
}
}
}
print(z)
}
fmhr