Personne ne sait vraiment ce que l’émoticône >:U
est destiné à représenter, mais de nombreux spécialistes pensent que cela ressemble à un canard en colère . Supposons que c'est le cas.
Tâche
Soit un entier n compris entre 0 et 3 inclus, à imprimer ou à retourner
quack
si n = 0,
>:U
si n = 1,
U U
> : U U
> U U
> : U U
UUU
si n = 2, ou
>:U >:U
>:U >:U >:U
>:U >:U >:U >:U
>:U >:U >:U
>:U >:U >:U
>:U >:U >:U
>:U >:U >:U >:U
>:U >:U >:U
>:U>:U>:U
si n = 3.
Vous pouvez supposer que la saisie sera toujours valide. Il ne doit y avoir aucun espace de début dans la sortie, mais toute quantité d’espace de fuite est acceptable. Les canards (à l'exception possible de @cobaltduck) n'ont aucune tolérance pour les échappatoires. Le code le plus court en octets gagne.
Réponses:
CJam,
1089085 octetsNotez que certains caractères ne sont pas imprimables. Essayez-le en ligne!
Contexte
Les deux premières sorties sont incompressibles dans CJam.
La compression de la dernière sortie est simple. Une fois tous les sauts de ligne supprimés, nous pouvons fractionner la chaîne résultante en occurrences de
>:U
et calculer la longueur de chaque chaîne d'espaces résultante.Cela se traduit par le tableau
que nous pouvons stocker efficacement en le convertissant de la base 22 à la base 269, donnant les chiffres
Comme chaque chiffre est inférieur à 256 , nous pouvons le stocker sous la forme d'un seul octet.
Enfin, la compression de la troisième sortie devient plus facile si nous transposons des lignes et des colonnes:
En comptant une fois de plus les espaces entre les caractères non-blancs, nous obtenons le tableau
qui devient
transcodé de la base 22 à la base 269.
Comment ça fonctionne
la source
:D
entre les deux cordes.Java,
303286 octetsSauvegardé 17 octets grâce à @VoteToClose!
En réalité, je pensais que ce serait amusant d'essayer en Java.
Crée une liste de variables de chaîne représentant des chaînes communes, puis crée un tableau de toutes les sorties, puis affiche la bonne.
Ungolfed:
Ceci est ma première réponse sur ce site, alors s'il vous plaît dites-moi si j'ai fait quelque chose de mal.
la source
D+A
etC+B
apparaissent assez souvent pour être golfed plus loin dans 2 nouvelles variables. J'ai aussi le moindre sentiment que l'utilisation d'un tableau avec une boucle for pourrait être utile, mais je n'ai pas encore trouvé comment ...05AB1E ,
162159157 octetsCode
Bon sang, bien trop long, mais c'est au moins quelque chose:
Essayez-le en ligne!
Explication
La première partie du code existe
">:U"V
, qui définitY
cette chaîne. Après cela, nous vérifions simplement si l'entrée est égale à 3. Cela se fait à laI3Qi
pièce. Si égal, nous imprimons la pie géante:N = 3
Cela commence par
ð16×
quoi il suffit de pousser 16 caractères d'espace. Après cela, il y a un numéro7166b
. Cela couvre la">:U "
partie, avec un peu d'aide de Retina :). J'ai utilisé ce script pour convertir la chaîne en un nombre binaire. Après cela, nous arrivons à la1ð:0Y:
partie, qui remplace chaque1
avec un caractère d'espacement et chaque0
avecY
, qui a été défini sur>:U
. Après cela, nousD
uplicate cette chaîne, le stocker dans l'X
utilisationU
etJ
OIN la pile. Nous sautons ceci en utilisant,
, qui imprime la chaîne complète avec une nouvelle ligne. Tous les autres suivants sont tous basés sur le même principe. La déclaration if se termine à la seconde}
.La conversion complète peut être trouvée ici .
N = 2
Nous vérifions maintenant si l'entrée est égale à 2. Ceci est fait à la
¹2Qi
pièce. Après cela, si égal, nous poussons le caractère espace 4 fois en utilisantð4×
. Après cela, nous poussons la" U U"
corde et la stockons avec©
(idée volée de manière flagrante à Jelly: p). NousJ
retrouvons la pile et l’imprimons avec une nouvelle ligne. Après cela, nous poussons la"> :"
chaîne, récupérons l’" U U"
utilisation®
,J
la pile, puisD
mettons cette chaîne en place et les imprimons tous les deux sur la même ligne.Petit quiz, qu'est-ce que ça va faire
" > "?®,
?Après avoir imprimé la chaîne ci-dessus, nous obtenons le duplicata de la deuxième ligne du visage et l’imprimons (puisque c’est la même chose que la deuxième ligne).
La dernière partie couverte par cette affaire est:
N = 1
Celui-ci est plus facile à expliquer:
N = 0
la source
Vitsy ,
172171159 octetsOh bon sang. Si je voulais quelque chose pour montrer le pouvoir des méthodes, je l'ai.
Essayez-le en ligne!
Comment cela fonctionne est en appelant diverses méthodes tout au long de lui-même. L'explication est ci-dessous:
Ce code est ridicule. Sa forme verbeuse est:
la source
JavaScript (ES6), 163 octets
Explication
Utilise ma compression go-to avec JavaScript: le codage de durée d'exécution. Les chiffres
1
à9
mapper sur autant d'espaces, ceux0
sur le visage de canard en colère et tous les autres personnages restent les mêmes.la source
Japt,
1161051029996 octetsContient un non imprimable. Testez-le en ligne!
Comment ça fonctionne
Les deux premières chaînes ne sont pas compressées du tout. Le troisième est compressé simplement en remplaçant chaque série d'espaces par sa longueur, puis
" U3U"
par"z"
. Le dernier est plus complexe:>:U
par1
.191\n
par4
. (4
n'est utilisé nulle part ailleurs dans la chaîne.)10
-255
, ou0A
-FF
) au caractère portant ce code de caractère.La chaîne résultante ne fait que
2119 octets de long, mais la décompression en prend encore3129.Après avoir décompressé les chaînes, nous prenons simplement l'élément à la position
U
, l'entrée. (Le tableau est arrangé[0,3,2,1]
car il y a un bogue qui le rend compte à partir de la fin du tableau au lieu du début.)la source
MATL ,
283182 octets101 octets sauvés grâce à @Adnan!
Ceci utilise des nombres décimaux pour coder des index
0
...3
sur les quatre caractères des cas 2 et 3. Les nombres décimaux pourraient peut-être être compressés à l'aide d'un codage en base 64, mais c'est un charlatan!Dans le cas 3, un très beau tour suggéré par @Adnan est utilisé: définissez des séquences binaires pour coder chaque ligne, où
0
et1
correspondent à l'espace et>:U
respectivement.Essayez-le en ligne!
la source
1
avec des espaces et le0
par la>:U
chaîne. Je ne sais pas si cela aiderait.Gomme à la cannelle, 76 octets
Non compétitif depuis que Cinnamon Gum a été créé après ce défi.
Essayez-le en ligne.
Explication
Le premier octet
l
spécifie le mode: dans ce cas, il indique à Cinnamon Gum d'entrer en mode table de consultation. Cinnamon Gum décompresse ensuite le reste de la chaîne (qui a été compressée aveczopfli --deflate
) dans ceci:Il se divise ensuite en
;
, met chaque paire clé-valeur (avec&
comme délimiteur) dans un dictionnaire, et génère des sortiesdictionary[input]
.la source
JavaScript ES6,
232223203188 octetsSauvegardé
2944 octets grâce à ETHproductions!Testez-le!
Afficher l'extrait de code
la source
1
et0
s pourrait- il être transformé en un nombre trinaire?r+g+g+g+r
pourg+g+g+r
et ajuster la chaîne en conséquence.GML, 265 octets
La réponse excellente de @ kittycat3141 du port, avec la suggestion de jouer plus loin avec deux nouvelles variables (que j'ai nommées G et H) de @VoteToClose. J'ai également réussi à le raccourcir davantage avec la syntaxe relativement souple de GML.
la source