Jump to content

Elementos repetidos em matriz de números inteiros


Recommended Posts

Posted

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?           
Posted (edited)

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
Posted (edited)
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
Posted

@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
Posted (edited)
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
Posted (edited)
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
Posted
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.

😞

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.