supaturk Posted September 3, 2016 at 03:37 AM Report #598602 Posted September 3, 2016 at 03:37 AM 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?
marlondias Posted September 3, 2016 at 05:03 AM Report #598603 Posted September 3, 2016 at 05:03 AM (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 September 3, 2016 at 05:21 AM by marlondias correção de texto
seuqram Posted September 3, 2016 at 07:49 AM Report #598604 Posted September 3, 2016 at 07:49 AM (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 September 3, 2016 at 08:01 AM by seuqram
pwseo Posted September 3, 2016 at 10:19 AM Report #598606 Posted September 3, 2016 at 10:19 AM @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. 1 Report
supaturk Posted September 3, 2016 at 02:36 PM Author Report #598611 Posted September 3, 2016 at 02:36 PM (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 September 3, 2016 at 03:38 PM by supaturk erro
seuqram Posted September 4, 2016 at 09:03 AM Report #598617 Posted September 4, 2016 at 09:03 AM [lista[x::n] for x in range(n)] Vais ficar com uma matriz assim: 1 2 3 4 2 3 4 3 4 4
supaturk Posted September 4, 2016 at 04:25 PM Author Report #598622 Posted September 4, 2016 at 04:25 PM (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 September 4, 2016 at 04:26 PM by supaturk
seuqram Posted September 4, 2016 at 08:40 PM Report #598623 Posted September 4, 2016 at 08:40 PM 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!
supaturk Posted September 4, 2016 at 09:50 PM Author Report #598624 Posted September 4, 2016 at 09:50 PM 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. 😞
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now