Personajes de RPG P53384


Statement
 

pdf   zip

En este problema, al igual que en el problema “Dados Raros”, necesitarás números pseudo-aleatorios. Para generarlos, usa la misma fórmula yn=(75yn1)mod 65537.y_n = (75\cdot y_{n-1}) \ \text{mod } 65537. Simularemos el lanzamiento de un dado de NN caras (con caras del 11 al NN) mediante la fórmula (y%N)+1(y \% N) +1, donde yy es el número pseudo-aleatorio.

Se te pide que generes personajes al azar para un juego de rol. Cada personaje pertenece a una raza, y cada raza tiene unos atributos propios. La puntuación de un personaje en cada atributo depende de una tirada de dados, que designamos mediante un código como los siguientes:

XXdYY+BB, \qquad\qquad XXdYY, \qquad\qquad XXdYY-BB,

donde XX es el número de dados que hay que tirar (de 1 a 9), YY es el número de caras que tiene el dado (siempre será 44, 66, 88, 1010, 1212 o 2020), y BB es un número positivo (de 1 a 9). Por ejemplo, los códigos 44d66, 22d424-2 y 11d20+520+5 indican que la puntuación del atributo se obtiene, respectivamente, sumando los lanzamientos de 4 dados de 6 caras; sumando 2 dados de 4 caras y restando 2 al resultado; y sumando 5 a un dado de 20 caras. Ningún atributo debe ser 0 o negativo: si el resultado final de un cálculo así lo fuera, la puntuación final del atributo sería 1.

Entrada

Consulta los ejemplos de prueba para entender mejor el formato de la entrada. La primera línea contiene la semilla y0y_0 de los números pseudo-aleatorios que se usarán para generar todas las tiradas. A continuación, un número indeterminado de líneas (pero inferior a 10000). Las líneas son de dos tipos, líneas de raza (R) o líneas de personaje (P).

Las líneas de raza siguen el formato

R [raza] kk [atr1] [XXdY±BY\!\pm\!B] ... [atrkk] [XXdY±BY\!\pm\!B]

donde [raza] es el nombre de una raza (sin espacios) con 0<k100<k\leq 10 atributos, de nombres [atr1],…,[atrkk] y con sus correspondientes códigos [XXdY±BY\!\pm\!B]. No habrá dos razas, ni dos atributos dentro de la misma raza, con idéntico nombre; ningún nombre de raza o atributo tendrá más de 10 caracteres.

Las líneas de personaje siguen el formato

P [raza] nn

para indicar que generes nn personajes de la raza [raza].

Salida

La salida de tu programa deberá contener una línea por cada personaje que generes. Esta línea empezará con el texto [raza] #ii: , donde [raza] es la raza del personaje, y ii es el número de personaje que generas de dicha raza. A continuación, y separados por espacios, los nombres de los kk atributos y las puntuaciones que se obtienen para dicho personaje al lanzar los dados. Escribe los atributos en el mismo orden en el que te los dieron, y acaba cada línea con un punto.

Procesa la entrada en el orden en el que se te da. Si se te pide generar personajes de una raza que no existe (o que todavía no ha sido descrita) escribe una línea con el texto “Raza xxxx no existe.”.

Puntuación

Puntuación

Test140 Resuelve juegos de prueba (como el Ejemplo 1) donde todos los códigos de lanzamiento de dados son de la forma xxD6, todas las razas existen, y no hay más de 50 líneas.

  • Test2:   Resuelve juegos de prueba de todo tipo.

Public test cases
  • Input

    424
    R Human 3 FUE 3d6 DES 3d6 INT 3d6
    P Human 2
    P Human 1
    R Elf 4 FUE 3d6 DES 4d6 INT 3d6 MAG 3d6
    R Orc 3 FUE 3d6 DES 3d6 INT 2d6
    R Troll 3 FUE 6d6 DES 2d6 INT 1d6
    P Orc 2
    P Elf 2
    P Troll 1
    P Human 2
    
    

    Output

    Human #1: FUE 8 DES 10 INT 10.
    Human #2: FUE 6 DES 13 INT 10.
    Human #3: FUE 9 DES 10 INT 9.
    Orc #1: FUE 6 DES 8 INT 10.
    Orc #2: FUE 14 DES 10 INT 5.
    Elf #1: FUE 8 DES 17 INT 15 MAG 10.
    Elf #2: FUE 4 DES 14 INT 11 MAG 12.
    Troll #1: FUE 26 DES 7 INT 5.
    Human #4: FUE 8 DES 13 INT 12.
    Human #5: FUE 15 DES 13 INT 11.
    
  • Input

    424
    R Human 3 FUE 3d6 DES 3d6 INT 3d6
    P Human 2
    P Human 1
    P Elf 5
    R Elf 4 FUE 3d6-2 DES 4d6 INT 3d6+1 MAG 3d6
    R Orc 3 FUE 3d6+3 DES 3d6-1 INT 2d6+1
    R Troll 3 FUE 6d6 DES 2d6+1 INT 1d6+1
    P Orc 2
    P Ent 1
    P HUMAN 1
    P Elf 2
    P Troll 1
    P Human 2
    

    Output

    Human #1: FUE 8 DES 10 INT 10.
    Human #2: FUE 6 DES 13 INT 10.
    Human #3: FUE 9 DES 10 INT 9.
    Raza Elf no existe.
    Orc #1: FUE 9 DES 7 INT 11.
    Orc #2: FUE 17 DES 9 INT 6.
    Raza Ent no existe.
    Raza HUMAN no existe.
    Elf #1: FUE 6 DES 17 INT 16 MAG 10.
    Elf #2: FUE 2 DES 14 INT 12 MAG 12.
    Troll #1: FUE 26 DES 8 INT 6.
    Human #4: FUE 8 DES 13 INT 12.
    Human #5: FUE 15 DES 13 INT 11.
    
  • Input

    424
    R Torpe 2 FUE 1d6-3 INT 1d6-5
    P Torpe 10
    

    Output

    Torpe #1: FUE 1 INT 1.
    Torpe #2: FUE 3 INT 1.
    Torpe #3: FUE 1 INT 1.
    Torpe #4: FUE 1 INT 1.
    Torpe #5: FUE 2 INT 1.
    Torpe #6: FUE 1 INT 1.
    Torpe #7: FUE 1 INT 1.
    Torpe #8: FUE 1 INT 1.
    Torpe #9: FUE 1 INT 1.
    Torpe #10: FUE 1 INT 1.
    
  • Information
    Author
    Omer Giménez
    Language
    Spanish
    Official solutions
    C++
    User solutions
    C++