Function
# Function to assign teams
assign_teams <- function(names, team_size) {
# Shuffle the names
shuffled_names <- sample(names)
# Calculate the number of full teams
num_full_teams <- floor(length(names) / team_size)
# Create full teams
teams <- split(shuffled_names[1:(num_full_teams * team_size)],
rep(1:num_full_teams, each = team_size))
# Add any remaining members to the last team
if (length(names) %% team_size != 0) {
teams[[length(teams) + 1]] <- shuffled_names[(num_full_teams * team_size + 1):length(names)]
}
return(teams)
}
# Main function
main <- function() {
# Manually assign names here
names <- c("Nathan", "Yasmine", "Camille", "Iran", "Aryaman", "Jasmine", "Catie", "Andrew", "Emily")
# Uncomment the following line if you want to input names manually at runtime
# names <- unlist(strsplit(readline("Enter names separated by commas: "), ","))
# Remove any leading or trailing whitespace from names
names <- trimws(names)
# Get team size from user
team_size <- as.integer(readline("Enter the desired team size: "))
# Assign teams
teams <- assign_teams(names, team_size)
# Report results
cat("\nTeam Assignments:\n")
for (i in 1:length(teams)) {
cat(sprintf("Team %d: %s\n", i, paste(teams[[i]], collapse = ", ")))
}
}
# Run the main function
main()
3
Team Assignments:
Team 1: Nathan, Yasmine, Camille
Team 2: Jasmine, Andrew, Emily
Team 3: Catie, Iran, Aryaman
LS0tCnRpdGxlOiAiVGVhbSBnZW5lcmF0b3IiCm91dHB1dDogaHRtbF9ub3RlYm9vawotLS0KCkZ1bmN0aW9uCmBgYHtyfQojIEZ1bmN0aW9uIHRvIGFzc2lnbiB0ZWFtcwphc3NpZ25fdGVhbXMgPC0gZnVuY3Rpb24obmFtZXMsIHRlYW1fc2l6ZSkgewogICMgU2h1ZmZsZSB0aGUgbmFtZXMKICBzaHVmZmxlZF9uYW1lcyA8LSBzYW1wbGUobmFtZXMpCiAgCiAgIyBDYWxjdWxhdGUgdGhlIG51bWJlciBvZiBmdWxsIHRlYW1zCiAgbnVtX2Z1bGxfdGVhbXMgPC0gZmxvb3IobGVuZ3RoKG5hbWVzKSAvIHRlYW1fc2l6ZSkKICAKICAjIENyZWF0ZSBmdWxsIHRlYW1zCiAgdGVhbXMgPC0gc3BsaXQoc2h1ZmZsZWRfbmFtZXNbMToobnVtX2Z1bGxfdGVhbXMgKiB0ZWFtX3NpemUpXSwgCiAgICAgICAgICAgICAgICAgcmVwKDE6bnVtX2Z1bGxfdGVhbXMsIGVhY2ggPSB0ZWFtX3NpemUpKQogIAogICMgQWRkIGFueSByZW1haW5pbmcgbWVtYmVycyB0byB0aGUgbGFzdCB0ZWFtCiAgaWYgKGxlbmd0aChuYW1lcykgJSUgdGVhbV9zaXplICE9IDApIHsKICAgIHRlYW1zW1tsZW5ndGgodGVhbXMpICsgMV1dIDwtIHNodWZmbGVkX25hbWVzWyhudW1fZnVsbF90ZWFtcyAqIHRlYW1fc2l6ZSArIDEpOmxlbmd0aChuYW1lcyldCiAgfQogIAogIHJldHVybih0ZWFtcykKfQoKIyBNYWluIGZ1bmN0aW9uCm1haW4gPC0gZnVuY3Rpb24oKSB7CiAgIyBNYW51YWxseSBhc3NpZ24gbmFtZXMgaGVyZQogIG5hbWVzIDwtIGMoIk5hdGhhbiIsICJZYXNtaW5lIiwgIkNhbWlsbGUiLCAiSXJhbiIsICJBcnlhbWFuIiwgIkphc21pbmUiLCAiQ2F0aWUiLCAiQW5kcmV3IiwgIkVtaWx5IikKICAKICAjIFVuY29tbWVudCB0aGUgZm9sbG93aW5nIGxpbmUgaWYgeW91IHdhbnQgdG8gaW5wdXQgbmFtZXMgbWFudWFsbHkgYXQgcnVudGltZQogICMgbmFtZXMgPC0gdW5saXN0KHN0cnNwbGl0KHJlYWRsaW5lKCJFbnRlciBuYW1lcyBzZXBhcmF0ZWQgYnkgY29tbWFzOiAiKSwgIiwiKSkKICAKICAjIFJlbW92ZSBhbnkgbGVhZGluZyBvciB0cmFpbGluZyB3aGl0ZXNwYWNlIGZyb20gbmFtZXMKICBuYW1lcyA8LSB0cmltd3MobmFtZXMpCiAgCiAgIyBHZXQgdGVhbSBzaXplIGZyb20gdXNlcgogIHRlYW1fc2l6ZSA8LSBhcy5pbnRlZ2VyKHJlYWRsaW5lKCJFbnRlciB0aGUgZGVzaXJlZCB0ZWFtIHNpemU6ICIpKQogIAogICMgQXNzaWduIHRlYW1zCiAgdGVhbXMgPC0gYXNzaWduX3RlYW1zKG5hbWVzLCB0ZWFtX3NpemUpCiAgCiAgIyBSZXBvcnQgcmVzdWx0cwogIGNhdCgiXG5UZWFtIEFzc2lnbm1lbnRzOlxuIikKICBmb3IgKGkgaW4gMTpsZW5ndGgodGVhbXMpKSB7CiAgICBjYXQoc3ByaW50ZigiVGVhbSAlZDogJXNcbiIsIGksIHBhc3RlKHRlYW1zW1tpXV0sIGNvbGxhcHNlID0gIiwgIikpKQogIH0KfQoKIyBSdW4gdGhlIG1haW4gZnVuY3Rpb24KbWFpbigpCmBgYAoK