Я хочу взять список слов или имен и вывести их в группы в определенном порядке через php или Java, но не знаю, как это сделать. Я приведу пример с заказом: (Чтобы уточнить, это не домашняя работа. Я делаю это для турнира, который я провожу, и было бы легко генерировать семена во время мероприятия)
Количество имен: 12
Размер групп: 3
Выход:
Группа 1:
Хильде Франкум
Герминия Лакин
Лашон Кван
Группа 2:
Эрли Апхофф
Хермелинда Хостеттер
Эстер Фаррай
Группа 3:
Богатый лаклер
Бернис Сильва
Тана Ольгин
Группа 4:
Висента Баскин
Блоссом Несби
Памула Давин
Список занимает имя в следующей строке и вставляет его в новую группу в том порядке, в котором он указан, пока не останется больше групп, а затем перезапускается до тех пор, пока не останется ни одного имени.
Пример кода PFB. Я создал класс Group, который содержит группу (массив объектов String). ArrayList, который содержит случайное количество объектов группы.
Программа динамическая на основе входных имен и размера групп:
import java.util.ArrayList;
import java.util.List;
public class Group {
String group[];
public Group(int groupSize) {
this.group = new String[groupSize];
}
@Override
public String toString() {
StringBuilder strBuilder = new StringBuilder();
for (int i = 0; i < group.length; i++) {
if (i != 0)
strBuilder.append(", ");
strBuilder.append(group[i]);
}
return strBuilder.toString();
}
public static void main(String[] args) {
String[] inputArray = { "Hilde Frankum", "Earlie Uphoff",
"Rich Laclair", "Vicenta Baskin", "Herminia Lakin",
"Hermelinda Hostetter", "Bernice Sylva", "Blossom Nesby",
"Lashon Kwan", "Esther Farraj", "Tana Olguin", "Pamula Davin" };
int numGroups = 4;
createGroup(inputArray, numGroups);
}
public static void createGroup(String inputArray[], int numGroups) {
int groupSize = inputArray.length / numGroups;
List<Group> lists = new ArrayList<Group>();
for (int i = 0; i < numGroups; i++)
lists.add(new Group(groupSize));
for (int i = 0, x = 0; i < groupSize; i++)
for (int j = 0; j < numGroups; j++)
lists.get(j).group[i] = inputArray[x++];
for (Group groups : lists)
System.out.println(groups.toString());
}
}
Вот метод Java, который должен это сделать.
String[][] groupThem(ArrayList<String> /*could be an array without many changes*/ things, int sizeOfGroups){
int qtyOfThings = things.size();
int qtyOfGroups = qtyOfThings / sizeOfGroups;
String[][] groups = new String[qtyOfGroups][sizeOfGroups];
int counter = 0;
while(counter < qtyOfThings){
groups[counter%qtyOfGroups][counter%sizeOfGroups] = things.get(counter);
counter++;
}
return groups;
}
$arrayOfNames = array(
'Hilde Frankum',
'Earlie Uphoff',
'Rich Laclair',
'Vicenta Baskin',
'Herminia Lakin',
'Hermelinda Hostetter',
'Bernice Sylva',
'Blossom Nesby',
'Lashon Kwan',
'Esther Farraj',
'Tana Olguin',
'Pamula Davin'
);
sort($arrayOfNames);
$ar = array_chunk($arrayOfNames, 3);
foreach($ar as $key => $groups){
echo "Group #" . ($key + 1) .' '. implode(' ',$groups) . "\n";
}