У меня есть некоторые данные о рейсе / пассажире, и я пытаюсь найти максимальное количество стран, в которых был пассажир, ДО того, как отправиться в Великобританию.
Я сузил проблему до конкретного случая, чтобы сохранить еепросто.
для пассажира A
val ts = List("il", "ar", "ca", "bm", "au", "jo", "uk", "jo", "th", "uk", "ca", "cn", "sg", "il")
Мой подход заключался в циклическом просмотре списка ts (сокращение от последовательности поездок). * когда значение! = "uk", то счетчик увеличивается на 1 *, как только мы достигаем случая, когда значение = "uk", затем сохраняем значение этого счетчика в run_length и затем сбрасываем счетчик. * после того как мы перебрали весь список, мы должны найти максимальное значение run_length.
Теоретически это должно дать максимальное количество мест, в которых находился пассажир до того, как он отправился в Великобританию.
Однако я получаю ошибку в своем коде.
import scala.collection.mutable.ArrayBuffer
var counter = 0
var runs: ArrayBuffer[Int] = ArrayBuffer()
val ts = List("il", "ar", "ca", "bm", "au", "jo", "uk", "jo", "th", "uk", "ca", "cn", "sg", "il")
for (i <- ts){
if (i != "uk"){
counter += 1
}
else {
runs += counter
var counter = 0
}
}
val max_run = runs.max
println(max_run)
Я получаю ошибку:
<console>:38: error: forward reference extends over definition of variable counter
runs += counter
Я ожидал получить значение 6, потому что максимальное количество элементов перед "uk"это 6.
Я новичок в Scala (буквально делаю это только 2 дня). Будем благодарны за любую помощь в решении этой проблемы.