C'est Noël tout le monde, et voici un défi de code-golf à célébrer. Vous devez créer un programme pour imprimer un cadeau. Plus précisément, les mots "Joyeux Noël". MAIS, il ya un problème: ce programme ne doit fonctionner que s’il s’agit du 25 décembre. Si le code est exécuté un autre jour, le programme doit se bloquer.
C'est Code-Golf, donc la réponse avec le moins d'octets l'emporte.
Joyeux Noël!
Réponses:
Pyke, 21 octets
Essayez-le ici!
Ou 18 octets non compétitif.
Exactement la même chose sauf pour cette section:
Essayez-le ici!
la source
30 * (10+1)
= 330 pas 325JavaScript,
555346 octetsRemarque: ceci n’a été testé que dans Google Chrome, le programme peut se comporter différemment d’un navigateur à l’autre (ou d’un appareil à l’autre).
2 octets sauvés grâce à @ ConorO'Brien
7 octets sauvegardés grâce à @ETHProductions
Quitte avec
Uncaught ReferenceError: a is not defined
si la date n'est pasDec 25
. Je ne sais pas vraiment si cela compte comme un crashla source
.slice(6,10)=="c 25"
vousc
(Oct
se rapproche mais ne satisfait toujours pas l'expression régulière). Merci pour le conseil!Date()
dépend complètement de la mise en œuvre. Par exemple, je pense que cela varie avec la langue et l'emplacement de la machine.Python 3,
6663 octetsGrâce aux idées de réponses JavaScript / ES ici, j'ai réussi à serrer quelques octets. Indexer un dictionnaire - des clés inexistantes vont générer un
KeyError
. Le code suivant fonctionne dans le fuseau horaire localLe format de sortie pour
ctime
n'est pas dépendant de la localisation - le format est toujours ~'Sun Dec 25 19:23:05 2016'
. Comme l'abréviation de 3 lettres prend fin uniquement en décembrec
, son utilisation est sûre'c 25'in time.ctime()
ici.La version précédente:
Cela fonctionne dans le fuseau horaire UTC. Pour le fuseau horaire local, il faut
s/gm/local
3 octets supplémentaires. Pour Python 2, on peut supprimer les parenthèses deprint
65 octets.La construction jette
KeyError
sur d'autres dates:la source
import time;print{'2512':'Merry Christmas'}[time.strftime("%d%m")]
libellé Python 2, il reste 66 octets et plante avec une KeyError à des dates autres que le 25 décembre.1:3
, j'ai copié mon code de test par accidentgmtime()
idée pour ma réponse. J'espère que cela ne vous dérange pas :-)PHP,
3938 octets, pas en compétition (ne plante pas)ou
ou
la source
date(Lz)%1001-358
? : D""
dans le premier code ce qui vous permet d'économiser 2 octets. S'il n'a pas été pendant des années bissextiles putain, vous pourriez économiser 2 Byte plus en remplaçantmd
parz
et1225
par le nombre de jour de l'année du 25 Décembre.eval((date(md)^TQZZ).'"Merry Christmas";');
(43 bytes)1
. Cela afficherait le résultat du calcul. et0104-1225
est 1121.Python 2 ,
686765 octets-1 grâce à @muddyfish
Merci à @AnttiHaapala pour l'idée d'avoir sauvé un autre couple.
Essayez-le en ligne!
Lance une IndexError sinon le 25 décembre
Version non concurrente pour 59 octets car elle ne fonctionne que pour les années non bissextiles (utilise le jour de l'année qui est de 360 cette année mais 361 les années bissextiles)
la source
gmtime()
. Je dois admettre que je souhaiterais cependant pouvoir faire plus avec l'idée du jour de l'année.R,
52 6158 octetsSi la date actuelle n'est pas le 25 décembre, une erreur est renvoyée car aucun troisième argument n'est fourni à
if
.Edit: Correction d'une erreur idiote
la source
Ma première fois ici ... Commencé avec la meilleure langue pour ce travail:
Java,
200188octets (merci à @Daniel Gray), 186 octets supprimant "ln" de l'impression.Essayez-le ici!
la source
Calendar
pour*
et sauvegarder quelques octets. Vous pouvez également raccourcir le nom duargs
paramètre dans la méthode principale, je pense ...MATL ,
3433 octetsCela fonctionne dans la version actuelle (19.7.0) du langage. Pour provoquer l'erreur, le code suivant exploite le fait que le logarithme d'une chaîne génère une erreur (celle-ci peut changer dans les versions futures).
Essayez-le en ligne!
Explication
source
QBIC , 48 octets
Explication:
Cela suppose la
MM-DD
notation de date américaine . Ce serait plus court si je réalisais enfin une fonction Substring dans QBIC.source
05AB1E ,
3221 octetsSauvegardé 11 octets grâce à la compression de chaînes d'Adnan :).
Explication
Essayez-le en ligne!
J'ai fait ce qui me venait à l'esprit en premier, alors il pourrait y avoir de meilleures approches pour celui-ci. Mais PPCG mérite également un joyeux Noël en 05AB1E;).
source
x
est court pour dupliquer et doubler :).C # / CS Script
10610099 octetsSolution de 99 octets
Essayez-le ici!
Solution de 100 octets (préférez celle-ci ... un peu différente)
A expliqué:
DateTime.Now.AddDays(7).DayOfYear==1
est un octet plus court qu'unDateTime.Now.ToString("ddMM")=="2512"
mais un octet plus long queDateTime.Now.ToString("dM")=="2512"
source
$"{DateTime.Now:dM}"=="2512"
.dM
est ambigu, mais pas pour "2512".$"{DateTime.Now:dM}"=="2512"?"Merry Christmas":1/1-1+""
55 octets) =)int i
et pas juste1/0
?$"{DateTime.Now:dM}"=="2512"?"Merry Christmas":"".Remove(1)
(59 bytes)Script C # / CS, 96 octets, principalement plagié d'Erresen
Supprime la
int i
déclaration en faveur du codage en dur de la division. Je laisserais cela comme un commentaire mais je n’ai pas la réputation.source
utilitaires bash + Unix,
514947 octets* Merci à @ KenY-N pour avoir signalé que les guillemets de l'écho peuvent être supprimés et à @IporSircer pour avoir réduit la taille de la condition de 2 octets.
source
bash: ${}: bad substitution
erreur. Vous pouvez aussi supprimer les citations de Joyeux Noël pour économiser deux octets. En outre,[ `date +%m%d` = 1225 ]&&echo Merry Christmas
fonctionne pour moi, égal à mes 45 octets .${}
par!-
pour me battre par un octet. Je vous vote comme vous gagnez.Groovy, 57 octets
Accidents sur des dates autres que 25.12. avec
groovy.lang.MissingPropertyException
parce queb
n'est pas défini.la source
Empilés , 42 octets
Essayez-le ici!
Cela crée un tableau à un seul élément contenant à savoir
'Merry Christmas!'
. Après, il met la date dans une chaîne avec le mois suivi du jour. Il vérifie l'égalité avec'1225'
(Christmas), l'inverse avec¬
, puis obtient ce membre du tableau précédent. Si ce n'est pas Noël, cela provoquera une erreur d'index. Sinon, ça imprimeMerry Christmas
. (Modifiez la date dans la chaîne pour voir comment cela fonctionne les autres jours.)la source
Lot, 66 octets
Le retour à la ligne final est significatif car il entraîne l'
if
échec de l'analyse syntaxique de l' instruction. Vous devrez peut-être modifier la vérification de la date pour qu'elle corresponde au format de date local.la source
Python 2,
69 7775 ou7270 octetsSi cela n'a pas d'importance s'il se termine par une erreur à l'approche de Noël, alors:
MODIFIER:
Merci @ Flp.Tkc pour avoir signalé que j'avais besoin d'une erreur
-2 octets de @Max pour signaler la suppression de deux points de la fonction strftime
la source
CJam, 28 ans
Essayez-le en ligne
Explication:
la source
C # .NET,
180172171 octetsÉconomisé 8 octets grâce à Kritixi Lithos
Sauvegardé 1 octet grâce à Kritixi Lithos, encore une fois;)
Variante non-golfée alternative:
la source
NotChristmasException
n'est que dans la variante non-golfée.if(d.Day==25&&d.Month>11)Console.Write(...);else throw new Exception()
note combinée si les déclarations et la suppression des accolades autour duConsole.Write
et remplacerreturn
parelse
. Changez aussi,var d=DateTime.Now
vous pouvez vous débarrasser des exceptions avec peut-êtreargs[-1];
après avoir renommé les argumentsa
ainsia[-1];
(ceci n'est pas identique à la division par des zéros utilisés ailleurs)Mathematica, 46 octets
la source
Now
sauve 2 octets de plusToday
Quit[]
ou1/0
devrait suffire.Common Lisp, 140
Se bloque avec une fonction non définie si la date n'est pas correcte.
la source
awk, 29 octets (+ longueur ("Joyeux Noël"))
Le lancer:
La salutation de saison est canalisée à
awk
.strftime
retourne mois + jour (par exemple1226
) et s'il est1225
$0
enregistré , l' enregistrement est sorti. Le résultat de la comparaison1225==1226
est placé dansv
var qui est utilisé pour diviser 1 si la comparaison de date échoue.la source
Haskell, 116
Crashes avec "motifs non exhaustifs dans la fonction f" si ce n'est pas Noël.
Malheureusement, aucune fonction ne vous permet d’obtenir immédiatement l’heure dans un format utile. La plupart de ces opérations consistent donc à convertir les formats de date.
la source
C #,
122104 octets18 octets sauvés, grâce à @raznagul
Il ajoute 7 jours au jour actuel et vérifie si c'est le premier jour de l'année. Si oui, il affiche "Joyeux Noël", sinon il se divise par zéro.
la source
return
n'est pas nécessaire. Utilisezi
au lieu de()
.Ruby, 69 octets
Fonctionne en 2016. Ne fait pas la différence entre les années normales et les années bissextiles; il peut être nécessaire d'ajuster les années non bissextiles.
la source
ForceLang, 180 octets
(N'oubliez pas que cela
datetime.toDateString
dépend des paramètres régionaux, donc cela peut ne pas fonctionner en fonction de vos paramètres régionaux)la source
C #, 90 octets
Lève une exception IndexOutOfRangeException si ce n'est pas Noël.
Essayez-le ici!
la source
ligne de commande bash,
454849 48 octetsSemblable à celui de Mitchell Spector , mais utiliser
grep
en mode silencieux pour vérifier une correspondance, puis&&
s'assurera qu'il n'imprime qu'en cas de succès, et||
qu'il provoque l'historique avec!-
, ce qui me donne ceci:Et cela arrête l'exécution comme le
!- ; echo foo
démontre. Labash
documentation indique que cela!-n
fait référence à la commande en cours moinsn
, elle est donc peut-être interprétée comme!-0
donnant un message d'erreur identique (et non localisé).la source
;
au lieu de||
.