Halloween est presque là, les vacances après lesquelles la plupart des gens doivent se sevrer d'un régime creux de sucre.
Écrivez un programme qui accepte un entier positif. Si l'entier est inférieur à 31 (1 à 30), sortez cette lanterne jack-o'-art ASCII, regardant vers la droite comme si vous attendiez Halloween avec impatience:
_____I_____
| | | | | | |
| | |^| |^| |
| | | |^| | |
| | |VvVvV| |
|_|_|_|_|_|_|
Si l'entrée est 31 (la date d'octobre Halloween est sur), sortez la même ASCII-o'-lantern, mais en regardant à gauche:
_____I_____
| | | | | | |
| |^| |^| | |
| | |^| | | |
| |VvVvV| | |
|_|_|_|_|_|_|
Si l'entrée est supérieure à 31, sortez une lanterne ASCII gonflée qui a probablement mangé trop de bonbons. Il peut faire face à gauche ou à droite car la queasyness peut être désorientante. Donc sortie:
_____I_____
| | | | | | |
| |o| |o| | |
| | |^| | | |
| |XXXXX| | |
|_|_|_|_|_|_|
ou
_____I_____
| | | | | | |
| | |o| |o| |
| | | |^| | |
| | |XXXXX| |
|_|_|_|_|_|_|
Celui que tu préfères. Il peut même être différent pour différents nombres supérieurs à 31.
Le code le plus court en octets gagne.
la source
x^n>30
astuce m'avait confus au début, mais quand j'ai compris ce qui se passait, je l'ai volé sans vergogne pour améliorer ma réponse. En guise de compensation, je vous donne quand même une note positive.아희 (Aheui) , 914 octets
Essayez-le ici! (veuillez copier et coller le code manuellement)
Aheui n'est peut-être pas pour le golf, mais c'est quand même amusant. :)
Les sorties:
N = 10
N = 31
N = 40
la source
Gelée , 73 octets
Programme complet
TryItOnline!
Peut - être possible de golf cela avec l'aide de rebond,
ŒḄ
.Comment?
la source
Rubis, 137 octets
Points de face laissés sur et après le 31.
Non testé dans le programme de test
la source
Fusain , 71 octets
Remarque : Ce code ne fonctionne pas dans la validation la plus récente à la date de publication, car l'indexation des chaînes est rompue. Il devrait cependant fonctionner dans cette version à partir du 25 octobre. Il fonctionne également avec succès sur la version actuellement sur Try It Online .
Explication
Le charbon de bois est un langage conçu pour l'art ASCII. La sortie est placée sur une toile, qui est imprimée à la fin du programme.
Installer
Obtenez des entrées et calculez les caractères du visage:
Dessine la citrouille
Après cette boucle, nous avons
Prochain:
Résultat:
Dessine le visage
Nous allons dessiner le visage en regardant vers la droite et le changer plus tard si nécessaire.
Résultat (pour la saisie
31
):Réfléchissez si c'est Halloween:
Sortie finale:
la source
Pyth - 84 octets
Compression manuelle de la base.
Suite de tests .
la source
PHP,
178176171 octetspourrait économiser 5 octets avec des sauts de ligne physiques. Courez avec
-r
.la source
V , 97 octets
Essayez-le en ligne!
Je suis déçu du temps que cela s'est passé. Il est plus compliqué que d'habitude car V peut à peine gérer les nombres, beaucoup d'octets proviennent de la création de conditions hacky. Je publierais une explication détaillée, mais il a fallu beaucoup de temps pour arriver, donc je pourrais y revenir plus tard. Voici un hexdump:
Pour info, cela fonctionnera très lentement. Cela prendra environ 10 secondes. Je sais pourquoi cela se produit et je cherche des correctifs.
la source
Pyth, 76 octets
Essayez-le en ligne.
N'utilise aucune compression. (J'ai essayé d'en utiliser une version de la chaîne de données de visage, mais cela a fini par la même longueur.)
la source
Java 7, 237 octets
Code non testé et testé:
Essayez-le ici.
Sortie:
la source
C ++,
222204194 octets-18 octets grâce à Kevin Cruijssen et -10 octets pour la partie supérieure explicite
Non golfé
la source
&&
to&
et||
le|
? En résumé,using S=std::string;S f(int n){char L[80],o=2*(n>30),i=-1;while(i++<80)L[i]=47<i&i<53?88:i%2?'|':i==20|i==24|i==36?n<32|i>35?94:'o':i-o%14?i-o<55?32:95:10;S t(5,95);return' '+t+'I'+t+' '+S(L+o,L+70+o);}
( 202 octets ) compile-t-il et s'exécute-t-il?i-o
est obligatoire, donc 204 octets,PHP, 222 octets
Sortie
la source
Groovy Script,
273265216202198 octetsVersion non golfée
Essayez-le ici
modifier
Comme l'a mentionné Titus, je peux économiser de la taille au
i < 32
lieu dei in 1..31
Modifier 2
Suppression de tous les espaces possibles autour des opérateurs ... Oublié de le faire au début
Modifier 3
Réécriture des conditions ternaires pour utiliser la variable enregistrée, remplacée
;
par des sauts de ligne, suppression de la définition explicite de variableModifier 4
Comme Otávio l'a mentionné, je peux économiser encore 4 octets si je passe de
| |${j ? ' |^| | ' : ' | |^| '}| |
à| | |${j ? '^| ' : ' |^'}| | |
la source
i < 32
lieu dei in 1..31
?;
que les deux ont 1 caractère, je suggère de préférer le saut de ligne pour plus de lisibilité. Et abandonnez les bonnes habitudes de codage, débarrassez-vous de celles-ciint
etdef
.print
le 1er ternaire, enregistrez la condition dans une variable as(j=i>30)
, puis dans les 2 suivants, utilisez justej
au lieu de répéter la mêmei>30
condition.JavaScript (ES6),
163125 octetsVolant sans vergogne l'astuce de @ ETHproduction pour positionner le visage. Encodage:
0
est un œil,1
et2
sont des dents,3
est le côté gauche,4
est le côté droit et5
est l'arête du nez.la source
Rubis, 168 octets
Probablement loin d'être optimal. Nécessite les bibliothèques
base64
etzlib
.Appelez en tant que fonction lambda.
la source
Python 2, 167 octets
la source
C # 6,
223215 octetsint d=int.Parse(args[0]);var x="| | |\n| |";var s=d<31?" |^| |^| |\n| | | |^"+x+" |VvVvV":(d==31?"^| |^"+x+" |^| "+x+"VvVvV| ":"o| |o"+x+" |^| "+x+"XXXXX| ");Write(" _____I_____\n| | | | "+x+s+"| |\n|_|_|_|_|_|_|");
Programme entier non golfé:
la source
Func<int, string>
qui est généralement le moyen le plus court de le faire.Write
lieu de déclarer et de définirs
.\r\n
au lieu de juste\n
?