Biorąc pod uwagę dwie dodatnie liczby całkowite X i Y, wyprowadzaj dowolną kombinację trzech następujących zwierząt ASCII, tak że wynik zawiera dokładnie X przecinków ( ,
) i kropek Y ( .
), jeśli jest to możliwe.
Koala: 1 przecinek, 2 kropki
<.,.>
Krab: 2 przecinki, 2 kropki
,<..>,
Commapillar: 3 lub więcej przecinków, 1 kropka
<,,,.>
lub
<,,,,.>
lub<,,,,,.>
lub<,,,,,,.>
lub<,,,,,,,.>
itd.
Jeśli żadna kombinacja tych zwierząt nie wytworzy dokładnie przecinków X i okresów Y, wyślij jeden przecinek, który zakamufluje awarię:
~<.,,>~~
Zwierzęta wyjściowe mogą być w dowolnych ilościach i dowolnej kolejności. Mogą być oddzielone ciągiem, spacją lub znakiem nowej linii lub też na liście, gdzie każde zwierzę jest jednym elementem.
Na przykład dla X = 7, Y = 5, wszystkie byłyby prawidłowymi danymi wyjściowymi (oddzielone pustymi liniami):
<.,.> <.,.> <,,,,,.>
<.,.>
<,,,,,.>
<.,.>
,<..>, <.,.> <,,,,.>
<,,,,.>
,<..>,
<.,.>
,<..>, <,,,.> ,<..>,
[",<..>,", ",<..>,", "<,,,.>"] (list syntax depends on language)
Zauważ, że (przynajmniej w tym przykładzie) istnieje wiele zestawów zwierząt, które mogą pracować. Pamiętaj jednak, że musisz podać tylko jedno prawidłowe rozwiązanie, jeśli takie istnieje. Liczba zwierząt lub liczba różnych zwierząt nie ma znaczenia.
Dla danych wejściowych takich jak X = 3, Y = 3 lub X = 1, Y = 5, gdy nie ma rozwiązania, wyjście zawsze będzie
~<.,,>~~
być może na liście jednoelementowej.
Najkrótszy kod w bajtach wygrywa.
źródło
__int128
i byłem zbyt leniwy, aby użyć biblioteki bignum. Oto zrzut CSV: pastebin.com/ght5xkRu pierwszy wiersz i kolumna to wartości X i YOdpowiedzi:
Rubin, 139 bajtów
Funkcja lambda, przyjmuje x i y jako argumenty i zwraca ciąg znaków
Jeśli istnieje rozwiązanie, można to zrobić ze wszystkimi koalami + commapillars lub wszystkimi koalami + krabami.
Zasadą jest użycie minimum komapilar. Jeśli liczba jest nieparzysta, używamy 1 commapillar. jeśli nawet użyjemy 0 commapillars, chyba że jest więcej przecinków niż kropki, w takim przypadku używamy 2.
Liczba okresów używanych w niekapilarach (kraby + koale) jest koniecznie równa, a liczba niekapilarnych wynosi połowę
(number of periods)-(number of commapillars)
. Jeśli nie ma wystarczającej liczby przecinków dla wszystkich koali lub zbyt wielu dla wszystkich krabów, żadne rozwiązanie nie jest możliwe. W przeciwnym razie zwracamy rozwiązanie.Skomentowane w programie testowym
dla jasności używa słowa „fail” zamiast kameleona
Wydajność
źródło
Befunge,
249218 bajtówWypróbuj online!
Jest to teraz oparte na algorytmie z odpowiedzi Ruby autorstwa Level River St , który zapewnił większy zakres gry w golfa i znaczną redukcję wielkości w porównaniu do mojego oryginalnego rozwiązania.
źródło
C # 6,
321303 bajtówZadzwoń
F()
. Pozostałe dwie funkcje są pomocnikami. repl.it demoźródło