Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

supaturk

Elementos repetidos em matriz de números inteiros

Mensagens Recomendadas

supaturk

Suponhamos que tenho uma matriz (ou lista de lista) de números inteiros.

O 1º usuário vai escolher 02 posições da matriz, se os números dessas posições forem igual, eu removo esses números ou coloco -1 e passo a vez para outro usuário que repete a mesma coisa até verificar todos os elementos repetidos, como fazer isso?

import random
matriz = [[1,2,3,4],[1,2,3,4],[5,6,7,8],[5,6,7,8]]
random.shuffle(matriz)

for x in range(len(matriz)):
    for y in range(len(matriz):
        # SEM IDEIA DE COMO IMPLEMENTAR ISSO
        # ALGUEM PODE AJUDAR?           

 

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
marlondias

Ola.

Eu entendo que estes "for" do seu código poderiam ser modificados para percorrer os elementos da matriz para saber se todos os elementos da matriz estão com "-1", significando fim do jogo, certo? guarde ele. ;) Eu criaria uma função "FimDeJogo" 

Eu criaria duas variáveis tipo inteiro, iniciando com ZERO para contar os acertos de cada jogador.

Eu criaria também uma variável para controlar de quem é a vez de jogar, e assim saber em qual dos contadores o resultado se acumulará caso os números escolhidos sejam iguais.

Você precisará de uma outra função para captar os números escolhidos por um usuário na sua vez, sendo que precisará passar por uma crítica -  o usuário não poderá escolher posições com "-1".

Ajudei ?

Conte aí como ficou...

Bom estudo!

 

Editado por marlondias
correção de texto

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
seuqram

 

Matriz = [[1, 2, 3],
	  [4, 5 ,6],
          [7, 8, 9]]

Tamanho_X = 3
Tamanho_Y = 3
x1 = y1 = x2 = y2 = 0

while (x1 >= Tamanho_X) or (y1 >= Tamanho_Y) or (x2 >= Tamahno_X) or (y2 >= Tamanho_Y):
	x1, y1 = map(int, input("Primeiro: ").split())
	x2, y2 = map(int, input("Segundo: ").split())

if matriz[x1][y1] != False: #False/None/-1/....
	if matriz[x1][y1] == matriz[x2][y2]:
  		matriz[x1][y1] = False
        	matriz[x2][y2] = False

 

Editado por seuqram

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
pwseo

@supaturk,

Não sei se já te apercebeste deste pequeno pormenor, mas quando utilizas shuffle() para reordenar os elementos aleatoriamente, estás apenas a reordenar as linhas. Por outras palavras, é completamente previsível que o número 1 continue a ser seguido do 2, 3, 4 na mesma linha. Mesmo que faças shuffle() às sublistas, continuas a saber que os números 1, 2, 3, 4 estão na mesma linha, embora por uma ordem diferente. Compreendeste este problema?

Consegues pensar em como podes resolver esta questão?

 

@seuqram,

Se o OP está com dúvidas em resolver este pequeno problema, então provavelmente precisa de pensar um pouco por si e ambientar-se na linguagem, mais do que precisa de uma solução escrita por outra pessoa sem explicação para o seu funcionamento, por muito simples que seja.

De qualquer modo, agora que o código para input e marcação de pares está completo, falta o código que irá determinar se ainda falta descobrir pares de números e que irá alternar entre os jogadores à medida que o jogo progride. Vamos ver o que o @supaturk tem para nos mostrar em relação a isso.

  • Voto 1

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
supaturk
5 horas atrás, pwseo disse:

@supaturk,

Não sei se já te apercebeste deste pequeno pormenor, mas quando utilizas shuffle() para reordenar os elementos aleatoriamente, estás apenas a reordenar as linhas. Por outras palavras, é completamente previsível que o número 1 continue a ser seguido do 2, 3, 4 na mesma linha. Mesmo que faças shuffle() às sublistas, continuas a saber que os números 1, 2, 3, 4 estão na mesma linha, embora por uma ordem diferente. Compreendeste este problema?

Consegues pensar em como podes resolver esta questão?

@seuqram,

Se o OP está com dúvidas em resolver este pequeno problema, então provavelmente precisa de pensar um pouco por si e ambientar-se na linguagem, mais do que precisa de uma solução escrita por outra pessoa sem explicação para o seu funcionamento, por muito simples que seja.

De qualquer modo, agora que o código para input e marcação de pares está completo, falta o código que irá determinar se ainda falta descobrir pares de números e que irá alternar entre os jogadores à medida que o jogo progride. Vamos ver o que o @supaturk tem para nos mostrar em relação a isso.


import random
n = 4
matriz = []
lista = [1,2,3,4,1,2,3,4,5,6,7,8,5,6,7,8]
random.shuffle(lista)

matriz = [lista[x::n] for x in range(n)]

print(matriz)

de qualquer forma mesmo nao sendo a melhor forma eu tinha isto, e a partir dai pensar no resto.

 

tenho que pensar no que vc @pwseo, escreveu: => então provavelmente precisa de pensar um pouco por si e ambientar-se na linguagem, mais do que precisa de uma solução escrita por outra pessoa sem explicação para o seu funcionamento, por muito simples que seja.

tudo isso ta novo pra mim, entao perdoe-me a ignorancia.

vou tentar chegar a uma conclusao.

 

Editado por supaturk
erro

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
supaturk
Em 03/09/2016 às 07:19, pwseo disse:
7 horas atrás, seuqram disse:


[lista[x::n] for x in range(n)]

Vais ficar com uma matriz assim:

1 2 3 4

2 3 4

3 4

4

eu nao entendo pq com vc deu esse resultado.

pois o meu esta normal:

[[2, 7, 7, 8], [3, 5, 4, 3], [1, 4, 6, 1], [5, 8, 6, 2]]

 

Editado por supaturk

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
seuqram
4 horas atrás, supaturk disse:

 

Não conhecia a double colon. Pensava que era como "x:n"

Desculpa a minha ignorância e bom trabalho!

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
supaturk
1 hora atrás, seuqram disse:

Não conhecia a double colon. Pensava que era como "x:n"

Desculpa a minha ignorância e bom trabalho!

de qualquer forma obg pela ajuda @seuqram, eu nao entendi como implementar junto ao seu codigo. talvez eu deva começar com problemas ainda menores.

e agradecer tambem a @pwseo e o @marlondias que comentou la no inicio. Desisto no momento de seguir com isso,grato a todos.

:(

 

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.