Geben Sie bei zwei positiven Ganzzahlen X und Y eine beliebige Kombination der folgenden drei ASCII-artigen Tiere aus, sodass die Ausgabe genau X Kommas ( ,
) und Y Punkte ( .
) enthält, sofern dies möglich ist.
Koala: 1 Komma, 2 Punkte
<.,.>
Krabbe: 2 Kommas, 2 Punkte
,<..>,
Commapillar: 3 oder mehr Kommas, 1 Punkt
<,,,.>
oder
<,,,,.>
oder<,,,,,.>
oder<,,,,,,.>
oder<,,,,,,,.>
usw.
Wenn keine Kombination dieser Tiere genau X Kommas und Y Perioden erzeugen kann, geben Sie ein einzelnes Kommaleon aus, das den Fehler tarnt:
~<.,,>~~
Die Ausgabetiere können in beliebiger Menge und beliebiger Reihenfolge sein. Sie können in einer Zeichenfolge, einem Leerzeichen oder einer durch Zeilenumbrüche getrennten Liste oder in einer Liste enthalten sein, in der jedes Tier ein Element ist.
Für X = 7, Y = 5 wären dies beispielsweise gültige Ausgaben (durch Leerzeilen getrennt):
<.,.> <.,.> <,,,,,.>
<.,.>
<,,,,,.>
<.,.>
,<..>, <.,.> <,,,,.>
<,,,,.>
,<..>,
<.,.>
,<..>, <,,,.> ,<..>,
[",<..>,", ",<..>,", "<,,,.>"] (list syntax depends on language)
Beachten Sie, dass (zumindest in diesem Beispiel) mehrere Tiergruppen vorhanden sind, die funktionieren können. Denken Sie jedoch daran, dass Sie nur eine gültige Lösung ausgeben müssen , wenn eine existiert. Die Anzahl der Tiere oder die Anzahl der verschiedenen Tiere spielt keine Rolle.
Bei Eingaben wie X = 3, Y = 3 oder X = 1, Y = 5, bei denen es keine Lösung gibt, ist die Ausgabe immer
~<.,,>~~
Vielleicht in einer Einzelelementliste.
Der kürzeste Code in Bytes gewinnt.
quelle
__int128
und ich zu faul war, um eine Bignum-Bibliothek zu benutzen. Hier ist der CSV-Dump: pastebin.com/ght5xkRu Die erste Zeile und Spalte sind die X- und Y-WerteAntworten:
Rubin, 139 Bytes
Lambda-Funktion, nimmt x und y als Argumente und gibt einen String zurück
Wenn es eine Lösung gibt, kann diese mit allen Koalas + Commapillars oder allen Koalas + Krabben durchgeführt werden.
Das Prinzip ist, ein Minimum an Kommapillaren zu verwenden. Wenn die Zahl ungerade ist, verwenden wir 1 Commapillar. Wenn wir sogar 0 Kommapillaren verwenden, es sei denn, es gibt mehr Kommas als Punkte, dann verwenden wir 2.
Die Anzahl der Perioden, die bei Nicht-Komapillaren (Krabben + Koalas) verwendet werden, ist zwangsläufig gerade, und die Anzahl der Nicht-Komapillaren ist die Hälfte
(number of periods)-(number of commapillars)
. Wenn es nicht genügend Kommas für alle Koalas oder zu viele für alle Krabben gibt, ist keine Lösung möglich. Andernfalls geben wir eine Lösung zurück.Kommentiert im Testprogramm
verwendet aus Gründen der Übersichtlichkeit "fail" anstelle von chameleon
Ausgabe
quelle
Befunge,
249218 BytesProbieren Sie es online!
Dies basiert nun auf dem Algorithmus in der Ruby-Antwort von Level River St , der im Vergleich zu meiner ursprünglichen Lösung mehr Spielraum für das Golfen und eine erhebliche Größenreduzierung bot.
quelle
C # 6,
321303 BytesRufen Sie an
F()
. Die beiden anderen Funktionen sind Helfer. Repl.it Demoquelle