Desks will be assigned in the following order:

Order Person Seat
1 Jingyi Duan 32
2 Yixiao Lin 24
3 Kevin Tao 17
4 Jiayin Li 30
5 Steve Broll 16
6 Georgia Smits 31
7 Quinn Simonis 28
8 Yixin Shen 26
9 Tejas Ramdas 22
10 Derek Hoare 29
11 Hantao Wu 45
12 Kyuseong Choi 14
13 Thomas Nolan Whitehead 15
14 Xiaohan Wang 25
15 Zachary James 46
16 Jae Byung Cho 47
17 Navonil Deb 44
18 Jacob Ornelas 48
19 Shira Mingelgrin 42
20 Suvadip Sana 27
21 Youssef Fahmy 43
22 Sang Hee Kim 36
23 Livia Popa 35
24 Ha Nguyen 37
25 Sithija Manage 23
26 Michael Czekanski 21
27 Daniel Coulson 9
28 Nabil Boulos 18
29 Cam Hogan 19
30 Filippo Fiocchi 20
31 Tathagata Sadhukan 33
32 Lin Gui 34
33 Joia Zhang 8
34 Arisina Banerjee 3
35 Minjie Jia 6
36 Haoxuan Fu 5
37 Wang Boyu 4
38 Choi Sunho 1
39 Sharan Sahu 11
40 Wenjie Guan 2
41 Lehao Fu 7
42 Klaus Stier 10

Code used

person <- list()
# Order is so the senior students are prioritised over juniors.
# Within their year students are initially arranged alphabetically 
# by their last name and later rearranged.
person[[1]] <- c("Steve Broll",
                 "Jingyi Duan",
                 "Derek Hoare", 
                 "Jiayin Li",
                 "Yixiao Lin",
                 "Yixin Shen",
                 "Quinn Simonis",
                 "Georgia Smits",
                 "Kevin Tao",
                 "Tejas Ramdas")
person[[2]] <- c("Jae Byung Cho",
                 "Kyuseong Choi",
                 "Navonil Deb",
                 "Youssef Fahmy",
                 "Zachary James",
                 "Shira Mingelgrin",
                 "Jacob Ornelas",
                 "Suvadip Sana",
                 "Xiaohan Wang",
                 "Thomas Nolan Whitehead",
                 "Hantao Wu")
person[[3]] <- c("Nabil Boulos",
                 "Daniel Coulson",
                 "Michael Czekanski",
                 "Sang Hee Kim",
                 "Sithija Manage",
                 "Ha Nguyen",
                 "Livia Popa")
person[[4]] <- c("Filippo Fiocchi",
                 "Lin Gui",
                 "Joia Zhang",
                 "Cam Hogan",
                 "Arisina Banerjee",
                 "Minjie Jia",
                 "Tathagata Sadhukan")
person[[5]] <- c("Sharan Sahu",
                 "Wenjie Guan",
                 "Choi Sunho",
                 "Wang Boyu",
                 "Haoxuan Fu",
                 "Lehao Fu",
                 "Klaus Stier")

n_students <- sum(sapply(person, length))

set.seed(2024) #it's traditional to choose the year as the seed
person_order <- unlist(lapply(person, sample))

# Inititalise with:
# seat_assigned = NULL
# and populate it as the seating arrangements continue.
seat_assigned = NULL
# Pad with NAs to form the third column of the table
seat_assigned = c(seat_assigned, 
                  rep(NA, length(person_order)-
                        length(seat_assigned)-
                        length(person[[length(person)]])))
# The incoming first years don't get a choice of their seat. Initialise with:
# seat_assigned = c(seat_assigned, rep(NA, length(person[[length(person)]])))
# and populate it after everyone else is assigned.
seat_assigned = c(seat_assigned, rep(NA,length(person[[length(person)]])))

seat_assigned[person_order=="Tejas Ramdas"] <- 22
seat_assigned[person_order=="Derek Hoare"] <- 29
seat_assigned[person_order=="Georgia Smits"] <- 31
seat_assigned[person_order=="Jingyi Duan"] <- 32
seat_assigned[person_order=="Jiayin Li"] <- 30
seat_assigned[person_order=="Kevin Tao"] <- 17
seat_assigned[person_order=="Steve Broll"] <- 16
seat_assigned[person_order=="Yixiao Lin"] <- 24
seat_assigned[person_order=="Quinn Simonis"] <- 28
seat_assigned[person_order=="Jae Byung Cho"] <- 47
seat_assigned[person_order=="Kyuseong Choi"] <- 14
seat_assigned[person_order=="Navonil Deb"] <- 44
seat_assigned[person_order=="Youssef Fahmy"] <- 43
seat_assigned[person_order=="Zachary James"] <- 46
seat_assigned[person_order=="Shira Mingelgrin"] <- 42
seat_assigned[person_order=="Katherine Pulham"] <- NA
seat_assigned[person_order=="Suvadip Sana"] <- 27
seat_assigned[person_order=="Xiaohan Wang"] <- 25
seat_assigned[person_order=="Thomas Nolan Whitehead"] <- 15
seat_assigned[person_order=="Hantao Wu"] <- 45
seat_assigned[person_order=="Nabil Boulos"] <- 18
seat_assigned[person_order=="Daniel Coulson"] <- 9
seat_assigned[person_order=="Michael Czekanski"] <- 21
seat_assigned[person_order=="Sang Hee Kim"] <- 36
seat_assigned[person_order=="Sithija Manage"] <- 23
seat_assigned[person_order=="Ha Nguyen"] <- 37
seat_assigned[person_order=="Livia Popa"] <- 35
seat_assigned[person_order=="Jacob Ornelas"] <- 48
seat_assigned[person_order=="Filippo Fiocchi"] <- 20
seat_assigned[person_order=="Joia Zhang"] <- 8
seat_assigned[person_order=="Cam Hogan"] <- 19
seat_assigned[person_order=="Arisina Banerjee"] <- 3
seat_assigned[person_order=="Minjie Jia"] <- 6
seat_assigned[person_order=="Tathagata Sadhukan"] <- 33
seat_assigned[person_order=="Lin Gui"] <- 34
seat_assigned[person_order=="Sharan Sahu"] <- 11
seat_assigned[person_order=="Wenjie Guan"] <- 2
seat_assigned[person_order=="Choi Sunho"] <- 1
seat_assigned[person_order== "Wang Boyu"] <- 4
seat_assigned[person_order=="Haoxuan Fu"] <- 5
seat_assigned[person_order=="Lehao Fu"] <- 7
seat_assigned[person_order=="Klaus Stier"] <- 10
seat_assigned[person_order=="Yixin Shen"] <- 26

#drop <- indices that don't actually need a desk

knitr::kable(cbind.data.frame("Order"=(1:length(person_order)),
                              "Person"=person_order,
                              "Seat"=seat_assigned),
             format = "html", booktabs = F, linesep = "", align="lcr")