In dieser Variante des Vier-Viere-Puzzles sollten Sie bis zu x
x's
(und keine andere Zahl) und einen definierten Satz von Operationen verwenden, um jede Zahl von 0 bis 100 zu erreichen. Wenn x = 4
Sie dann bis zu vier verwenden 4s
können, wird diese Frage zur klassischen Vier-Vier Puzzle (außer Sie können bis zu vier 4s verwenden, anstatt genau vier davon verwenden zu müssen). Wir nehmen an 1 < x <= 9
.
In dieser Version sind nur die folgenden Operatoren zulässig:
- Addition (
+
), Subtraktion (-
), Multiplikation (*
), Division (/
). Beachten Sie, dass dies eine echte Teilung ist5/2 = 2.5
. - Potenzierung (z. B. 4 ^ 4), da dies keine zusätzlichen Symbole beinhalten würde, wenn es normal von Hand geschrieben würde.
- Sie können neue Ganzzahlen erstellen, indem Sie verketten
xs
. ZB können Sie die ganzen Zahlen machen4, 44, 444, 4444
.
Sie können auch Klammern verwenden, um Zahlen einfach zu gruppieren, um die Reihenfolge der Auswertung der Operatoren zu steuern. Sie können beispielsweise keine Klammern mit Verkettung wie in kombinieren (4/4)(4/4) = (1)(1) = 11
.
Es dürfen keine anderen Symbole verwendet werden und es gilt die Standardreihenfolge.
Ihr Programm sollte bei einem x
im definierten Bereich und n
zwischen 0
und 100
einschließlich eine korrekte Lösung für diese Eingabe generieren, falls vorhanden. Andernfalls muss Ihr Code etwas ausgeben, um anzuzeigen, dass keine solche Lösung vorhanden ist.
Sie müssen in der Lage sein, Ihre Übermittlung für alle Eingabewerte von x
und n
im zulässigen Bereich vollständig auf Ihrem Computer auszuführen . Dies ist Code Golf, also gewinnt die kürzeste Lösung.
Diese alte verwandte Frage verwendet mehr Operatoren (und nur 4s) und daher sind alle Zahlen von 0 bis 100 lösbar, was für diese Herausforderung nicht zutrifft.
Ein- und Ausgabe
Ihr Code verwendet zwei Ganzzahlen x
und n
als Eingabe und sollte eine Lösung (oder einen Hinweis darauf, dass es keine Lösung gibt) in einem von Menschen lesbaren Format ausgeben, das Sie für zweckmäßig halten. Eingabe 4 6
würde bedeuten "Verwenden Sie bis zu vier 4s, machen Sie zum Beispiel die Zahl 6". Also, wenn der Eingang 4 6
der Ausgang ist, könnte sein (4+4)/4+4
.
Antworten:
Python 3 , 265 Bytes
Probieren Sie es online aus!
Funktioniert für alle Nummern in der von Engineer Toast verknüpften Referenz .
Läuft bis zu
x=8
tio,x=9
dauert ein paar Minuten auf meinem Computer.Die Funktion
g
gibt eine Menge aller Kombinationen mit höchstens einerx
Anzahl zurückx
.f
durchläuft sie dann und gibt die erste zurück, die die Zahl ergibtn
.Die Anzahl der möglichen Werte, die ich für jeden gefunden habe,
x
sind:Alle oben genannten Zahlen können von erzeugt werden
(a+b)
,(a-b)
,(a+b)
,a*b
,a/b
,(a/b)
, unda^b
.a+b
unda-b
geben Sie nicht mehr Zahlen.a^b
wird auch nur einmal verwendet, da sonst große Zahlen entstehen (dies wird auch im obigen Referenzdokument überprüft).Eine alternative Version, die kurzschließt, sobald eine Lösung gefunden wird (nicht so golfen):
Dies ist viel schneller, da für
x=7..9
alle Nummern erstellt werden kann.Python 3 ,
338289 BytesProbieren Sie es online aus!
quelle
(4/4**(4-4))
für4
), aber es stellt sich heraus, dass dies nicht der Fall ist.exit(e)
ist kürzer alsreturn e