Resolução de Exercício

1. Resolução de Exercício

Caio Cachoni
EoCacho

(usa Ubuntu)

Enviado em 17/06/2021 - 12:30h

Olá pessoal, alguém poderia me dizer como resolver o exercício abaixo sem a utilização de bibliotecas e definições de funções? Preciso entregar este exercício para o professor até dia 20/06/2021. Desde já agradeço pela compreensão!
Uma pedra bem arredondada está no topo de uma montanha e vai rolando montanha abaixo. O percurso da pedra é bem particular, ela inicia em um nível em que vai rolando para a esquerda ao longo de um trecho, e ela só desce para o nível logo abaixo se houver um buraco no trecho em seu percurso, caso contrário ela encontra uma parede na rocha e fica naquele nível. Se a pedra cair para o próximo nível inferior, ela vai rolando para a direita até encontrar um buraco ou uma pedra. Em cada nível a pedra vai rolando somente à esquerda e depois, se ela vai para o próximo nível inferior, ela rola somente à direita, e isso vai se alternando a cada nível até que a pedra chegue no pé da montanha.

A pedra só vai chegar ao pé da montanha se dentro de cada nível desde o topo da montanha, houver um buraco no percurso da pedra que a fizer cair para o próximo nível. A pedra pode cair em um próximo nível diretamente para um buraco. A pedra possui um metro de diâmetro e cada metro do nível possui uma pedra (representada pela letra X) ou um buraco (representado pela letra O). A pedra inicia em um dos trechos de um metro do topo da montanha.

Faça um programa que leia em uma mesma linha, a quantidade N de níveis da montanha, a quantidade M de metros de cada nível, e em qual posição inicial I do topo em que a pedra está colocada. A seguir, leia várias linhas da matriz que representa a montanha, em que cada linha possui M valores (X ou O) separados por espaços. Mostre se a pedra chegou até o pé da montanha ou ficou presa em algum nível da montanha, de acordo com o exigido na Saída. Ambas as numerações de nível e de metros em cada nível iniciam em 0.

Entrada:
Há vários casos de teste. A execução finaliza quando é encontrado o fim de arquivo (EOF). Deve-se ler a quantidade N de níveis da montanha, a quantidade M de metros de cada nível, e em qual posição inicial I do topo em que a pedra está colocada. A seguir, leia várias linhas da matriz que representa a montanha, em que cada linha possui M valores (X ou O) separados por espaços.

Saída:
Se a pedra chegou até o pé da montanha mostre a mensagem "Desceu a montanha na posição P", onde P é o valor numérico da posição do buraco do último nível por onde a pedra chegou. Caso contrário, mostre a mensagem "A pedra ficou presa no nível X e posição Y" onde X e Y indicam os valores numéricos, respectivamente, do nível e da posição (0 ou M-1) dentro do nível em que a pedra ficou presa. Após cada caso de teste deve haver uma linha em branco, exceto após o último caso de teste.

Samples Input:
5 4 2
O X X X
X X X O
X O X X
X O X X
O X X O
4 3 1
X O X
X X O
O X X
X X X

Samples Output:
Desceu a montanha na posição 0

A pedra ficou presa no nível 3 e posição 2


  


2. Re: Resolução de Exercício

Lisandro Guerra
Lisandro

(usa Linux Mint)

Enviado em 17/06/2021 - 17:18h

Conseguiu fazer alguma parte?
Tenta começar, mesmo que esteja errado, e posta que o pessoal vai ajudando. Ai tu vai aprendendo. Se alguém postar a resposta pronta tu não vai evoluir.
Parece que pode ser resolvida com listas.


3. Re: Resolução de Exercício

Caio Cachoni
EoCacho

(usa Ubuntu)

Enviado em 17/06/2021 - 17:22h

até agora eu tenho isso daqui:

while True:
NMPi = input().split()
N = int(NMPi[0])
M = int(NMPi[1])
Pi = int(NMPi[2])

if N == 0 and M == 0 and Pi == 0:
break
Ma = []

for i in range(N):
Ma.append(input().split())

i = 0
prendeu = False
pedra = Pi-1

while i < N and not prendeu:
for j in range(N):
for k in range(M):
if Ma[N][M] == "O":



4. Re: Resolução de Exercício

Lisandro Guerra
Lisandro

(usa Linux Mint)

Enviado em 17/06/2021 - 17:26h

Coloquei teu código entre tags [ code ] [ /code ] para ficar formatado.


EoCacho escreveu:

até agora eu tenho isso daqui:

while True:
NMPi = input().split()
N = int(NMPi[0])
M = int(NMPi[1])
Pi = int(NMPi[2])

if N == 0 and M == 0 and Pi == 0:
break
Ma = []

for i in range(N):
Ma.append(input().split())

i = 0
prendeu = False
pedra = Pi-1

while i < N and not prendeu:
for j in range(N):
for k in range(M):
if Ma[N][M] == "O":