From b0af728384e6b9d657d115100fa01bf613db17dd Mon Sep 17 00:00:00 2001 From: rtanaka Date: Thu, 3 Jul 2025 10:35:44 +0900 Subject: [PATCH 1/3] =?UTF-8?q?paiza=E3=81=AE=E5=95=8F=E9=A1=8CB158?= =?UTF-8?q?=E3=81=AE=E5=9B=9E=E7=AD=94?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- rtanaka/src/B158.java | 22 +++++++++++++ rtanaka/src/PyramidCalculate.java | 52 +++++++++++++++++++++++++++++++ rtanaka/src/PyramidInput.java | 36 +++++++++++++++++++++ 3 files changed, 110 insertions(+) create mode 100644 rtanaka/src/B158.java create mode 100644 rtanaka/src/PyramidCalculate.java create mode 100644 rtanaka/src/PyramidInput.java diff --git a/rtanaka/src/B158.java b/rtanaka/src/B158.java new file mode 100644 index 0000000..eb3cd76 --- /dev/null +++ b/rtanaka/src/B158.java @@ -0,0 +1,22 @@ + +/** + * 正方形の盤に積まれた石をピラミッド型に整理するjavaファイル + * @author 田中亮汰 + * @version 1.0 + */ + +public class B158 { + + public static void main(final String[] args) { + /* 入力 */ + PyramidInput input = new PyramidInput(); + input.scan(); + /* 計算 */ + PyramidCalculate culculate = new PyramidCalculate(input); + culculate.calculateIdealBoard();// 理想の盤面を計算するメソッド + culculate.compareAndRemoveStones();// 盤面を比較し、除去すべき石の数を計算するメソッド + /*出力*/ + System.out.println(culculate.getBoardStoneSum()); + } + +} \ No newline at end of file diff --git a/rtanaka/src/PyramidCalculate.java b/rtanaka/src/PyramidCalculate.java new file mode 100644 index 0000000..571b9f8 --- /dev/null +++ b/rtanaka/src/PyramidCalculate.java @@ -0,0 +1,52 @@ +/** + * PyramidInputから値を受けとり計算しメインに値を渡すクラスファイル + * @author 田中亮汰 + * @version 1.0 + */ +public class PyramidCalculate { + PyramidInput pyramidIO; + private int[][] bordStoneIdeal; + private int[][] boardStoneCompare; + private int boardStoneSum = 0; + + // 入力クラスのインスタンスを受け取る + public PyramidCalculate(PyramidInput input) { + this.pyramidIO = input; + } + + // 理想の盤面を計算するメソッド + public void calculateIdealBoard() { + bordStoneIdeal = new int[pyramidIO.getBoardLength()][pyramidIO.getBoardLength()]; + for (int i = 0; i < pyramidIO.getBoardLength(); i++) { + for (int j = 0; j < pyramidIO.getBoardLength(); j++) { + int piramidedge = Math.min(Math.min(i, j), + Math.min(pyramidIO.getBoardLength() - 1 - i, pyramidIO.getBoardLength() - 1 - j)); + bordStoneIdeal[i][j] = piramidedge + 1;// 最小値0の所から石を1つ置くので+1 + } + } + } + + // 盤面を比較し、除去すべき石の数を計算するメソッド + public void compareAndRemoveStones() { + boardStoneCompare = new int[pyramidIO.getBoardLength()][pyramidIO.getBoardLength()]; + PyramidInput currentBoardStone = new PyramidInput(); + currentBoardStone.getBoardStone(); + for (int i = 0; i < pyramidIO.getBoardLength(); i++) { + for (int j = 0; j < pyramidIO.getBoardLength(); j++) { + boardStoneCompare[i][j] = pyramidIO.getBoardStone(i, j) - bordStoneIdeal[i][j]; + } + } + + // 除去する石の個数を集計 + for (int[] sumRow : boardStoneCompare) { + for (int tmp : sumRow) { + boardStoneSum += tmp; + } + } + } + + // 結果を取得するgetterメソッド + public int getBoardStoneSum() { + return boardStoneSum; + } +} \ No newline at end of file diff --git a/rtanaka/src/PyramidInput.java b/rtanaka/src/PyramidInput.java new file mode 100644 index 0000000..c68b7fa --- /dev/null +++ b/rtanaka/src/PyramidInput.java @@ -0,0 +1,36 @@ +/** + * メインからの入力を受け取りPyramidCalculateに送るクラスファイル + * @author 田中亮汰 + * @version 1.0 + */ +import java.util.Scanner; + +public class PyramidInput { + private int boardLength; + private int[][] boardStone; + + public int[][] getBoardStone() { + return boardStone; + } + public int getBoardStone(int i, int j ) { + return boardStone[i][j]; + } + + public int getBoardLength() { + return boardLength; + } + + public void scan() { + Scanner scan = new Scanner(System.in); + boardLength = scan.nextInt();// 盤の一辺の長さ + + // 盤に対する石の個数を受け取る + boardStone = new int[boardLength][boardLength]; + for (int i = 0; i < boardLength; i++) { + for (int j = 0; j < boardLength; j++) { + boardStone[i][j] = scan.nextInt(); + } + } + scan.close(); + } +} \ No newline at end of file -- GitLab From c314e46ef3ab2f40c84a2ffc38f9ec0d49e5a1ab Mon Sep 17 00:00:00 2001 From: rtanaka Date: Fri, 4 Jul 2025 11:04:33 +0900 Subject: [PATCH 2/3] =?UTF-8?q?paiza=E3=81=AE=E5=95=8F=E9=A1=8CB158?= =?UTF-8?q?=E3=81=AE=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- rtanaka/src/B158.java | 26 +++++++++++---- rtanaka/src/PyramidCalculate.java | 52 ----------------------------- rtanaka/src/PyramidCalculation.java | 51 ++++++++++++++++++++++++++++ rtanaka/src/PyramidInput.java | 36 -------------------- rtanaka/src/PyramidStore.java | 33 ++++++++++++++++++ 5 files changed, 104 insertions(+), 94 deletions(-) delete mode 100644 rtanaka/src/PyramidCalculate.java create mode 100644 rtanaka/src/PyramidCalculation.java delete mode 100644 rtanaka/src/PyramidInput.java create mode 100644 rtanaka/src/PyramidStore.java diff --git a/rtanaka/src/B158.java b/rtanaka/src/B158.java index eb3cd76..f86368f 100644 --- a/rtanaka/src/B158.java +++ b/rtanaka/src/B158.java @@ -1,3 +1,4 @@ +import java.util.Scanner; /** * 正方形の盤に積まれた石をピラミッド型に整理するjavaファイル @@ -9,14 +10,27 @@ public class B158 { public static void main(final String[] args) { /* 入力 */ - PyramidInput input = new PyramidInput(); - input.scan(); + PyramidStore store = new PyramidStore(); + Scanner scan = new Scanner(System.in); + store.setBoardLength(scan.nextInt());// 盤の一辺の長さ + int boardLength = store.getBoardLength(); + + // 盤に対する石の個数を受け取る + int[][] boardStone = new int[boardLength][boardLength]; + for (int i = 0; i < boardLength; i++) { + for (int j = 0; j < boardLength; j++) { + boardStone[i][j] = scan.nextInt(); + } + } + store.setBoardStone(boardStone); + scan.close(); + /* 計算 */ - PyramidCalculate culculate = new PyramidCalculate(input); - culculate.calculateIdealBoard();// 理想の盤面を計算するメソッド - culculate.compareAndRemoveStones();// 盤面を比較し、除去すべき石の数を計算するメソッド + PyramidCalculation calculation = new PyramidCalculation(store); + calculation.calculateIdealBoard();// 理想の盤面を計算するメソッド + calculation.compareAndRemoveStones();// 盤面を比較し、除去すべき石の数を計算するメソッド /*出力*/ - System.out.println(culculate.getBoardStoneSum()); + System.out.println(store.getBoardStoneSum()); } } \ No newline at end of file diff --git a/rtanaka/src/PyramidCalculate.java b/rtanaka/src/PyramidCalculate.java deleted file mode 100644 index 571b9f8..0000000 --- a/rtanaka/src/PyramidCalculate.java +++ /dev/null @@ -1,52 +0,0 @@ -/** - * PyramidInputから値を受けとり計算しメインに値を渡すクラスファイル - * @author 田中亮汰 - * @version 1.0 - */ -public class PyramidCalculate { - PyramidInput pyramidIO; - private int[][] bordStoneIdeal; - private int[][] boardStoneCompare; - private int boardStoneSum = 0; - - // 入力クラスのインスタンスを受け取る - public PyramidCalculate(PyramidInput input) { - this.pyramidIO = input; - } - - // 理想の盤面を計算するメソッド - public void calculateIdealBoard() { - bordStoneIdeal = new int[pyramidIO.getBoardLength()][pyramidIO.getBoardLength()]; - for (int i = 0; i < pyramidIO.getBoardLength(); i++) { - for (int j = 0; j < pyramidIO.getBoardLength(); j++) { - int piramidedge = Math.min(Math.min(i, j), - Math.min(pyramidIO.getBoardLength() - 1 - i, pyramidIO.getBoardLength() - 1 - j)); - bordStoneIdeal[i][j] = piramidedge + 1;// 最小値0の所から石を1つ置くので+1 - } - } - } - - // 盤面を比較し、除去すべき石の数を計算するメソッド - public void compareAndRemoveStones() { - boardStoneCompare = new int[pyramidIO.getBoardLength()][pyramidIO.getBoardLength()]; - PyramidInput currentBoardStone = new PyramidInput(); - currentBoardStone.getBoardStone(); - for (int i = 0; i < pyramidIO.getBoardLength(); i++) { - for (int j = 0; j < pyramidIO.getBoardLength(); j++) { - boardStoneCompare[i][j] = pyramidIO.getBoardStone(i, j) - bordStoneIdeal[i][j]; - } - } - - // 除去する石の個数を集計 - for (int[] sumRow : boardStoneCompare) { - for (int tmp : sumRow) { - boardStoneSum += tmp; - } - } - } - - // 結果を取得するgetterメソッド - public int getBoardStoneSum() { - return boardStoneSum; - } -} \ No newline at end of file diff --git a/rtanaka/src/PyramidCalculation.java b/rtanaka/src/PyramidCalculation.java new file mode 100644 index 0000000..3856662 --- /dev/null +++ b/rtanaka/src/PyramidCalculation.java @@ -0,0 +1,51 @@ +/** + * PyramidInputから値を受けとり計算しメインに値を渡すクラスファイル + * + * @author 田中亮汰 + * @version 1.0 + */ +public class PyramidCalculation { + PyramidStore pyramidStore; + private int[][] boardStoneIdeal; + private int[][] boardStoneCompare; + private int boardStoneSum = 0; + final int BOARD_LENGTH; + + // 保存クラスのインスタンスを受け取る + public PyramidCalculation(PyramidStore store) { + this.pyramidStore = store; + this.BOARD_LENGTH = this.pyramidStore.getBoardLength(); + } + + // 理想の盤面を計算するメソッド + public void calculateIdealBoard() { + boardStoneIdeal = new int[BOARD_LENGTH][BOARD_LENGTH]; + for (int i = 0; i < BOARD_LENGTH; i++) { + for (int j = 0; j < BOARD_LENGTH; j++) { + int pyramidEdge = Math.min(Math.min(i, j), Math.min(BOARD_LENGTH - 1 - i, BOARD_LENGTH - 1 - j)); + boardStoneIdeal[i][j] = pyramidEdge + 1;// 最小値0の所から石を1つ置くので+1 + } + } + } + + // 盤面を比較し、除去すべき石の数を計算するメソッド + public void compareAndRemoveStones() { + boardStoneCompare = new int[BOARD_LENGTH][BOARD_LENGTH]; + PyramidStore currentBoardStone = new PyramidStore(); + currentBoardStone.getBoardStone(); + for (int i = 0; i < BOARD_LENGTH; i++) { + for (int j = 0; j < BOARD_LENGTH; j++) { + boardStoneCompare[i][j] = pyramidStore.getBoardStone(i, j) - boardStoneIdeal[i][j]; + } + } + + // 除去する石の個数を集計 + for (int[] valueExpansionForSum : boardStoneCompare) { + for (int valueForSum : valueExpansionForSum) { + boardStoneSum += valueForSum; + } + } + pyramidStore.setBoardStoneSum(boardStoneSum); + } + +} \ No newline at end of file diff --git a/rtanaka/src/PyramidInput.java b/rtanaka/src/PyramidInput.java deleted file mode 100644 index c68b7fa..0000000 --- a/rtanaka/src/PyramidInput.java +++ /dev/null @@ -1,36 +0,0 @@ -/** - * メインからの入力を受け取りPyramidCalculateに送るクラスファイル - * @author 田中亮汰 - * @version 1.0 - */ -import java.util.Scanner; - -public class PyramidInput { - private int boardLength; - private int[][] boardStone; - - public int[][] getBoardStone() { - return boardStone; - } - public int getBoardStone(int i, int j ) { - return boardStone[i][j]; - } - - public int getBoardLength() { - return boardLength; - } - - public void scan() { - Scanner scan = new Scanner(System.in); - boardLength = scan.nextInt();// 盤の一辺の長さ - - // 盤に対する石の個数を受け取る - boardStone = new int[boardLength][boardLength]; - for (int i = 0; i < boardLength; i++) { - for (int j = 0; j < boardLength; j++) { - boardStone[i][j] = scan.nextInt(); - } - } - scan.close(); - } -} \ No newline at end of file diff --git a/rtanaka/src/PyramidStore.java b/rtanaka/src/PyramidStore.java new file mode 100644 index 0000000..3b38006 --- /dev/null +++ b/rtanaka/src/PyramidStore.java @@ -0,0 +1,33 @@ + +public class PyramidStore { + private int boardLength; + private int[][] boardStone; + private int boardStoneSum; + + public int[][] getBoardStone() { + return boardStone; + } + public int getBoardStone(int i, int j ) { + return boardStone[i][j]; + } + + public int getBoardLength() { + return boardLength; + } + + public int getBoardStoneSum() { + return boardStoneSum; + } + + public void setBoardStone(int[][]boardStone) { + this.boardStone = boardStone; + } + + public void setBoardLength(int boardLength) { + this.boardLength = boardLength; + } + + public void setBoardStoneSum(int boardStoneSum) { + this.boardStoneSum = boardStoneSum; + } +} -- GitLab From 566cabdf72e5c36a609cdc89fd5d6be1e66636d7 Mon Sep 17 00:00:00 2001 From: rtanaka Date: Fri, 4 Jul 2025 17:21:28 +0900 Subject: [PATCH 3/3] =?UTF-8?q?paiza=E3=81=AE=E5=95=8F=E9=A1=8CB158?= =?UTF-8?q?=E3=81=AE=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- rtanaka/src/PyramidCalculation.java | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/rtanaka/src/PyramidCalculation.java b/rtanaka/src/PyramidCalculation.java index 3856662..d67b5cf 100644 --- a/rtanaka/src/PyramidCalculation.java +++ b/rtanaka/src/PyramidCalculation.java @@ -31,8 +31,6 @@ public class PyramidCalculation { // 盤面を比較し、除去すべき石の数を計算するメソッド public void compareAndRemoveStones() { boardStoneCompare = new int[BOARD_LENGTH][BOARD_LENGTH]; - PyramidStore currentBoardStone = new PyramidStore(); - currentBoardStone.getBoardStone(); for (int i = 0; i < BOARD_LENGTH; i++) { for (int j = 0; j < BOARD_LENGTH; j++) { boardStoneCompare[i][j] = pyramidStore.getBoardStone(i, j) - boardStoneIdeal[i][j]; @@ -40,9 +38,9 @@ public class PyramidCalculation { } // 除去する石の個数を集計 - for (int[] valueExpansionForSum : boardStoneCompare) { - for (int valueForSum : valueExpansionForSum) { - boardStoneSum += valueForSum; + for (int[] stoneCounts : boardStoneCompare) { + for (int stoneCount : stoneCounts) { + boardStoneSum += stoneCount; } } pyramidStore.setBoardStoneSum(boardStoneSum); -- GitLab