Dies basiert auf einem Spiel, das einer meiner Mathematiklehrer in der Mittelschule gespielt hat. Er schrieb 5 zufällige einstellige Zahlen an die Tafel und dann eine zufällige zweistellige Zahl. Wir würden versuchen, eine Gleichung zu erstellen, die alle 5 einstelligen Zahlen verwendet, um die zweistellige Zahl zu erhalten. Hier einige Beispiele mit Lösungen, um dies besser zu erklären:
Input: Solution:
7 5 4 8 4 34 5*8-7+4/4 = 34
3 1 5 7 6 54 (7+3)*6-5-1 = 54
3 9 2 1 6 87 9*(2+1)*3+6 = 87
2 1 6 9 7 16 (9-7+6*1)*2 = 16
2 4 5 8 6 96 8*(5+6)+2*4 = 96
3 8 4 5 4 49 8*(4+4)-3*5 = 49
Diese Herausforderung besteht darin, ein Programm zu schreiben, das solche Gleichungen für eine bestimmte Eingabe erzeugen kann. Die Eingabe kann entweder über die Befehlszeile oder über eine Eingabeaufforderung erfolgen. Die 5 einstelligen Zahlen werden immer zuerst eingegeben (in keiner bestimmten Reihenfolge), gefolgt von der zweistelligen Zahl. Das Programm druckt dann eine Lösungsgleichung aus, die es findet. Sie müssen nicht mit Situationen umgehen, in denen es keine Lösung gibt. Die Funktion muss in der Lage sein, die folgenden Operationen in der Gleichung zu verwenden: Addition, Subtraktion, Multiplikation und Division. Wenn Sie zusätzliche grundlegende Operationen zulassen möchten, ist dies in Ordnung, solange diese im Geiste der Herausforderung bleiben (Negation, Potenzierung und Modul wären nette Ergänzungen). Die Reihenfolge der Operationen folgt den mathematischen Standardregeln, sodass für die Gruppierung Klammern erforderlich sind.
Programme werden basierend auf der Codelänge (einschließlich des erforderlichen Leerzeichens) bewertet. Hinweis: Die Division muss exakt sein, darf nicht auf die nächste Ganzzahl gerundet oder abgeschnitten sein.