0

学校でのレッスン用にカップルを自動的に作成するプログラムを作成する必要がある学校の課題があります。この場合、6 つのレッスンがあり、各レッスンで別の人とパートナーを組むことになります。そのため、1 週目は personとパートナーを組み、次の週は person とパートナーを組むことができませaん。ba

クラスを 2 つに分割するコードをいくつか書きましたが、毎週カップルを変更する方法がわかりません。

これが私がすでに持っているコードです(英語ではなく申し訳ありません):

public void maakKoppels() {
    if (leerlingenLijst.size() % 2 == 1) {
        // if you have an odd number of students it adds the "Bye" student
        leerlingenLijst.add(new Leerling("Bye"));
    }

    for (int i = 1; i <= 6; i++) {
        //its needed for 6 lessons so it does it 6 times
        maakKoppels(i, leerlingenLijst);
    }
}

public void maakKoppels(int weekNum, ArrayList<Leerling> leerlingenLijst) {
    int midden = leerlingenLijst.size() / 2; //split the arraylist in 2

    ArrayList lijst1 = new ArrayList();
    for (int j = 0; j < midden; j++) {
        lijst1.add(leerlingenLijst.get(j));
    }

    ArrayList lijst2 = new ArrayList();
    for (int j = leerlingenLijst.size() - 1; j >= midden; j--) {
        lijst2.add(leerlingenLijst.get(j));
    }
    // here it fills the lessons with the 2 lists. weekNum is the lesson
    // number and the name on lijst1 at index 0 couples with the name on
    // lijst2 at index zero
    practica.add(new Practicum(weekNum, lijst1, lijst2));
}
4

3 に答える 3

0

クラスを 2 つに分割するのは良いスタートです。これで、list2 をそのままにして、{list1.get(1),list2.get(1)}、{list1.get(2),list2.get(2)} などをペアにして、list1 をローテーションできます。list1 を 1 つずつローテーションします。 (週) もう一度やり直してください。

6 週間働く学生が 12 人以上いる場合。このアプローチでは、同じリストにある生徒がペアになることはありません。

于 2014-01-21T15:00:14.200 に答える
0

解決する1つの方法は次のとおりです...

  1. クラス全体を 2 つの配列リストに分割します。L1 & L2
  2. 変数オフセットを作成する = 0
  3. 最初の週は、L1[0] と L2[0+offset] を 1 つのカップルとして割り当て、L1[1] と L2[1+offset] を別のカップルとして割り当てます。
  4. 2 週目のオフセット = 1
  5. L1[0] と L2[0+offset] を 1 つのカップルとして割り当てますが、今回はオフセット値が増加するため、実際には L1[0] と L2[1] をカップルとして割り当てます。6. L2 の長さを超えないようにするには、(0+offset)%L2.length() を使用します。

これにより、毎週異なるカップルがいることが保証されます。

于 2014-01-21T15:00:21.797 に答える