# Arup Guha
# 11/9/2020
# Solution to COP 2930 Program 10 Part B

def getQuarantineList(seatchart, person):

    # Don't know where the infected student is at first.
    row = -1
    col = -1

    # First find the person, if they exist.
    for i in range(len(seatchart)):
        for j in range(len(seatchart[i])):
            if seatchart[i][j] == person:
                row = i
                col = j

    res = []
    
    # No one infected in class, return an empty list.
    if row == -1:
        return res

    # There is a person in front of the infected person.
    if row > 0:
        res.append(seatchart[row-1][col])

    # Behind them.
    if row < len(seatchart)-1:
        res.append(seatchart[row+1][col])

    # To their left.
    if col > 0:
        res.append(seatchart[row][col-1])

    # And to their right.
    if col < len(seatchart[row])-1:
        res.append(seatchart[row][col+1])

    # Here is the list!
    return res

def test():

    scienceClass = [["Anya", "Jane", "Mick", "Lauren"],
                ["Jamil", "Prince", "Janie", "Talia"],
                ["George", "Madison", "Connor", "Jade"]]

    # First test corners.
    print(getQuarantineList(scienceClass, "Anya"))
    print(getQuarantineList(scienceClass, "Lauren"))
    print(getQuarantineList(scienceClass, "George"))
    print(getQuarantineList(scienceClass, "Jade"))

    # Next test borders.
    print(getQuarantineList(scienceClass, "Jane"))
    print(getQuarantineList(scienceClass, "Jamil"))
    print(getQuarantineList(scienceClass, "Connor"))
    print(getQuarantineList(scienceClass, "Talia"))

    # Now test inside and someone not in the class.
    print(getQuarantineList(scienceClass, "Janie"))
    print(getQuarantineList(scienceClass, "Prince"))
    print(getQuarantineList(scienceClass, "James"))

    # This case is usually tricky!
    smallClass = [["Joe"]]
    print(getQuarantineList(smallClass, "Joe"))
    print(getQuarantineList(smallClass, "NotJoe"))

    # Next the one row class.
    atfrontClass = [["Alia","Ben","Cynthia","Darnay","Evelyn"]]
    print(getQuarantineList(atfrontClass, "Alia"))
    print(getQuarantineList(atfrontClass, "Darnay"))
    print(getQuarantineList(atfrontClass, "Evelyn"))
    print(getQuarantineList(atfrontClass, "Flynn"))

    # Lastly, one column
    onecolClass = [["Alia"],["Ben"],["Cynthia"],["Darnay"],["Evelyn"]]
    print(getQuarantineList(onecolClass, "Alia"))
    print(getQuarantineList(onecolClass, "Darnay"))
    print(getQuarantineList(onecolClass, "Evelyn"))
    print(getQuarantineList(onecolClass, "Flynn"))

test()
