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 = (75· yn−1) mod 65537. |
Simularemos el lanzamiento de un dado de N caras (con caras del 1 al N) mediante la fórmula (y % N) +1, donde y 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:
donde X es el número de dados que hay que tirar (de 1 a 9), Y es el número de caras que tiene el dado (siempre será 4, 6, 8, 10, 12 o 20), y B es un número positivo (de 1 a 9). Por ejemplo, los códigos 4d6, 2d4−2 y 1d20+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 y0 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
donde [raza] es el nombre de una raza (sin espacios) con 0<k≤ 10 atributos, de nombres [atr1],…,[atrk] y con sus correspondientes códigos [XdY±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
para indicar que generes n 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] #i: , donde [raza] es la raza del personaje, y i es el número de personaje que generas de dicha raza. A continuación, y separados por espacios, los nombres de los k 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 xD6, todas las razas existen, y no hay más de 50 líneas.
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.