Atto di bilanciamento
Panoramica
Dato un input di 3 numeri interi positivi a una cifra che rappresentano un insieme di pesi, emette una rappresentazione ASCII di un'altalena con i pesi posizionati su di esso in modo che sia in equilibrio attorno a un perno centrale, tenendo conto degli effetti della leva.
Ogni numero ha un peso pari al suo valore. La coppia di ciascun numero è il peso moltiplicato per la distanza dal centro in caratteri. Perché il movimento alternato sia in equilibrio, la coppia somma dei pesi a sinistra del movimento alternato deve essere uguale a quella di quelli a destra, in questo modo .
Ingresso
3 numeri interi compresi tra 1 e 9. È possibile inserire numeri interi, tuttavia è conveniente, ad esempio una tupla, 3 valori separati da virgole, ecc. Tuttavia, il programma deve essere in grado di gestire l'inserimento di numeri in qualsiasi ordine (ovvero non presupporre che i valori vengano ordinati). È possibile inserire numeri duplicati (ad esempio 2,3,2).
Gli input consentiranno sempre matematicamente un output valido, altrimenti l'input non è valido.
Produzione
L'output dovrebbe essere una rappresentazione ASCII a 2 righe dell'altalena con i pesi posizionati su di essa. Sulla prima riga ci sono le cifre, distanziate per bilanciarle sull'altalena.
I numeri non possono essere posizionati al centro della scala, dove la distanza e quindi la coppia sarebbero zero. Le distanze valide dalla gamma centrale vanno da 1 a 10 caratteri compresi a sinistra o a destra del perno.
Negli spazi non occupati dai numeri sono presenti 18 caratteri di sottolineatura (un trattino basso centrale e 10 su ciascun lato, meno le 3 posizioni occupate dai numeri). Sull'ultima riga è presente un carattere a singolo cursore allineato al centro della scala, che rappresenta il perno.
Esempi
Ingresso:
4,7,2
Produzione:
________7___42_______
^
7 * 2 = 4 * 2 + 2 * 3
I numeri possono essere emessi su entrambi i lati, ad esempio anche questo sarebbe valido:
_______24___7________
^
2 * 3 + 4 * 2 = 7 * 2
I numeri possono essere posizionati in qualsiasi punto della scala purché si bilancino, ad esempio:
Ingresso:
3,1,5
Produzione:
_____5________1__3___
^
5 * 5 = 1 * 4 + 3 * 7
o
____5________1_____3_
^
5 * 6 = 1 * 3 + 3 * 9
o
____5___________1_3__
^
5 * 6 = 1 * 6 + 3 * 8
eccetera
Il tuo programma deve emettere solo uno degli output validi. Non è necessario generare un errore se l'input non è valido.
Gli appunti
- Questo è code-golf, quindi vince il programma più breve in byte
- Il programma può essere autonomo o una funzione che accetta i numeri come input e restituisce una stringa.
- Il trascinamento di newline e white-space sull'ultima riga è facoltativo
- Se non sai cos'è un'altalena , è anche noto come barcollare o barcollare.