Jump to content
supaturk

Elementos repetidos em matriz de números inteiros

Recommended Posts

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?           

 

Share this post


Link to post
Share on other 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!

 

Edited by marlondias
correção de texto

Share this post


Link to post
Share on other 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

 

Edited by seuqram

Share this post


Link to post
Share on other 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.

  • Vote 1

Share this post


Link to post
Share on other 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.

 

Edited by supaturk
erro

Share this post


Link to post
Share on other 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]]

 

Edited by supaturk

Share this post


Link to post
Share on other 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!

Share this post


Link to post
Share on other 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.

:(

 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.