Si alguna vez ha intentado agregar etiquetas a una trama realmente densa, se dará cuenta de que a veces las etiquetas se superponen entre sí, lo que las hace difíciles de leer. Vamos a hacer algo similar pero en 1D.
La entrada será una secuencia de (label, x-coordinate)
pares, y la salida será el resultado de dibujar cada punto y etiqueta, en el orden dado. Se *
debe colocar un asterisco que represente el punto en la coordenada x dada y la etiqueta debe seguir. Los caracteres existentes se sobrescribirán.
Por ejemplo, si la entrada fue
Hello 0
World 8
Fizz 3
Buzz 5
PPCG 16
X 9
Entonces sucedería lo siguiente:
*Hello
*Hello *World
*He*Fizz*World
*He*F*Buzzorld
*He*F*Buzzorld *PPCG
*He*F*Buz*Xrld *PPCG
La línea final se debe generar.
Reglas de E / S
La entrada puede consistir en cualquier número de pares. Cada etiqueta constará solo de letras mayúsculas y minúsculas, y las longitudes de las etiquetas serán como máximo 127 caracteres. Cada coordenada x estará entre 0 y 127 inclusive.
La entrada puede estar en cualquier lista conveniente o formato de cadena de manera que los pares no sean ambiguos y las etiquetas / coordenadas x se alternen en la entrada. Por ejemplo, un formato como
[("Hello", 0), ("World", 8) ...]
o[0 "Hello" 8 "World" ...]
está bien. Sin embargo, no puede suponer dos listas separadas de etiquetas y coordenadas x.Las funciones y los programas completos están bien.
Cualquier punto no cubierto por una etiqueta debe representarse con un espacio. Sin embargo, puede que no haya ningún espacio en blanco inicial o posterior ajeno a una sola línea final opcional.
Ejemplos
Entrada:
OneLabel 10
Salida:
*OneLabel
Entrada:
Heathrow 0
Edinburgh 2
London 4
Liverpool 6
Oxford 8
Salida:
*H*E*L*L*Oxfordl
Entrada:
alpha 20
beta 4
gamma 57
delta 3
epsilon 22
zeta 32
eta 53
theta 27
Salida:
*delta *a*epsi*thetazeta *eta*gamma
Entrada:
abc 5
d 5
abc 10
ABCDEFGHIJKLMNOPQRSTUVWXYZ 127
Salida:
*dbc *abc *ABCDEFGHIJKLMNOPQRSTUVWXYZ
Tenga en cuenta que las etiquetas y / o las coordenadas x pueden repetirse.