回答編集履歴

1 質問を読み間違えた

ozwk

ozwk score 9460

2015/07/31 17:12  投稿

考え方だけの上に、実装が面倒かもですが、
複数人でジャンケンをやり、勝者グループ、敗者グループに分かれて更にジャンケンをして、
ジャンケンをする相手がいなくなるまで繰り返すとすると
あるジャンケングループをX,
そのグループ内でジャンケンをし、
勝者グループをX_W、
敗者グループをX_Lとすると、
f(X)={f(X_W),f(X_L)}
ただし、X内に一人しかいない:X={A}の場合
f(X)=A
となるような関数fを作れば、戻り値は順位で並んだ参加者リストになります。
例:A,B,C3人でじゃんけん大会
最初A,Bが勝ち、その後Aが勝ったとする。
f({A,B,C})
={ f({A,B}) , f({C}) }
={ { f({A}) , f({B}) } ,C }
={ { A , B } ,C }
メンバーに勝者リストと敗者リストを持つクラスを作って
それを返せばいいと思います。

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る