From ed9fda495b505286604e0dcad8b5b5ee5d37f89d Mon Sep 17 00:00:00 2001 From: mizti Date: Sun, 27 Jan 2013 23:37:09 +0900 Subject: [PATCH] added answer codes --- a.cpp | 115 ++++++++++++++++++++++++++++++++++++++++++++++++++++ a.out | Bin 0 -> 20113 bytes autoexec.sh | 22 ++++++++++ 3 files changed, 137 insertions(+) create mode 100644 a.cpp create mode 100755 a.out create mode 100755 autoexec.sh diff --git a/a.cpp b/a.cpp new file mode 100644 index 0000000..e67cd7e --- /dev/null +++ b/a.cpp @@ -0,0 +1,115 @@ +#include +#include +#include +#include +#include +#include +#include +#include +using namespace std; + +class CrazyGin { + public: + long double possibility(int numMoves){ + long long case_num = 0; + for(int m = 1; m <= numMoves ; m++){ + case_num += killAt(m, numMoves); + } + long double pos = (long double)case_num; + for(int m = 1; m <= numMoves ; m++){ + pos = pos / 5; + } + return pos; + } + + long long killAt(int m, int numMoves){ + if (m%2 == 1){ + return 0; + } + return untilKillKing(m) * afterKillKing(numMoves - m); + } + + // 王をm手目にちょうど倒す場合の数 + long long untilKillKing(int m){ + vector moveX = {-1, 0, 1,-1, 1}; + vector moveY = {-1,-1,-1, 1, 1}; + long long board[9][9] = {0}; //board[x][y] + long long nextBoard[9][9] = {0}; //次の内容 + vector friendPosX = {4, 5, 7, 2, 5, 2, 3, 7, 0, 1, 6, 8, 3, 5, 0, 1, 2, 4,6, 7, 8}; //王と味方の位置 + vector friendPosY = {0, 4, 3, 4, 4, 5, 5, 5, 6, 6, 6, 6, 7, 7, 8, 8, 8, 8,8, 8, 8}; //王と味方の位置 + board[4][4] = 1; //初期位置 + + long long numPattern = 0; + for(int i = 0; i < m ; i++){ + for(int x = 0; x < 9 ; x++){ + for(int y = 0; y < 9 ; y++){ + for(int j = 0; j < moveX.size(); j++){ + if(x + moveX[j] >= 0 && x + moveX[j] < 9 + && y + moveY[j] >= 0 && y + moveY[j] < 9){ + nextBoard[x + moveX[j]][y + moveY[j]] += board[x][y]; + } + } + } + } + numPattern = nextBoard[4][0]; + //nextBoardをboardにコピー。その際、味方等の位置は0に + for(int y = 0; y < 9 ; y++){ + for(int x = 0; x < 9 ; x++){ + board[x][y] = nextBoard[x][y]; + nextBoard[x][y] = 0; + } + } + for(int k = 0; k < friendPosX.size(); k++){ + board[friendPosX[k]][friendPosY[k]] = 0; + } + } + return numPattern; + } + + // 王を倒したあとremainingSteps動く場合の数 + long long afterKillKing(int remainingSteps){ + vector moveX = {-1, 0, 1,-1, 1}; + vector moveY = {-1,-1,-1, 1, 1}; + long long board[9][9] = {0}; //board[x][y] + long long nextBoard[9][9] = {0}; //次の内容 + vector friendPosX = {5, 7, 2, 5, 2, 3, 7, 0, 1, 6, 8, 3, 5, 0, 1, 2, 4,6, 7, 8}; //味方の位置 + vector friendPosY = {4, 3, 4, 4, 5, 5, 5, 6, 6, 6, 6, 7, 7, 8, 8, 8, 8,8, 8, 8}; //味方の位置 + board[4][0] = 1; //初期位置 + long long numPattern = 0; + for(int i = 0; i < remainingSteps ; i++){ + for(int x = 0; x < 9 ; x++){ + for(int y = 0; y < 9 ; y++){ + for(int j = 0; j < moveX.size(); j++){ + if(x + moveX[j] >= 0 && x + moveX[j] < 9 + && y + moveY[j] >= 0 && y + moveY[j] < 9){ + nextBoard[x + moveX[j]][y + moveY[j]] += board[x][y]; + } + } + } + } + //nextBoardをboardにコピー。その際、味方等の位置は0に + for(int y = 0; y < 9 ; y++){ + for(int x = 0; x < 9 ; x++){ + board[x][y] = nextBoard[x][y]; + nextBoard[x][y] = 0; + } + } + for(int k = 0; k < friendPosX.size(); k++){ + board[friendPosX[k]][friendPosY[k]] = 0; + } + } + + for(int y = 0; y < 9 ; y++){ + for(int x = 0; x < 9 ; x++){ + numPattern += board[x][y]; + } + } + return numPattern; + } +}; + +int main(){ + CrazyGin cg; + int numMoves = 20; + cout << cg.possibility(numMoves); +} diff --git a/a.out b/a.out new file mode 100755 index 0000000000000000000000000000000000000000..37ca55eb12c4ed1b1d84b86a402b26a51f2d7ca1 GIT binary patch literal 20113 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 literal 0 HcmV?d00001 diff --git a/autoexec.sh b/autoexec.sh new file mode 100755 index 0000000..e51d61e --- /dev/null +++ b/autoexec.sh @@ -0,0 +1,22 @@ +#!/bin/sh +if [ $# -ne 2 ]; then + echo "実行するには2個の引数が必要です。 + 第一引数: 監視対象ファイル名 + 第二引数: 監視対象ファイルが更新された際に実行されるコマンド + 例: 'gcc44 -lstdc++ -std=gnu++0x a.cpp && ./a.out'" + exit 1 +fi +echo "監視対象 $1" +echo "実行コマンド $2" +INTERVAL=1 #監視間隔, 秒で指定 +last=`ls --full-time $1 | awk '{print $6"-"$7}'` +while true; do + sleep $INTERVAL + current=`ls --full-time $1 | awk '{print $6"-"$7}'` + if [ $last != $current ] ; then + echo "" + echo "updated: $current" + last=$current + eval $2 + fi +done