Ich baue einen riesigen Legoroboter und muss einige bestimmte Übersetzungsverhältnisse mithilfe eines Satzes von Zahnrädern erzeugen. Ich habe viele Zahnräder mit den üblichen Lego-Zahnradgrößen: 8, 16, 24 oder 40 Zähne. Schreiben Sie ein Programm, das ich verwenden kann, indem ich ein Übersetzungsverhältnis eingebe, und das Programm sagt mir, welche Kombination von Zahnrädern ich verwenden soll, um das angeforderte Übersetzungsverhältnis zu erhalten.
Das Eingabeverhältnis wird in der Standardeingabe (oder in der Entsprechung Ihrer Sprache) mit zwei durch einen Doppelpunkt getrennten Ganzzahlen angegeben. Ein Verhältnis von a:b
bedeutet, dass sich die Abtriebswelle a/b
so schnell drehen soll wie die Antriebswelle .
Der Ausgang auf der Standardausgabe sollte eine einzige Zeile eine durch Leerzeichen getrennte Liste von Übersetzungsverhältnissen enthält, in Form sein , x:y
wo x
die Größe des Getriebes auf der Antriebswelle und y
ist die Größe des Getriebes auf der Ausgangswelle. Sie müssen die minimal mögliche Anzahl von Gängen für die angegebene Übersetzung verwenden. Jeder x
und y
muss einer von 8,16,24,40
.
Beispiele:
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
Wenn das gewünschte Übersetzungsverhältnis nicht möglich ist, drucken Sie "UNMÖGLICH". Wenn keine Zahnräder erforderlich sind, drucken Sie die leere Zeichenfolge.
Dies ist Code Golf, die kürzeste Antwort gewinnt.
1:5 -> 8:40
und 10:1 -> 40:8
sinnvoll, aber die anderen nicht so sehr.
1:5
bedeutet, dass sich die Abtriebswelle 5-mal langsamer dreht, und ein 8-Zahn-Zahnrad am Eingang und ein 40-Zahn-Zahnrad am Ausgang machen dies möglich.
10:1 -> 40:8 16:8
, nicht was du gesagt hast. Was verwirrt dich mit den anderen? 9:4
wird dabei 3:2
doppelt implementiert . 3:2
wird implementiert mit 24:16
.
7:7
ist das gleiche wie 1:1
, so dass es keine Zahnräder erfordert, um zu implementieren.