関数じゃんけんとは?
プログラミング(C言語)における関数を作ってじゃんけんで戦わせる超面白競技です!!!!
プログラミングができなくても参加可能!!
関数じゃんけんのルール
・C言語を使用
・0から1づつ増える整数n, 現在の勝利数w(どちらもunsigned long int型)を引数に取り、返り値が0, 1, 2のいずれかとなる関数を作成
・0はグー、1はチョキ、2はパーとして扱う
・関数の名前はpとして作成(対戦時はこちら側で別のものに書き換える p内で再帰的に呼び出した関数pも書き換え対象)
・関数の外でなんかするのはだめ
関数内に収めるように書いてください
・ヘッダファイルはstdio.h, math.hを使用する
・n=0のとき(最初)は0(グー)を返さなければならない(ifなどを使ってもOK)
・勝利数が先に10000に達した方の勝利
・nが1000000に達した時点で勝者が決定していない場合は引き分け
勝敗を決めなければならない場合は事前に決めておいた手で代理じゃんけんを行う(詳しくは応募方法へ)
・擬似乱数の使用は禁止
・相手の手の情報の使用は禁止
・マシンの破壊、不具合発生を目的としたコードを含んでいると判断された場合は失格
・ログなどのファイルの出力は可能だが、終了時に削除されていなければならない
・上記のルールを自分の関数が満たすか軽くでいいのでテストしてから送るようにしてください(一応こちらでチェックします 多少の間違いであれば修正もします)
↓簡単なものではありますが、サンプルです
int p(unsigned long int n, unsigned long int w){
if(w < 500){
return (n * (n + 2)) % 3
}
else{
return n % 3;
}
}
上のルールがわからなかった人へ
関数とは要するにf(x)みたいなやつです
今回で言えばp(n)ですね
nは0から始まって1づつ増えていく整数です
p(n)=0でグー、1でチョキ、2がパーを表します
そのp(n)を作って戦わせるのが関数じゃんけんです
p(n)は0,1,2のいずれかでないといけませんが、最終的に3で割った余りを出すようにするので大丈夫です
整数にならなくても小数点以下は切り捨てるので問題ありません
しかし、負の値になってしまうとどうしようもなくなるので注意してください
そしてもう一つ
aのb乗はa^bとしてください
√(ルート)とかは変換で出てきますが、これはどうしようもないので・・・
n+1の3乗とかしたいときは
(n+1)^3
という風にまとまりは()で閉じるようにしてください
例を載せておきます
例1.p(n)=2n+5
例2.p(n)=(5n+2)^(n+1)
例3.p(n)=√((n+3)×n)+5n
3で割ったあまりを出したりコードに書き換えたりするのはこちらでやります
ようこそ
ルールが把握できたら、これで君も関数じゃんけんマスターだ!!!
対戦用のコードや今までの関数はこちらから
質問等はお問い合わせページかじゃんサーのTwitterへどうぞ