Sto costruendo un gigantesco robot lego e ho bisogno di generare alcuni rapporti di trasmissione particolari utilizzando una serie di ingranaggi. Ho un sacco di ingranaggi con le dimensioni degli ingranaggi lego comuni: 8, 16, 24 o 40 denti. Scrivi un programma che posso usare quando inserisco un rapporto di trasmissione e il programma mi dice quale combinazione di ingranaggi dovrei usare per ottenere il rapporto richiesto.
Il rapporto di input verrà specificato sull'input standard (o l'equivalente della tua lingua) con due numeri interi separati da due punti. Un rapporto a:bindica che l'albero di uscita deve ruotare i a/btempi più velocemente dell'albero di entrata.
L'output all'output standard dovrebbe essere una riga singola contenente un elenco separato da spazi di rapporti di trasmissione, nella forma in x:ycui si xtrova la dimensione dell'ingranaggio sull'albero di ingresso e yla dimensione dell'ingranaggio sull'albero di uscita. È necessario utilizzare il numero minimo possibile di marce per il rapporto indicato. Ognuno xe ydeve essere uno di 8,16,24,40.
esempi:
1:5 -> 8:40
10:1 -> 40:8 16:8
9:4 -> 24:16 24:16
7:1 -> IMPOSSIBLE
7:7 ->
6:15 -> 16:40
Se il rapporto di trasmissione desiderato è impossibile, stampare "IMPOSSIBILE". Se non è necessario alcun ingranaggio, stampare la stringa vuota.
Questo è il golf del codice, vince la risposta più breve.
1:5 -> 8:40e ha 10:1 -> 40:8un senso, ma gli altri non tanto.
1:5significa che l'albero di uscita gira 5 volte più lentamente, e un ingranaggio a 8 denti sull'ingresso e un ingranaggio a 40 denti sull'uscita lo fanno accadere.
10:1 -> 40:8 16:8non quello che hai detto. E gli altri ti confondono? 9:4viene implementato facendo 3:2due volte. 3:2è implementato usando 24:16.
7:7è uguale a 1:1, quindi non richiede attrezzi da implementare.