Sobes.tech
Middle

/* Les places dans le cinéma sont alignées en une rangée. Le spectateur qui vient d'arriver choisit une place, pour s'asseoir aussi loin que possible des autres spectateurs dans la rangée. C'est-à-dire, la distance entre la place où il s'assoit et la plus proche Il est garanti qu'il y a toujours des places libres dans la rangée et qu'au moins Écris une fonction qui, étant donné une rangée de places (un tableau de zéros et de uns) Exemple: Entrée : [1, 0, 0, 0, 1] Sortie : 2 Entrée : [1, 0, 1, 0, 0, 1, 0, 0, 0, 1] Sortie : 2 Entrée : [1, 0, 1, 0] Sortie : 1 */

sobes.tech IA

Réponse de l'IA

Задача — найти место (индекс) в ряду, где новый зритель сядет максимально далеко от уже занятых мест.

Идея решения:

  • Пройти по ряду, найти все свободные места (0).
  • Для каждого свободного места вычислить расстояние до ближайшего занятого места (1).
  • Выбрать место с максимальным таким расстоянием.

Пример реализации на Go:

func maxDistanceSeat(row []int) int {
    n := len(row)
    maxDist := -1
    seatIndex := -1

    for i := 0; i < n; i++ {
        if row[i] == 0 {
            // Найдем расстояние до ближайшего занятого места
            dist := n
            for j := 0; j < n; j++ {
                if row[j] == 1 {
                    d := abs(i - j)
                    if d < dist {
                        dist = d
                    }
                }
            }
            if dist > maxDist {
                maxDist = dist
                seatIndex = i
            }
        }
    }
    return seatIndex
}

func abs(x int) int {
    if x < 0 {
        return -x
    }
    return x
}

Пример использования:

row := []int{1, 0, 0, 0, 1}
seat := maxDistanceSeat(row) // seat == 2

Таким образом, функция возвращает индекс места, где зритель будет сидеть максимально далеко от других.