Balanceakt
Eine Wippe (angeblich aus dem Französischen 'ci-ça', was 'das-das' bedeutet) bildet zusammen mit der ebenfalls allgegenwärtigen Rutsche und Schaukel ein Drittel der heiligen Dreiheit der Spielgeräte. Eine Wippe ist dann und nur dann perfekt im Gleichgewicht, wenn die Summe der Momente auf jeder Seite gleich ist. Eine Wippe kann daher ausgeglichen werden, indem der Seite mit der unteren Momentensumme eine bestimmte Gewichtsmenge hinzugefügt wird; Dies zu erreichen ist Ihr Ziel für diese Herausforderung.
Herausforderung
Ihre Herausforderung besteht darin, eine Darstellung einer Wippe als Eingabe zu nehmen und sie erneut auszugeben, wobei das Gewicht an einem Ende der Wippe zum Ausgleich hinzugefügt wird.
Eingang
Ihr Programm muss in einem angemessenen Format eine ASCII-Wippe wie die folgende haben:
100 100
-------------------
^
Die erste Zeile enthält zwei Zahlen, die jeweils die Gewichte auf der Wippe darstellen. Auf jeder Seite befindet sich genau ein Gewicht, das jeweils ganz am Ende der Dielenseite angreift. Gewichte sind garantiert ganze Zahlen und stimmen immer mit dem entsprechenden Ende der Diele überein. Diese Zahlen überschneiden sich niemals mit dem Drehpunkt ( ^
).
Die zweite Linie repräsentiert das "Brett" der Wippe. Jeder Bindestrich ( -
) steht für die gleiche Länge wie jeder andere Bindestrich, mit Ausnahme des Bindestrichs direkt über dem Drehpunkt ( ^
), der keine Länge hat.
Die dritte Linie repräsentiert den Drehpunkt der Wippe. Dieser Drehpunkt wird durch das einzige Zeichen markiert, das in dieser Zeile kein Leerzeichen ist, sondern ein Zirkumflex ('^'). Der Drehpunkt kann an einer beliebigen Stelle entlang der Länge der Diele in einer gültigen Eingabe positioniert werden, solange genügend Platz vorhanden ist, damit die Zahlen, die die Gewichte darstellen, den Drehpunkt weder in der Eingabe noch in der Ausgabe überlappen.
Die Eingabe hat garantiert drei Zeilen und darf vor oder nach den Zeichen, aus denen die Wippe besteht, keine Leerzeichen enthalten (mit Ausnahme der dritten Zeile, für die dies erforderlich ist).
Ausgabe
Für die Ausgabe sollte dieselbe Wippe-Darstellung auf Standard gedruckt werden, wobei jedoch eines (und nur eines) der Gewichte durch ein größeres Gewicht ersetzt wird, um die Wippe auszugleichen. Eingaben machen dies garantiert nur mit ganzen Zahlen möglich. Daher müssen Gewichte ohne Dezimalstellen oder ähnliche Bezeichnungen angegeben werden. Wenn Ihre Sprache nicht stdout verwendet, sollten Sie bei der Ausgabe nach Community- / Metakonsens vorgehen. Nachgestellte Zeilenumbrüche sind in Ordnung, andere Änderungen am Darstellungsformat sind jedoch wahrscheinlich nicht in Ordnung.
Veranschaulichung
Testeingänge und entsprechende Ausgänge
Eingang 1
12 22
--------------------
^
Ausgang 1
12 26
--------------------
^
Eingang 2
42 42
-----------
^
Ausgang 2
42 42
-----------
^
Eingang 3
3 16
----------------
^
Ausgang 3
14 16
----------------
^
Eingang 4
1 56
-------------------
^
Ausgang 4
196 56
-------------------
^
Referenzimplementierung - 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",
"-------------------",
" ^ "])
Regeln
Dies ist Code-Golf , so dass der kürzeste Code-Gewinn in Bytes gezählt wird. Überprüfen Sie das Meta, wenn das Zählen von Bytes in Ihrer Sprache umständlich ist.
Es gelten Standardregeln / Regelungslücken.
Die Eingabe muss in einem angemessenen Format erfolgen. Eine nicht erschöpfende Liste geeigneter Formate wird wie folgt angegeben:
- Eine einzelne Zeichenfolge mit durch Zeilenumbrüche getrennten Zeilen
- Eine Liste von Zeichenfolgen, wobei jede Zeichenfolge eine Zeile darstellt
- Ein 2D-Array oder eine Matrix von Zeichen
Verwandte Herausforderungen
- Gewichte auf einer Wippe ausbalancieren - Vorgeschlagen im August 2015 von samgak