Возможно ли зациклить хотя бы 2 значения, используя только 1 цикл? - PullRequest
0 голосов
/ 21 мая 2019

У меня есть изменяемые переменные x и y, и я могу использовать только цикл while (что-то). Я хочу просмотреть 0 ... 9 и 0 ... 9. Я сделал много попыток, используя разные операторы if и в разных порядках. Вот что у меня есть.

open System

let mutable x = 0
let mutable y = 0

let n = 9

while x <> n && y <> n do
    Console.SetCursorPosition(x, y)
    printf "."

    // ...

Console.Read() |> ignore

1 Ответ

1 голос
/ 22 мая 2019

Обычный способ сделать это - использовать два вложенных цикла - если вы выполняете итерации по известному количеству элементов (а не неограниченно, пока не выполняется какое-либо условие), тогда цикл for проще:

for x in 0 .. 9 do
  for y in 0 .. 9 do
    Console.SetCursorPosition(x, y)
    printf "."

Вложенный цикл повторяется 10 раз, а внешний цикл запускает один 10 раз, поэтому вы получаете 100 выполнений вложенного тела.

Вы можете сделать это только с одним циклом, если вы итерируете более 100 значений, то есть 0 .. 10*10-1, что составляет 0 .. 99.Если у вас есть числа от 0 до 99, вы можете вычислить x и y, взяв x=n/10 и y=n%10:

for n in 0 .. 10 * 10 - 1 do
  let x = n / 10
  let y = n % 10
  Console.SetCursorPosition(20+x, y)
  printf "."
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...