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

Sign in to follow this  
BlodyGrl

Disse que disse

Recommended Posts

BlodyGrl

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

Share this post


Link to post
Share on other sites
BlodyGrl
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()

Share this post


Link to post
Share on other sites
BlodyGrl

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

Share this post


Link to post
Share on other sites
djthyrax

Já somos 2.


Não peças ajuda por PM! A tua dúvida vai ter menos atenção do que se for postada na secção correcta do fórum!

Share this post


Link to post
Share on other sites
BlodyGrl

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á... -_-'

Share this post


Link to post
Share on other sites
JoaoRodrigues

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

Share this post


Link to post
Share on other sites

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
Sign in to follow this  

×

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.