Loi sur l'équilibre
Une balançoire (censément du ci-ça français, qui signifie «ceci-cela») forme un tiers de la sainte trinité de l'équipement de jeux, avec le toboggan et la balançoire tout aussi omniprésents. Une balançoire est en parfait équilibre si, et seulement si, la somme des moments de chaque côté est équivalente. Une balançoire peut donc être équilibrée en ajoutant une quantité spécifique de poids sur le côté avec la somme de moment inférieure; atteindre cet objectif est votre objectif pour ce défi.
Défi
Votre défi consiste à prendre une représentation d'une bascule en entrée et à la sortir à nouveau, avec du poids ajouté à une extrémité de la bascule pour l'équilibrer.
Contribution
Votre programme doit prendre, dans tout format raisonnable, une balançoire ASCII telle que la suivante:
100 100
-------------------
^
La première ligne contient deux nombres, chacun représentant des poids sur la bascule. Exactement un poids est présent de chaque côté, chacun agissant à l'extrémité de son côté de la planche. Les poids sont garantis comme des entiers et s'alignent toujours avec leur extrémité correspondante de la planche. Ces chiffres ne chevaucheront jamais le point d'appui ( ^
).
La deuxième ligne représente la «planche» de la bascule. Chaque tiret ( -
) représente une longueur égale à l'autre tiret, à la seule exception du tiret directement sur le point d'appui ( ^
), qui n'a pas de longueur.
La troisième ligne représente le point d'appui de la bascule. Ce point d'appui est marqué par le seul caractère qui n'est pas un espace sur cette ligne, un circonflexe ('^'). Le point d'appui peut être positionné n'importe où le long de la longueur de la planche dans une entrée valide tant qu'il reste suffisamment d'espace pour que les nombres représentant les poids ne chevauchent pas le point d'appui dans l'entrée ou la sortie.
L'entrée est garantie d'avoir trois lignes et aucun espace blanc avant ou après les caractères qui constituent la bascule (à l'exception, bien sûr, de la troisième ligne, qui l'exige).
Production
Pour la sortie, la même représentation de bascule doit être imprimée sur stdout, mais avec un (et un seul) des poids remplacés par un poids plus grand, afin d'équilibrer la bascule. Les entrées sont garanties pour rendre cela possible en utilisant uniquement des entiers. Par conséquent, les poids doivent être affichés sans virgule décimale ni aucune autre notation similaire. Si votre langue n'utilise pas stdout, vous devez suivre le consensus de la communauté / méta sur la sortie. Les retours à la ligne de fin sont corrects, mais toute autre modification du format de représentation n'est probablement pas correcte.
Exemplification
Entrées de test et sorties correspondantes
Entrée 1
12 22
--------------------
^
Sortie 1
12 26
--------------------
^
Entrée 2
42 42
-----------
^
Sortie 2
42 42
-----------
^
Entrée 3
3 16
----------------
^
Sortie 3
14 16
----------------
^
Entrée 4
1 56
-------------------
^
Sortie 4
196 56
-------------------
^
Implémentation de référence - 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",
"-------------------",
" ^ "])
Règles
Il s'agit de code-golf , donc les gains de code les plus courts sont comptés en octets. Vérifiez la méta si le comptage des octets est gênant dans votre langue.
Des règles / lacunes standard s'appliquent.
L'entrée doit être prise dans un format raisonnable. Une liste non exhaustive des formats appropriés est donnée comme suit:
- Une chaîne unique avec des lignes séparées par des caractères de nouvelle ligne
- Une liste de chaînes, chaque chaîne représentant une ligne
- Un tableau 2D ou une matrice de caractères
Défis liés
- Équilibrer un ensemble de poids sur une balançoire - Proposé en août 2015 par samgak