Étant donné deux entiers positifs X et Y, sortez n'importe quelle combinaison des trois animaux ASCII suivants de telle sorte que la sortie contienne exactement X virgules ( ,
) et Y périodes ( .
), si cela est possible.
Koala: 1 virgule, 2 points
<.,.>
Crabe: 2 virgules, 2 points
,<..>,
Commapillar: 3 virgules ou plus, 1 point
<,,,.>
ou
<,,,,.>
ou<,,,,,.>
ou<,,,,,,.>
ou<,,,,,,,.>
etc.
Si aucune combinaison de ces animaux ne peut produire exactement X virgules et Y périodes, affichez un seul commaleon qui camouflera l'échec:
~<.,,>~~
Les animaux de sortie peuvent être de n'importe quelle quantité et de n'importe quel ordre. Ils peuvent être séparés par une chaîne, un espace ou une nouvelle ligne, ou bien dans une liste où chaque animal est un élément.
Par exemple, pour X = 7, Y = 5, ce sont toutes des sorties valides (séparées par des lignes vides):
<.,.> <.,.> <,,,,,.>
<.,.>
<,,,,,.>
<.,.>
,<..>, <.,.> <,,,,.>
<,,,,.>
,<..>,
<.,.>
,<..>, <,,,.> ,<..>,
[",<..>,", ",<..>,", "<,,,.>"] (list syntax depends on language)
Notez que (au moins dans cet exemple) il existe plusieurs ensembles d'animaux qui peuvent fonctionner. Mais rappelez -vous que vous avez seulement besoin de sortie tout un solution valide, s'il en existe une. Le nombre d'animaux ou le nombre d'animaux distincts n'a pas d'importance.
Pour les entrées telles que X = 3, Y = 3 ou X = 1, Y = 5 où il n'y a pas de solution, la sortie sera toujours
~<.,,>~~
peut-être dans une liste à un seul élément.
Le code le plus court en octets gagne.
la source
__int128
et j'étais trop paresseux pour utiliser une bibliothèque bignum. Voici le vidage CSV: pastebin.com/ght5xkRu la première ligne et la colonne sont les valeurs X et YRéponses:
Rubis, 139 octets
Fonction Lambda, prend x et y comme arguments et retourne une chaîne
Si une solution existe, elle peut être faite avec tous les koalas + commapillars ou tous les koalas + crabes.
Le principe est d'utiliser un minimum de commapillars. Si le nombre est impair, nous utilisons 1 commapillaire. si même nous utilisons 0 commapillars, sauf s'il y a plus de virgules que de points, auquel cas nous utilisons 2.
Le nombre de périodes utilisées chez les noncommapillaires (crabes + koalas) est nécessairement pair, et le nombre de noncommapillars est la moitié
(number of periods)-(number of commapillars)
. S'il n'y a pas suffisamment de virgules pour tous les koalas, ou trop pour tous les crabes, aucune solution n'est possible. Sinon, nous retournons une solution.Commenté dans le programme de test
utilise "échouer" au lieu de caméléon pour plus de clarté
Production
la source
Befunge,
249218 octetsEssayez-le en ligne!
Ceci est maintenant basé sur l'algorithme de la réponse Ruby de Level River St , qui a fourni une plus grande portée pour le golf et une réduction significative de la taille par rapport à ma solution d'origine.
la source
C # 6,
321303 octetsAppelle
F()
. Les deux autres fonctions sont des aides. démo repl.itla source