/**
 * Given a list of site coordinates, site conditions, and site artifacts,
 * this function returns the indices of the archaeological sites that meet
 * the specified conditions.
 *
 * @param siteCoordinates List of tuples containing the coordinates of each site.
 * @param siteConditions List of boolean values indicating the presence of specific conditions at each site.
 * @param siteArtifacts List of boolean values indicating the presence of artifacts at each site.
 * @return List of indices of the archaeological sites that meet the conditions.
 *
 * Example:
 * findArchaeologicalSites(listOf(Pair(10, 20), Pair(30, 40), Pair(50, 60), Pair(70, 80)), listOf(true, false, true, true), listOf(false, false, true, true))
 * Output: [2, 3]
 */
fun findArchaeologicalSites(siteCoordinates: List<Pair<Int, Int>>, siteConditions: List<Boolean>, siteArtifacts: List<Boolean>): List<Int> {

    val archaeologicalSites = mutableListOf<Int>()

    for (i in siteCoordinates.indices) {
        // Add the index to the list if the site meets the specified conditions
        if (siteConditions[i] && siteArtifacts[i]) {
            archaeologicalSites.add(i)
        }
    }

    return archaeologicalSites
}
/**
 * Given a list of site coordinates, site conditions, and site artifacts,
 * this function returns the indices of the archaeological sites that meet
 * the specified conditions.
 *
 * @param siteCoordinates List of tuples containing the coordinates of each site.
 * @param siteConditions List of boolean values indicating the presence of specific conditions at each site.
 * @param siteArtifacts List of boolean values indicating the presence of artifacts at each site.
 * @return List of indices of the archaeological sites that meet the conditions.
 *
 * Example:
 * findArchaeologicalSites(listOf(Pair(10, 20), Pair(30, 40), Pair(50, 60), Pair(70, 80)), listOf(true, false, true, true), listOf(false, false, true, true))
 * Output: [2, 3]
 */
fun findArchaeologicalSites(siteCoordinates: List<Pair<Int, Int>>, siteConditions: List<Boolean>, siteArtifacts: List<Boolean>): List<Int> {
/**
 * Given a list of site coordinates, site conditions, and site artifacts,
 * this function returns the indices of the archaeological sites that meet
 * the specified conditions.
 *
 * @param siteCoordinates List of tuples containing the coordinates of each site.
 * @param siteConditions List of boolean values indicating the presence of specific conditions at each site.
 * @param siteArtifacts List of boolean values indicating the presence of artifacts at each site.
 * @return List of indices of the archaeological sites that meet the conditions.
 *
 * Example:
 * findArchaeologicalSites(listOf(Pair(10, 20), Pair(30, 40), Pair(50, 60), Pair(70, 80)), listOf(true, false, true, true), listOf(false, false, true, true))
 * Output: [2, 3]
 */
fun findArchaeologicalSites(siteCoordinates: List<Pair<Int, Int>>, siteConditions: List<Boolean>, siteArtifacts: List<Boolean>): List<Int> {

    val archaeologicalSites = mutableListOf<Int>()

    for (i in siteCoordinates.indices) {
        // Add the index to the list if the site meets the specified conditions
        if (siteConditions[i] && siteArtifacts[i]) {
            archaeologicalSites.add(i)
        }
    }

    return archaeologicalSites
}