paizaの練習問題を解く いびつなひとりリバーシ Go編
こんにちは、ナナオです。 前回に引き続き競プロを実施していきたいと思います。 今回の問題は以下です。 いびつなひとりリバーシ | レベルアップ問題集 | プログラミング学習サイト【paizaラーニング】 実装 以下のように実装しました。 package main import "fmt" func main(){ var h, w, n int fmt.Scan(&h, &w, &n) g := make([][]rune, h) for i := 0; i < h; i++ { var s string fmt.Scan(&s) g[i] = []rune(s) } for i := 0; i < n; i++ { var sy, sx int fmt.Scan(&sy, &sx) g[sy][sx] = '*' for dy := -1; dy <= 1; dy++ { for dx := -1; dx <= 1; dx++ { for j := 1;; j++ { ly, lx := sy + dy * j, sx + dx * j if ly < 0 || lx < 0 || ly >= h || lx >= w || g[ly][lx] == '#' { break } if g[ly][lx] == '*' { for k := j - 1; k > 0; k-- { ny, nx := sy + dy * k, sx + dx * k g[ny][nx] = '*' } break } } } } } for i := 0; i < h; i++ { fmt.Println(string(g[i])) } } ネストはさらに深くなりましたが、書きやすかったです。 ...