2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

[小ネタ] 簡単なアルゴリズムを使ってレクリエーションのチーム分けを解決した話

Last updated at Posted at 2024-12-16

事の経緯

これはとあるレクリエーションを企画していたときの話なのですが、「1回目のゲームと2回目のゲームのチーム分けで同じチームになる人が出ないようにしてほしい。」という要望がありました。どうしたものかと思ったのですが以下のコードで簡単に解決できました

コード

今回は26チームに6人ずつという程で記載しています

#A-Zまでの配列
team = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T','U','V','W','X','Y','Z']

#チームメンバー数
NUM_OF_MEMBER=6

for i in range(len(team)):
    for j in range(NUM_OF_MEMBER):
        print(team[i], end='->')
        # 剰余で配列のインデックスが漏れないようにする
        print(team[(i+j)%len(team)])

出力結果

A->A
A->B
A->C
A->D
A->E
A->F

B->B
B->C
B->D
B->E
B->F
B->G

C->C
C->D
C->E
C->F
C->G
C->H

解説

基準となるチームに+0~5することでチームをばらけさせることができます。
i+jが26を超えてしまった場合でも剰余を使う事でインデックスが漏れるのを防ぐことができます。

おわりに

アルゴリズム、、、と呼ぶにはちょっと陳腐なものですが、プログラミングで解決できる課題は意外と日常に溢れているんだなと思いました。

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?