Défi
Codez un cookie ASCII d'une sorte en fonction de l'entrée.
Contribution
- Le type de cookie. Il s'agit de l'une des trois chaînes: "Plain", "Chocolate" ou "Nuts". Peut être des arguments de fonction, stdin (ou équivalent le plus proche) ou des arguments de fichier.
Production
- Un cookie ASCII. Voir ci-dessous.
Doit être
___
/ \
| |
\___/
pour entrée simple,
___
/. .\
| . |
\___/
pour l'entrée de chocolat, et enfin
___
/^ \
|^ ^|
\___/
pour l'écrou.
Les autres informations
- C'est mon premier défi, c'est aussi simple que possible. Les commentaires constructifs sont grandement appréciés.
- Utilisez tous les moyens pour le faire.
- Les espaces de fin sont très bien.
- Il s'agit d'un défi de golf de code, donc l'entrée la plus courte au bout de 9 jours (mercredi 12 août 2015) l'emporte.
Je vous remercie!
Le gagnant est Jakube utilisant Pyth avec 41 octets. Merci à tous ceux qui ont participé. Je vais maintenant me charger de relever des défis plus complexes.
Réponses:
Pyth,
4241 octetsEssayez-le en ligne: Regular Input / Test Suite
Explication:
la source
Rubis, 73
Il s'agit d'une fonction lambda anonyme. Le voici dans un programme de test:
Il utilise simplement la première lettre du type de cookie (en majuscules) et le prend modulo 3 pour obtenir un index dans la plage
0..2
. Il renvoie ensuite la chaîne représentant le cookie, avec les chaînes appropriées intégrées aux bons endroits.la source
ord
méthode peut faire si vous l'appelez pour une chaîne entière? Ma première idée était le formatage:->s{" ___\n/%1$s \\\n|%1$s %1$s|\n\\___/"%'^. '[s.ord%3]}
tr
s'avère être plus court:->s{' ___↵/% \↵|% %|↵\___/'.tr ?%,'^. '[s.ord%3]}
s[0] --> s
, je n'ai jamais pensé à l'essayer. Votre code ne semble pas donner la bonne réponse pour le cas du chocolat, car les pépites de chocolat sont à des endroits différents de ceux des noix. Néanmoins, il y a des idées utiles là-bas, je les examinerai plus tard. Je n'ai pas utilisétr
ou%
avant.tr
la syntaxe de. Est juste un personnage non impliqué dans l'art des cookies que j'ai utilisé comme espace réservé.)Python 2.7.6, 99 octets
Cet algorithme repose sur le fait que
hash(cookie)%3
donne 0 quandcookie = "Plain"
, 1 quandcookie = "Nut
et 2 quandcookie = "Chocolate
. Si quelqu'un connaît un moyen de raccourcir ce code, faites-le moi savoir dans les commentaires.la source
C: 122
Explication après avoir fini de jouer au golf.
Exemple d'utilisation:
la source
CJam,
4948 octetsEssayez-le en ligne dans le interpréteur CJam .
Comment ça fonctionne
À la fin, CJam imprime automatiquement tous les éléments de la pile.
la source
Javascript (ES6), 90
Il s'agit d'une fonction de flèche anonyme. Il utilise la longueur de l'entrée pour déterminer quel cookie dessiner.
Explication:
Tester:
la source
BrainFuck,
481447436 octetsPourquoi pas BrainFuck ?, le programme peut probablement être plus joué au golf, mais je pense que c'est assez soigné.
la source
C # avec indentation et saut de ligne
Golfé (225 caractères)
la source
String C= Console.ReadLine(),E=
... etc?C # 6, 105 octets
Donc, j'ai presque presque obtenu ces sous-100 octets, aucune idée d'où presser les derniers octets cependant: C
la source
Pyth,
5854535250 octetsJe ne pense pas que cela puisse être joué davantage. J'essayais vraiment de presser ça en moins de 50 octets
la source
". . . " -> *". "3
JavaScript (ES6), 72 octets
À peu près aussi simple que possible… les nouvelles lignes comptent pour 1 octet chacune.
Démo
Comme c'est ES6, cette démo ne fonctionne que dans Firefox et Safari pour l'instant.
la source
Commodore 64 BASIC, 181 octets
Remarques:
Au lieu de barres obliques inverses,
\
les caractères SHIFT-M ont été utilisés, pour les barres obliques/
- SHIFT-N et pour les canaux|
- SHIFT-T. SHIFT-Z (signe de diamant de carte) a été utilisé pour^
. En fait, les caractères n'ont pas d'importance car ils occupent tous un octet chacun.Parce que sur C64 chaque commande (PRINT, INPUT, THEN, etc.) prend 2 octets en mémoire (ou même un, IIRC), le langage BASIC valait la peine d'être essayé (cependant, il a fallu plus d'octets que ce à quoi je m'attendais).
La taille du programme a été calculée en mesurant la mémoire libre avant de taper le programme (38909 octets) et après (38728 octets), à l'aide de la
PRINT FRE(0)+65536
commande, ce qui donne 181 octets de différence.Code testé et captures d'écran préparées avec cet outil: http://codeazur.com.br/stuff/fc64_final/ (GPL).
Captures d'écran:
la source
Lua 5.3,
113 octets112 octetsIl utilise beaucoup d'opérateur ternaire et de concaténation de chaînes, et j'ai évincé tous les espaces qui ne font pas partie de la sortie elle-même.
la source
Java
258217 caractères / octetsGolfé
Original
la source
LUA 270 caractères 270 octets
la source
cookie
àc
, supprimez les espaces pendant les ifs, supprimez ceux inutilesio.read()
s , la première et la dernière ligne d'un cookie sont toujours les mêmes, ....LOLCODE 265 caractères
Run
la source