• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

BlodyGrl

Disse que disse

8 mensagens neste tópico

Boa tarde pessoal! :)

Bem, tenho um trabalho entre mãos.

Só que estou com problemas. Estava a tentar dividi-lo em pequenos programas para simplificar mas a coisa não vai assim tão bem (tirando a parte do Input/Output xD) por isso pedia-vos apenas dicas para fazer a parte "do meio".

Obrigado! :)

Amanhã ponho as partes todas (mesmo com erros) porque agora não tenho muito tempo. Beijinhos.

Algumas pessoas organizaram-se em grupos para jogar ao Jogo dos Segredos. Cada grupo tem

normalmente pelo menos trˆes pessoas, que se disp˜oe em roda. Em cada roda, algu´em diz um

segredo `a pessoa que tem `a esquerda. Esta transmite tamb´em o que ouviu `a pessoa que tem `a sua

esquerda e sucessivamente, at´e o segredo ser novamente dito `a que o disse inicialmente. O processo

de transmiss˜ao deve ser r´apido, o que faz com que, por vezes, o segredo seja verdadeiramente

distorcido! Algu´em interessado em saber como ´e que as pessoas se agruparam perguntou a cada

uma quem estava `a sua esquerda. Para as pessoas que n˜ao estavam em qualquer grupo, registou

que estavam `a esquerda de si mesmas! Para os grupos de duas pessoas, assumiu que cada uma

estava `a esquerda da outra. Agora precisa de ajuda para processar a informa¸c˜ao.

Tarefa

Escrever um programa para indicar a constitui¸c˜ao dos grupos que tˆem trˆes ou mais pessoas e

o n´umero de pessoas que n˜ao est˜ao nesses grupos. O cen´ario envolve n pessoas, identificadas por

n´umeros de 1 a n, podendo estar agrupadas num ou mais grupos (de tamanhos variados). ´E descrito

por uma sequˆencia a1, a2, . . . , an, em que a1 designa a pessoa que estava `a esquerda da identificada

por 1, a2 a pessoa que estava `a esquerda da identificada por 2, e assim sucessivamente.

Input

Na primeira linha tem o n´umero de pessoas (sabe-se que n ´e menor ou igual a 100). Nas linhas

seguintes tem a sequˆencia a1 a2 . . . an que define o cen´ario.

Output

Em cada linha, com excep¸c˜ao da ´ultima, ter´a a descri¸c˜ao dum grupo de trˆes ou mais elementos. Essa

descri¸c˜ao tem inicialmente o n´umero de elementos do grupo e a seguir apresenta-os, come¸cando pelo

elemento que tem o identificador mais alto nesse grupo, e prosseguindo, como se estivesse a percorrer

o grupo pela esquerda. Cada par de n´umeros est´a separado por um ´unico espa¸co. O primeiro grupo

a ser apresentado ´e o que tem a pessoa cujo identificador ´e menor. A seguir apresentar´a o grupo

da pessoa que tem o identificador mais baixo entre as restantes, e sucessivamente. A ´ultima linha

indica o n´umero de pessoas que n˜ao estavam em grupos com trˆes ou mais elementos.

Exemplo 1

Input

4

2

3

1

4

Ouput

3 3 1 2

1

Exemplo 2

Input

11

10

3

4

2

8

7

11

9

1

5

6

Ouput

5 10 5 8 9 1

3 4 2 3

3 11 6 7

0

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
def pares():
    lista=[None]
    a=int(input())
    if a<=100 and a>=1:
        for i in range(a):
            b=input()
            lista=lista + [b]
    else:
        print "Insira um número entre 1 e 100"
        pares()

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Bem,trabalhinho entregue!  :P

Mas voces nao responderam, n sei se foi por ser um concurso mas pelo menos podem ver se algumas coisas podem ser mudadas por favor?

Beijinhos.

def dissequedisse():
    c=0
    n=input()
    lista=[None]
    if n <1 or n>100:
        return
    for i in range(n):
        b=input()
        lista=lista+[b]
    for i in range(1,len(lista)):
        grupo = []
        if lista[i]==0:
            pass
        else:
            a=i
            while a not in grupo:
                grupo = grupo + [a]
                a=lista[a]
            if len(grupo)<3:
                c=c+len(grupo)
            else:
                print len(grupo) ,
                grupo = grupo[grupo.index(max(grupo)):]+grupo[:grupo.index(max(grupo))]
                for i in range(len(grupo)):
                    print grupo[i],
                print
            for j in range(len(lista)):
                if lista[j] in grupo:
                    lista[j] = 0
    print c
dissequedisse()

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Vocês estão a brincar certo? -_-' Se não perceberam porque é que não perguntaram? -_-' Se calhar até teria reescrito o texto... -_-' Se bem que eu o tenha percebido tal e qual como está... -_-'

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Eu acabei por não responder porque tu entretanto respondeste :P Mas sinceramente, gostava que pusesses o enunciado mais explícito :)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora