Atto di bilanciamento
Una sega (presumibilmente dal francese "ci-ça", che significa "questo-quello") forma un terzo della sacra trinità dell'attrezzatura da gioco, insieme allo scivolo e all'oscillazione altrettanto onnipresenti. Un see-saw è in perfetto equilibrio se, e solo se, la somma dei momenti su ciascun lato è equivalente. Una sega può quindi essere bilanciata aggiungendo una quantità specifica di peso al lato con la somma del momento inferiore; raggiungere questo è il tuo obiettivo per questa sfida.
Sfida
La tua sfida è quella di prendere una rappresentazione di una sega come input e di produrla di nuovo, con il peso aggiunto a un'estremità della sega per bilanciarla.
Ingresso
Il tuo programma deve assumere, in qualsiasi formato ragionevole, un see-saw ASCII come il seguente:
100 100
-------------------
^
La prima riga contiene due numeri, ognuno dei quali rappresenta i pesi sulla troncatrice. Esattamente un peso è presente su ciascun lato, ciascuno agendo all'estremità del suo lato della tavola. I pesi sono garantiti come numeri interi e si allineano sempre con l'estremità corrispondente della tavola. Questi numeri non si sovrapporranno mai al fulcro ( ^
).
La seconda riga rappresenta la "tavola" della troncatrice. Ogni trattino ( -
) rappresenta una lunghezza uguale tra loro, con la sola eccezione del trattino direttamente sopra il fulcro ( ^
), che non ha lunghezza.
La terza linea rappresenta il fulcro della troncatrice. Questo fulcro è contrassegnato dall'unico carattere che non è uno spazio su questa linea, un circonflesso ('^'). Il fulcro può essere posizionato ovunque lungo la lunghezza della tavola in un input valido purché rimanga spazio sufficiente in modo che i numeri che rappresentano i pesi non si sovrappongano nel fulcro nell'input o nell'output.
È garantito che l'input abbia tre righe e che non vi siano spazi bianchi prima o dopo i caratteri che costituiscono il see-saw (tranne, ovviamente, la terza riga, che lo richiede).
Produzione
Per l'output, la stessa rappresentazione della sega dovrebbe essere stampata su stdout, ma con uno (e solo uno) dei pesi sostituito con un peso maggiore, in modo da bilanciare la sega. Gli input sono garantiti per renderlo possibile utilizzando solo numeri interi. Pertanto, i pesi devono essere visualizzati senza punti decimali o altre notazioni simili. Se la tua lingua non usa stdout, dovresti andare per comunità / meta consenso sull'output. Le nuove righe finali vanno bene, ma qualsiasi altra modifica al formato di rappresentazione probabilmente non è corretta.
Esemplificazione
Ingressi di prova e uscite corrispondenti
Ingresso 1
12 22
--------------------
^
Uscita 1
12 26
--------------------
^
Ingresso 2
42 42
-----------
^
Uscita 2
42 42
-----------
^
Ingresso 3
3 16
----------------
^
Uscita 3
14 16
----------------
^
Ingresso 4
1 56
-------------------
^
Uscita 4
196 56
-------------------
^
Implementazione di riferimento - 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",
"-------------------",
" ^ "])
Regole
Questo è code-golf , quindi il codice più corto vince contato in byte. Controlla meta se il conteggio dei byte è scomodo nella tua lingua.
Si applicano le regole / scappatoie standard.
L'input deve essere preso in un formato ragionevole. Un elenco non esaustivo di formati appropriati è fornito come segue:
- Una singola stringa con linee separate da caratteri di nuova riga
- Un elenco di stringhe, ciascuna stringa rappresentava una riga
- Una matrice 2D o una matrice di caratteri
Sfide correlate
- Bilancia una serie di pesi su una sega - Proposto agosto 2015 da Samgak