とくめい
またやるよ
こんにちは。とくめいです。
広大生はテストお疲れさまでした
そんな疲れた皆さんのために
第2回関数じゃんけん大会を開催します!
ちなみに、楽しいので月一でやる予定です
ここから下は前の記事とほとんど同じですが、ルールと期間は確認しておいてください
関数じゃんけんのルール
C言語に触れたことない人や自信のない人もどうか目を通してください
わからないとこは飛ばしてください
・C言語を使用
・#defineは使わないでね
・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で割ったあまりを出したりコードに書き換えたりするのはこちらでやります
応募方法
以下のようにメールを送ってください
メールアドレス:jankenhu@gmail.com
件名:第2回関数じゃんけん大会
本文:
(Cのコードを書ける人)
1行目に名前(ニックネーム可)または団体名と読み方、2行目に引き分けになった時用のじゃんけんの手を0,1,2で50個記入し、コードをテキストファイル(.txt, .c)にして添付(名前はなんでもOK)
(数式で参加する人)
1行目に名前(ニックネーム可)または団体名と読み方、2行目には上の例のように数式、3行目には引き分けになった時用のじゃんけんの手を0,1,2で50個記入
返信する場合があるので、jankenhu@gmail.comからのメールが届くようにしておいてください
応募期間は6/25(火)23:59まで
質問などはTwitterか問い合わせページへメッセージを送ってください
たのしいからみんなやろうね
参加待ってます
Tweet