0% acharam este documento útil (0 voto)
7 visualizações11 páginas

Funções e Algoritmos em Python

O documento apresenta uma série de conceitos de programação, incluindo manipulação de strings, operações com números, arrays, estruturas de controle como loops e condicionais, além de exemplos de algoritmos para resolver problemas diversos. Entre os problemas abordados estão a troca de figurinhas, cálculo de somas de fatoriais, sequência de Fibonacci, criptografia e a competição de programação. O texto também discute a implementação de jogos e desafios, como Pedra-papel-tesoura-lagarto-Spock e a coleção de Pomekons.

Enviado por

Isaac Wander
Direitos autorais
© All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd
0% acharam este documento útil (0 voto)
7 visualizações11 páginas

Funções e Algoritmos em Python

O documento apresenta uma série de conceitos de programação, incluindo manipulação de strings, operações com números, arrays, estruturas de controle como loops e condicionais, além de exemplos de algoritmos para resolver problemas diversos. Entre os problemas abordados estão a troca de figurinhas, cálculo de somas de fatoriais, sequência de Fibonacci, criptografia e a competição de programação. O texto também discute a implementação de jogos e desafios, como Pedra-papel-tesoura-lagarto-Spock e a coleção de Pomekons.

Enviado por

Isaac Wander
Direitos autorais
© All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd

Strings:

[Link]
[Link]
[Link]
[Link] [Link]("world", "Python")
[Link]("world", "Python")

Números:
sum sum( [1,2,3] )
abs
round round(3.6666, 2) -> 3.66
max(nums)
min(nums)

Array:
[Link]
[Link]
len(lst)
sorted(lst)
[Link]()

Tabela ACSII:
ord(‘A’) = 65
chr(65) = ‘A’

For:
for i in range(32, 127):
for fruit in fruits:
for i in range(5):
for i in range(0, 11, 2): -> De 0 a 10 de 2 em 2

While:
count = 0
while count < 5:
count++
n = 10
while n > 0:
n -= 1

While True:

Inputs:
n = input()
n = int(input())
n,n2,n3 = input().split()

beecrowd | 1028

Figurinhas
Ricardo e Vicente são aficionados por figurinhas. Nas horas vagas, eles arrumam um jeito de jogar
um “bafo” ou algum outro jogo que envolva tais figurinhas. Ambos também têm o hábito de trocarem
as figuras repetidas com seus amigos e certo dia pensaram em uma brincadeira diferente.
Chamaram todos os amigos e propuseram o seguinte: com as figurinhas em mãos, cada um
tentava fazer uma troca com o amigo que estava mais perto seguindo a seguinte regra: cada um
contava quantas figurinhas tinha. Em seguida, eles tinham que dividir as figurinhas de cada um em
pilhas do mesmo tamanho, no maior tamanho que fosse possível para ambos. Então, cada um
escolhia uma das pilhas de figurinhas do amigo para receber. Por exemplo, se Ricardo e Vicente
fossem trocar as figurinhas e tivessem respectivamente 8 e 12 figuras, ambos dividiam todas as
suas figuras em pilhas de 4 figuras (Ricardo teria 2 pilhas e Vicente teria 3 pilhas) e ambos
escolhiam uma pilha do amigo para receber.

Soma de Fatoriais
Leia dois valores inteiros M e N indefinidamente. A cada leitura, calcule e escreva a soma dos
fatoriais de cada um dos valores lidos. Utilize uma variável apropriada, pois cálculo pode resultar
em um valor com mais de 15 dígitos.

Blobs
No planeta Alpha vive a criatura Blobs, que come precisamente 1/2 de seu suprimento de comida
disponível todos os dias. Escreva um algoritmo que leia a capacidade inicial de suprimento de
comida (em Kg), e calcule quantos dias passarão antes que Blobs coma todo esse suprimento até
restar um quilo ou menos.

Volta à Faculdade de Física

Funções
Na última aula de matemática, Rafael, Beto e Carlos aprenderam algumas novas funções
matemáticas. Cada um deles se identificou com uma função em especial, e resolveram competir
para ver quem tinha a função de maior resultado.

A função que Rafael escolheu é r(x, y) = (3x)² + y².

Já Beto escolheu a função b(x, y) = 2(x²) + (5y)².

Carlos, por sua vez, escolheu a função c(x, y) = -100x + y³.

Dados os valores x e y, diga quem escolheu a função com o maior resultado.


Fibonacci, Quantas Chamadas?
Quase todo estudante de Ciência da Computação recebe em algum momento no início de seu
curso de graduação algum problema envolvendo a sequência de Fibonacci. Tal sequência tem
como os dois primeiros valores 0 (zero) e 1 (um) e cada próximo valor será sempre a soma dos dois
valores imediatamente anteriores. Por definição, podemos apresentar a seguinte fórmula para
encontrar qualquer número da sequência de Fibonacci:
fib(0) = 0
fib(1) = 1
fib(n) = fib(n-1) + fib(n-2);

Uma das formas de encontrar o número de Fibonacci é através de chamadas recursivas. Isto é
ilustrado a seguir, apresentando a árvore de derivação ao calcularmos o valor fib(4), ou seja o 5º
valor desta sequência:
Desta forma,

● fib(4) = 1+0+1+1+0 = 3
● Foram feitas 8 calls, ou seja, 8 chamadas recursivas.
Isósceles
Os irmãos Sérgio e Luiz estavam brincando com cubinhos de madeira e queriam construir um muro,
que acabou ficando incompleto, com as colunas tendo diferentes alturas, como nessa figura.

Eles decidiram agora que a brincadeira seria retirar cubinhos, sempre de cima para baixo nas
colunas, de maneira que no final restasse apenas um triângulo isósceles de cubinhos. Eles podem
apenas retirar cubinhos do muro, sem recolocar em outra coluna, e os triângulos têm que ser
completos. A figura abaixo ilustra os cinco primeiros triângulos isósceles de cubinhos, do tipo que
eles querem, com alturas 1, 2, 3, 4 e 5 respectivamente.

Dada a sequência de alturas das colunas do muro, seu programa deve ajudar Sérgio e Luiz a
descobrir qual é a altura máxima que o triângulo poderia ter ao final. No muro da primeira figura,
com 30 colunas de cubinhos, o triângulo mais alto possível teria altura igual a sete.

Criptografia
Solicitaram para que você construisse um programa simples de criptografia. Este programa deve
possibilitar enviar mensagens codificadas sem que alguém consiga lê-las. O processo é muito
simples. São feitas três passadas em todo o texto.

Na primeira passada, somente caracteres que sejam letras minúsculas e maiúsculas devem ser
deslocadas 3 posições para a direita, segundo a tabela ASCII: letra 'a' deve virar letra 'd', letra 'y'
deve virar caractere '|' e assim sucessivamente. Na segunda passada, a linha deverá ser invertida.
Na terceira e última passada, todo e qualquer caractere a partir da metade em diante (truncada)
devem ser deslocados uma posição para a esquerda na tabela ASCII. Neste caso, 'b' vira 'a' e 'a'
vira '`'.

Por exemplo, se a entrada for “Texto #3”, o primeiro processamento sobre esta entrada deverá
produzir “Wh{wr #3”. O resultado do segundo processamento inverte os caracteres e produz “3#
rw{hW”. Por último, com o deslocamento dos caracteres da metade em diante, o resultado final
deve ser “3# rvzgV”.

Cifra de César
Júlio César usava um sistema de criptografia, agora conhecido como Cifra de César, que trocava
cada letra pelo equivalente em duas posições adiante no alfabeto (por exemplo, 'A' vira 'C', 'R' vira
'T', etc.). Ao final do alfabeto nós voltamos para o começo, isto é 'Y' vira 'A'. Nós podemos, é claro,
tentar trocar as letras com quaisquer número de posições.

N = int(input())

for _ in range(N):
alfabeto = input()
deslocamento = int(input())

resposta = ''.join([chr(((ord(letra) - 65 - deslocamento + 26) % 26) + 65) for letra in alfabeto])

print(resposta)

Pedra-papel-tesoura-lagarto-Spock
Pedra-papel-tesoura-lagarto-Spock é uma expansão do clássico método de seleção em jogo de
pedra-papel-tesoura. Atua sob o mesmo princípio básico, mas inclui outras duas armas adicionais: o
lagarto (formado pela mão igual a uma boca de fantoche) e Spock (formada pela saudação dos
vulcanos em Star Trek). Isso reduz as chances de uma rodada terminar em um empate. O jogo foi
inventado por Sam Kass e Karen Bryla, como "Rock Paper Scissors Lizard Spock". As regras de
vantagem são as seguintes:

● Tesoura corta papel


● Papel cobre pedra
● Pedra derruba lagarto
● Lagarto adormece Spock
● Spock derrete tesoura
● Tesoura prende lagarto
● Lagarto come papel
● Papel refuta Spock
● Spock vaporiza pedra
● Pedra quebra tesoura

Um dia, dois amigos, Rajesh e Sheldon, decidiram apostar quem pagaria um almoço para o outro,
com esta brincadeira. Sua missão será fazer um algoritmo que, baseado no que eles escolherem,
informe quem irá ganhar ou se dará empate.

C = int(input())

for _ in range(C):
rajesh, sheldon = input().strip().split(' ')

if(rajesh == sheldon):
print("empate")
elif(rajesh == "pedra"):
if(sheldon == "tesoura" or sheldon == "lagarto"):
print("rajesh")
else:
print("sheldon")
elif(rajesh == "papel"):
if(sheldon == "pedra" or sheldon == "spock"):
print("rajesh")
else:
print("sheldon")
elif(rajesh == "tesoura"):
if(sheldon == "papel" or sheldon == "lagarto"):
print("rajesh")
else:
print("sheldon")
elif(rajesh == "lagarto"):
if(sheldon == "papel" or sheldon == "spock"):
print("rajesh")
else:
print("sheldon")
elif(sheldon == "pedra" or sheldon == "tesoura"):
print("rajesh")
else:
print("sheldon")

Coleção de Pomekon
Desde que foi lançado oficialmente o Pomekon no Brasil, Dabriel está tentando realizar seu maior
sonho: Ser um Mestre Pomekon. Sua meta é conquistar os 151 Pomekons disponíveis. Ele já
conseguiu capturar muitos monstrinhos, porém em sua cidade aparecem muitos Pomekons
repetidos, fazendo com que ele capture diversas vezes o mesmo Pomekon.

Vendo que sua mochila está bem cheia, Dabriel pediu para que você fizesse um programa de
computador que informasse a ele quantos Pomekons faltam para completar a coleção.

N = int(input())

pomekons = set()
for _ in range(N):
S = input()

[Link](S)

print(f"Falta(m) {151 - len(pomekons)} pomekon(s).")

Fórmula de Bhaskara
Leia 3 valores de ponto flutuante e efetue o cálculo das raízes da equação de Bhaskara. Se não for
possível calcular as raízes, mostre a mensagem correspondente “Impossivel calcular”, caso haja
uma divisão por 0 ou raiz de numero negativo.

import math

a, b, c = [float(x) for x in input().strip().split(' ')]

delta = b * b - 4 * a * c

if(a != 0 and delta > -1):


R1 = (- b + [Link](delta))/(2 * a)
R2 = (- b - [Link](delta))/(2 * a)

print(f"R1 = {R1:.5f}")
print(f"R2 = {R2:.5f}")
else:
print("Impossivel calcular")

Competição
A maioria dos programadores que chegam a escrever competições com exercícios de programação
concordam em quatro características que toda competição deve alcançar. Embora nem todas sejam
sempre alcançadas, quanto mais melhor. As características são as seguintes:

1. Ninguém resolveu todos os problemas.


2. Todo problema foi resolvido por pelo menos uma pessoa (não necessariamente a mesma).
3. Não há nenhum problema resolvido por todos.
4. Todos resolveram ao menos um problema (não necessariamente o mesmo).

Rafael organizou uma competição alguns dias atrás, e está preocupado com quantas dessas
características ele conseguiu alcançar com a competição.

Dadas as informações sobre a competição, com o número de participantes, número de problemas,


e qual participante resolveu quais problemas, descubra o número de características que foram
alcançadas nesta competição.

while True:
try:
N, M = [int(x) for x in input().strip().split(' ')]

if(not N and not M):


break

participantes = []
for _ in range(N):
[Link]([int(x) for x in input().strip().split(' ')])

problemas = [sum([x[i] for x in participantes]) for i in range(M)]


participantes = [sum(x) for x in participantes]

condicao1 = all([x < M for x in participantes])


condicao2 = all([x > 0 for x in problemas])
condicao3 = all([x < N for x in problemas])
condicao4 = all([x > 0 for x in participantes])

print(condicao1 + condicao2 + condicao3 + condicao4)


except EOFError:
break

Você também pode gostar