Чем объясняется логическое значение этого l oop? - PullRequest
0 голосов
/ 07 февраля 2020

Я учусь на экзамене, и это один из примеров вопросов ...

Можете ли вы запустить этот код в своей голове и предсказать результат?

x=c(T,T,F,T,F)

for (i in 1:5){
  if(i > 1 & i < 5){
     x[i ] = x[i-1] & x[i+1] & x[i]

     print(x)
  }
}



I интерпретировали это как ... в векторе X для значений (T[1],T[2],F[3],T[5],F[5]) ... другими словами для (i in 1:5){if (i >1 & i <5) .... поэтому для значений T[2],F[3],T[4] .... используйте это уравнение x[i ] = x[i-1] & x[i+1] & x[i] и напечатайте значение

с учетом этого утверждения, 1-я и 5-я позиции вектора останутся прежними, поэтому [1] = T и [5] = F.

Ok, x [2] = x [2-1] & x [2 + 1] & x [2]; что было бы T & F & T. учитывая логические логики c, это дало бы x [2] вывод False ...

Теперь это также имеет смысл для x [3], но когда я получаю x [4] Я не понимаю, почему это правда

x [4] = x [3] & x [5] & x [4]; это F & F & T ... так что это все еще Ложь ... но вывод я получаю

[1]  TRUE FALSE FALSE  TRUE FALSE
[1]  TRUE FALSE FALSE  TRUE FALSE
[1]  TRUE FALSE FALSE FALSE FALSE

Может кто-нибудь, пожалуйста, объясните мне это.

...