São mostrados dois algoritmos, onde o primeiro tem o propósito de identificar se uma matriz é uma matriz identidade e o segundo é um algoritmo que, dado o resultado da loteria esportiva, encontra uma cartela de aposta que tenha acertado todos os palpites.
Os algoritmos são explicados em vídeo, onde também é mostrado como utilizar o modo de depuração (debug) do CodeSkulptor (http://www.codeskulptor.org/viz/), um editor online de Python .
Matriz identidade
O objetivo desse algoritmo está em ter uma função que recebe uma matriz quadrada e retornar se a matriz é uma matriz identidade (explicação do que é uma matriz identidade se encontram aqui).
Algoritmo
def testaMatrizIdentidade(mat):
for i in range(len(mat)):
for j in range(len(mat)):
if (i == j and mat[i][j] <> 1):
return False
elif (i <> j and mat[i][j] <> 0):
return False
return True
ordem = input('Digite a ordem: ')
mat = [0] * ordem
for i in range(ordem):
mat[i] = [0] * ordem
for i in range(ordem):
for j in range(ordem):
mat[i][j] = input('Digite um valor: ')
for i in range(ordem):
print mat[i][:]
if testaMatrizIdentidade(mat) == False:
print 'A matriz nao e identidade'
else:
print 'A matriz e identidade'
Vídeo
Loteria
O enunciado no vídeo está um pouco diferente, mas o seguido foi o descrito aqui.
Escreva um programa em Python que leia um vetor de 13 elementos inteiros, que é o gabarito de um teste da loteria esportiva, contendo os valores 1 (coluna 1), 2 (coluna 2) e 3 (coluna do meio). Leia, a seguir, para cada apostador, um vetor de respostas de 13 posições. Verifique para cada apostador o números de acertos, comparando o vetor de gabarito com o vetor de respostas. Escreva o número do apostador e o número de acertos. Se o apostador tiver 13 acertos, mostrar a mensagem “ganhador”.
EXEMPLO
Entrada
Vetor de gabarito: | 1 | 2 | 1 | 3 | 1 | 1 | 1 | 3 | 2 | 2 | 2 | 1 | 1 |
Apostador 1: | 1 | 2 | 1 | 3 | 1 | 1 | 1 | 3 | 2 | 2 | 2 | 2 | 2 |
Apostador 2: | 1 | 2 | 1 | 3 | 1 | 1 | 1 | 3 | 2 | 2 | 2 | 1 | 1 |
Saída
Apostador 1: 11 acertos
Apostador 2: 13 acertos – ganhador
Algoritmo
import random
def geraCartao():
vet = [0]*13
for i in range(13):
vet[i] = random.randint(1,3)
return vet
def resultadoJogos():
vet = [0]*13
for i in range(13):
vet[i] = input('Valor da rodada: ')
while vet[i] < 1 or vet[i] > 3:
vet[i] = input('Valor invalido. Digite outro: ')
return vet
def acertos(gab, aposta):
acertos = 0
for i in range(13):
if gab[i] == aposta[i]:
acertos += 1 #acertos = acertos + 1
return acertos
##### Começa o algoritmo principal #####
gabarito = resultadoJogos()
print 'Gabarito: ', gabarito
apostadores = 0
ganhador = False
while (ganhador == False):
aposta = geraCartao()
acertou = acertos(gabarito, aposta)
apostadores += 1
if acertou == 13:
ganhador = True
print 'Apostador ',apostadores, ': ', acertou, ' acertos - ganhador'
else:
print 'Apostador ',apostadores, ': ', acertou, ' acertos'
Vídeos
O vídeo está divido em duas partes: na primeira parte é explicado como resolver o problema, enquanto na segunda é mostrado o uso do debug do CodeSkulptor em uma execução passo-a-passo.