Ley de equilibrio
Un sube y baja (supuestamente del francés 'ci-ça', que significa 'esto-eso') forma un tercio de la santísima trinidad del equipo de juegos, junto con el tobogán y el columpio igualmente ubicuos. Un sube y baja está en perfecto equilibrio si, y solo si, la suma de los momentos en cada lado es equivalente. Por lo tanto, un balancín puede equilibrarse agregando una cantidad específica de peso al lado con la suma del momento más bajo; lograr este es su objetivo para este desafío.
Desafío
Su desafío es tomar una representación de un balancín como entrada y salida nuevamente, con peso agregado a un extremo del balancín para equilibrarlo.
Entrada
Su programa debe tomar, en cualquier formato razonable, un subibaja ASCII como el siguiente:
100 100
-------------------
^
La primera línea contiene dos números, cada uno representando pesos en el balancín. Exactamente un peso está presente en cada lado, cada uno actuando en el extremo de su lado de la tabla. Se garantiza que los pesos serán enteros y siempre se alinearán con su extremo correspondiente de la tabla. Estos números nunca se superpondrán con el fulcro ( ^
).
La segunda línea representa el 'tablón' de la sierra. Cada guión ( -
) representa una longitud igual entre sí, con la única excepción del guión directamente sobre el punto de apoyo ( ^
), que no tiene longitud.
La tercera línea representa el punto de apoyo de la sierra. Este punto de apoyo está marcado por el único carácter que no es un espacio en esta línea, un circunflejo ('^'). El punto de apoyo se puede colocar en cualquier lugar a lo largo de la tabla en una entrada válida siempre que quede suficiente espacio para que los números que representan los pesos no se superpongan en la entrada o la salida.
Se garantiza que la entrada tendrá tres líneas y no tendrá espacios en blanco antes o después de los caracteres que constituyen la sierra (excepto, por supuesto, la tercera línea, que lo requiere).
Salida
Para la salida, la misma representación de balancín debe imprimirse en stdout, pero con uno (y solo uno) de los pesos reemplazados por un peso mayor, para equilibrar el balancín. Las entradas están garantizadas para hacer esto posible usando enteros solos. Por lo tanto, los pesos deben mostrarse sin puntos decimales o cualquier otra nota similar. Si su idioma no usa stdout, debe ir por consenso comunitario / meta en la salida. Las nuevas líneas finales están bien, pero cualquier otro cambio en el formato de representación probablemente no sea correcto.
Ejemplificación
Entradas de prueba y salidas correspondientes
Entrada 1
12 22
--------------------
^
Salida 1
12 26
--------------------
^
Entrada 2
42 42
-----------
^
Salida 2
42 42
-----------
^
Entrada 3
3 16
----------------
^
Salida 3
14 16
----------------
^
Entrada 4
1 56
-------------------
^
Salida 4
196 56
-------------------
^
Implementación de referencia - Python 3
# Takes a list of strings as input
def balance_seesaw(lines):
weights = [int(w.strip()) for w in lines[0].split()]
length = len(lines[1])
pivot = lines[2].find("^")
left_length = pivot
right_length = length - 1 - pivot
left_torque = weights[0] * left_length
right_torque = weights[1] * right_length
if left_torque > right_torque:
weights[1] = left_torque // right_length
elif right_torque > left_torque:
weights[0] = right_torque // left_length
weights = [str(w) for w in weights]
string_gap = " " * (length - sum(len(w) for w in weights))
lines[0] = weights[0] + string_gap + weights[1]
print("\n".join(lines))
balance_seesaw(["1 56",
"-------------------",
" ^ "])
Reglas
Este es el código de golf , por lo que el código más corto gana contado en bytes. Verifique meta si contar bytes es incómodo en su idioma.
Se aplican reglas estándar / lagunas.
La entrada debe tomarse en un formato razonable. A continuación se ofrece una lista no exhaustiva de formatos apropiados:
- Una sola cadena con líneas separadas por caracteres de nueva línea
- Una lista de cadenas, cada cadena representa una línea
- Una matriz 2D o matriz de personajes
Desafíos relacionados
- Equilibre un conjunto de pesas en un subibaja - Propuesta de agosto de 2015 por samgak