paizaの練習問題を解く 裏返せる可能性(斜め) Go編
こんにちは、ナナオです。 前回に引き続き競プロを実施していきたいと思います。 今回の問題は以下です。 裏返せる可能性(斜め) | レベルアップ問題集 | プログラミング学習サイト【paizaラーニング】 実装 以下のように実装しました。 package main import "fmt" func main(){ var h, w, sy, sx int fmt.Scan(&h, &w, &sy, &sx) g := make([][]rune, h) for i := 0; i < h; i++ { row := make([]rune, w) for j := 0; j < w; j++ { if i == sy && j == sx { row[j] = '!' } else { row[j] = '.' } } g[i] = row } dy := []int{1, 1, -1, -1} dx := []int{1, -1, 1, -1} for i := 0; i < 4; i++ { for j := 1;; j++ { ly, lx := sy + dy[i] * j, sx + dx[i] * j if ly >= 0 && lx >= 0 && ly < h && lx < w { g[ly][lx] = '*' } else { break } } } for i := 0; i < h; i++ { fmt.Println(string(g[i])) } } 割とすっきり書けたと思います👍 ...