En este problema, al igual que en el problema “Dados Raros”, necesitarás números pseudo-aleatorios. Para generarlos, usa la misma fórmula Simularemos el lanzamiento de un dado de caras (con caras del al ) mediante la fórmula , donde 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:
d+,
d,
d-,
donde
es el número de dados que hay que tirar (de 1 a 9),
es el número de caras que tiene el dado (siempre será
,
,
,
,
o
),
y
es un número positivo (de 1 a 9). Por ejemplo, los códigos
d,
d
y
d
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.
Consulta los ejemplos de prueba para entender mejor el formato de la
entrada. La primera línea contiene la semilla
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] [atr1] [d] ... [atr] [d]
donde [raza] es el nombre de una raza (sin espacios) con
atributos, de nombres
[atr1],…,[atr]
y con sus correspondientes códigos
[d].
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]
para indicar que generes
personajes de la raza [raza].
La salida de tu programa deberá contener una línea por cada personaje
que generes. Esta línea empezará con el texto
[raza] #:
, donde [raza] es la raza del personaje, y
es el número de personaje que generas de dicha raza. A continuación, y
separados por espacios, los nombres de los
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.”.
Test140 Resuelve juegos de prueba
(como el Ejemplo 1) donde todos los códigos de lanzamiento de dados son
de la forma
D6,
todas las razas existen, y no hay más de 50 líneas.
Test2: Resuelve juegos de prueba de todo tipo.
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.