LoginSignup
1
0

More than 1 year has passed since last update.

paizaラーニング レベルアップ問題集 Aランクレベルアップメニュー JavaScript編 裏返せる可能性(縦横)

Last updated at Posted at 2022-09-09

裏返せる可能性(縦横) (paizaランク C 相当)

を解いてみました。

解答例1
盤面を作りながら!,*,.を置いていく。

javascript
const fs = require("fs");
const input = fs.readFileSync("/dev/stdin", "utf-8").trim();
const lines = input.split("\n");
//出力する盤面の行数 H , 列数 W と石を置くマスの y , x 座標である Y , X
const [H, W, Y, X] = lines[0].split(" ").map(Number);
//盤面を作る
let board = [];
//行について
for (let i = 0; i < H; i++) {
    //列について
    let board_j = [];
    for (let j = 0; j < W; j++) {
        //石を置いたマス
        if (i === Y && j === X) {
            board_j.push('!');
        //石を置いたマスと行または列が同じマスを '*'    
        } else if (i === Y || j === X) {
            board_j.push('*');
        //それ以外のマスを '.'     
        } else {
            board_j.push('.');
        }   
    }
    //完成した列を行列二次元配列へ
    board.push(board_j);
}
//盤面を出力
console.log(board.map(row=> row.join("")).join("\n"));

解答例2
盤面を作ってから、そこに*!を置いていく。

javascript
const fs = require("fs");
const input = fs.readFileSync("/dev/stdin", "utf-8").trim();
const lines = input.split("\n");
//出力する盤面の行数 H , 列数 W と石を置くマスの y , x 座標である Y , X 
const [H, W, Y, X] = lines[0].split(" ").map(Number);
//盤面
//それ以外のマスを '.' にする
const board = Array(H).fill(0).map(row => row = Array(W).fill("."));

//石を置いたマスと行または列が同じマスを '*' に
//Xを固定して、行iについて
for (let i = 0; i < H; i++) {
    board[i][X] = "*";
}
//Yを固定して,列jについて
for (let j = 0; j < W; j++) {
    board[Y][j] = "*";
}
//石を置いたマスを '!' に
board[Y][X] = "!";

//盤面を出力
console.log(board.map(row => row.join("")).join("\n"));
1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0