Эй, ребята, я пытался решить эту проблему, используя код R, но не получил результата. Я не могу найти проблему с кодом, а также - PullRequest
0 голосов
/ 16 апреля 2020
s <- sample(1:9, replace = FALSE)
for (i in 1:1000000) {
  if ((10*s[1] + s[2])*s[3] + (10*s[6] + s[7]) == (10*s[8] + s[9])) {
    c <- (10*s[1] + s[2])*s[3]
    f <- c %% 10
    if (f != s[1] & f != s[2] & (c - f)/10 != s[1] & (c - f)/10 != s[2]) {
      print(s)
    }
  }else{
      s <- sample(1:9, replace = FALSE)
    }

}

Вот ссылка на проблему, которую я пытался решить.

enter image description here

Вот правильный ответ на проблему, которую мой R l oop не может решить.

enter image description here

Если я выбрал s в качестве правильного ответа, я понял его правильно, что означает, что нет проблема с оператором if.

    s <- c(1,7,4,6,8,2,5,9,3)
if ((10*s[1] + s[2])*s[3] + (10*s[6] + s[7]) == (10*s[8] + s[9])) {
  c <- (10*s[1] + s[2])*s[3]
  f <- c %% 10
  if (f != s[1] & f != s[2] & (c - f)/10 != s[1] & (c - f)/10 != s[2]) {
    print(s)
  }
  }else{
    s <- sample(1:9)
}

Вот вывод с правильным ответом.

enter image description here

1 Ответ

0 голосов
/ 18 апреля 2020

Проблема с блокировкой заключается в том, что образец не обновляется на каждой итерации в течение -1 oop. Он обновляется только в том случае, если выполняется первый оператор if, а второй оператор else - что довольно редко.

Вот пересмотренный код, получающий образец fre sh на каждой итерации.

for (i in 1:1000000) {
  # Get a fresh sample on each iteration
  s <- sample(1:9, replace = FALSE)

  if ((10*s[1] + s[2])*s[3] + (10*s[6] + s[7]) == (10*s[8] + s[9])) {
    c <- (10*s[1] + s[2])*s[3]
    f <- c %% 10
    if (f != s[1] & f != s[2] & (c - f)/10 != s[1] & (c - f)/10 != s[2]) {
      print(s)
    }
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...