Найти соседей по матрице ТИ-84 - PullRequest
0 голосов
/ 05 сентября 2018

Я делаю скелетную игру «Сапер» в TI-Basic для своего TI-84 Plus. Я застрял на добавлении чисел вокруг мин. У меня есть номер 9, представляющий бомбы, так как TI-Basic не допускает другие типы данных в матрицах. Например у меня есть матрица

0 0 0 0 0 0 0 9 0
0 9 0 0 0 0 0 0 0
0 0 0 0 0 9 0 0 0
0 0 9 0 9 0 0 0 0
0 0 0 0 9 0 0 0 0
9 0 0 0 0 0 0 0 0
0 9 0 0 0 0 0 0 0
0 0 0 0 0 9 0 0 0
0 0 0 0 0 0 0 0 9

Я бы хотел изменить это на

1 1 1 0 0 0 1 9 1
1 9 1 0 1 1 2 1 1
1 2 2 0 2 9 1 0 0
0 1 9 3 9 3 1 0 0
1 2 0 3 9 2 0 0 0
9 2 1 1 1 1 0 0 0
2 9 1 0 1 1 1 0 0
1 1 1 0 1 9 1 1 1
0 0 0 0 1 1 1 1 9

Извините, если я пропустил какие-либо цифры, я сделал это вручную.

Любые идеи, как я мог бы сделать это в TI-Basic

1 Ответ

0 голосов
/ 21 сентября 2018

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

For(a, 1, 9

For(b, 1, 9

End

End

Затем, когда вы проверяете соседей, вы должны учитывать углы и ребра, которые не имеют восьми пробелов вокруг них.

For(a, 1, 9

For(b, 1, 9

If a>1 and a <9 and b>1 and b<9

Then

End

End

End

Теперь мы можем проверить, сколько мест вокруг нас 9. Мы будем использовать счетчик «с», чтобы посчитать, сколько раз мы находим 9. Это утомительно, но это самый простой способ

0->c

For(a, 1, 9

For(b, 1, 9

If a>1 and a <9 and b>1 and b<9

Then

c + ([a](a-1, b-1)=9) + ([a](a-1, b)=9) + ([a](a-1, b+1)=9) + ([a](a, b-1)=9) + ([a](a, 
b+1)=9) + ([a](a+1, b-1)=9) + ([a](a+1, b)=9) + ([a](a+1, b+1)=9)->c

End

c->[a](a, b)

End

End

Я не учел углы и края, вам просто нужно добавить еще один, если StatementHope это помогло!

...