Joyeux anniversaire à moi!
Écrivez un programme qui s'imprime Happy birthday to me!
le jour de son anniversaire.
- L'anniversaire du programme est la date de création, de dernière modification ou de compilation du programme (que vous choisissez) et ne doit pas être codé en dur.
- La date que vous utilisez comme anniversaire ne doit en aucun cas être affectée par l'invocation ou l'exécution du programme. Vous ne pouvez pas modifier votre anniversaire.
- Pour un crédit supplémentaire (-15% d'octets), imprimez
Happy birthday to you!
le jour de votre anniversaire (codé en dur), s'il ne coïncide pas avec celui du programme. Ou utilisez l'anniversaire d'une célébrité et obtenez -14%. - Il ne doit imprimer que cela et ne rien imprimer d'autre jour.
- Comptez les octets, en UTF-8.
- Utilisez le calendrier grégorien.
Bonne chance et joyeux anniversaire (aux programmes nouveau-nés).
PS
Suite au commentaire d'Izkata, si vous imprimez Happy birthday to Mel
le jour de l'anniversaire de Mel Kaye , vous obtenez 20% de réduction. Mais vous devez fournir une source crédible que c'est cette date.
Réponses:
PHP
7775746560Un grand merci aux superbes suggestions de Tim Seguine :
PHP sournois:
46424140En utilisant l'idée de Phil H et encore la suggestion de Tim Seguine :
la source
''
contour desdm
chaînes. Il a généré un avertissement, mais je pense qu'il est envoyé à l'erreur standard si le rapport d'erreurs est activé.<?date(dm,stat(__FILE__)[9])-date(dm)&&die?>Happy birthday to me!
Bash (sournois): 36
Selon les règles: "heure de création, modification ou compilation du programme". Je choisis le temps de modification, et une auto-modification perpétuelle. [HT @ace pour 1 caractère]
Perl (également sournois): 29
Celui-ci est sans doute moins sournois que le premier; Les programmes Perl sont toujours compilés avant d'être exécutés, ce que tout le monde ne sait pas - voyez, il y a une tournure éducative sur la sournoise. Voici donc la date de compilation que j'utilise.
- Modifier pour le changement de règle -
Cela a été écrit avant qu'il n'y ait de règle pour changer votre anniversaire. Je pense que le Perl est toujours debout; tous les programmes Perl sont compilés avant d'être exécutés. Je vais laisser la réponse ici pour des raisons éducatives!
la source
!
avec\!
et supprimer les guillemets pour enregistrer 1 caractèrebash - 65
Merci à ugoren , ace et nyuszika7h pour leur aide.
la source
!
avec\!
vous n'avez donc pas besoin des guillemets et économisez 1 caractère.!
dans des shells interactifs, pas dans des scripts.[
et]
au lieu de[[
et]]
.C # 198.05 (233 - 15%)
Formaté:
191 (Pas de bonus)
181,05 (213 - 15%)
Avec quelques instructions supplémentaires (vous devez le compiler
b.exe
et l'exécuter à partir du répertoire dans lequel l'exécutable se trouve), je peux le ramener à ceci:171 (Pas de bonus)
Mêmes instructions que ci-dessus, cette fois seulement en imprimant un message pour son anniversaire (donc pas de bonus de -15%).
la source
,b="1202"==t
après avoir obtenu la chaîne de date et en l'utilisant à la place.,b="1202"==t
mais la==t
partie n'est pas possible car cela équivaut à un booléen et l'autre var est une chaîne. Vous ne pouvez pas (c'est-à-dire AFAIK) utiliser deux types différents dans une seule déclaration "var".CreationTime.Date == DateTime.Today
.Java - 275 - 15% = 233,75 avec bonus / 237 sans bonus
Avec bonus:
Sans bonus:
Je suis né le 23 avril.
la source
\n
) n'est pas obligatoire AFAIK qui vous fait économiser encore 4 octets ;-)Je suis assez fier de cette petite astuce pour économiser quelques octets sur le message. J'espère que cela sera inclus dans d'autres réponses. J'étais le premier à y penser!
Python
105 caractères, pas de crédit supplémentaire. Enregistrez le fichier sous "joyeux anniversaire" et lancez. Fonctionne uniquement en GMT et "anniversaire" est défini comme la date de votre naissance, pas son anniversaire (également appelé "anniversaire").
Pour que cela fonctionne, enregistrez-le comme "joyeux anniversaire pour moi" et exécutez
python "happy birthday to me"
Remarque: bien sûr, le tout sauf un petit bootstrap peut être dans le nom de fichier, ce qui réduit tout code arbitrairement grand au bootstrap. Normalement, je considérerais cette "tricherie". Cependant, "joyeux anniversaire" n'est pas un nom de fichier déraisonnable - il décrit ce que fait le programme, bien mieux que certains programmes (par exemple "python"), donc dans ce cas, je vais le permettre :)
la source
eval(sys.argv[0])
?However, "happy birthday to me" is not an unreasonable filename - it describes what the program does, much better than some programs (e.g. "python"), so in this case I'm going to allow it
Matlab: 66
Le nom du fichier doit être 'fm'
la source
strncmp(x, y, 5)
compare les dates comme28-12-2013
les 15 premiers caractères (28-12
par exemple le 28 décembre). Cela fonctionne-t-il également lorsque les paramètres régionaux de l'utilisateur sontyyyy/mm/dd
par exemple? Matlab est-il par défautdd-mm-yyyy
toujours? (Juste curieux). Modifier Nevermind: l'a trouvé! . Il semble que ce soit le cas. Cela n'aurait pas d'importance de toute façon pourmm/dd/yyyy
oudd-mm-yyyy
puisque l'opérande gauche et droite utiliseraient le même format de toute façon et les 5 caractères les plus à gauche correspondraient de toute façon; tant que l'année ne mène jamais.t
? Ça nedir('f.m').date
marche pas ?t
est nécessaire pour fairedir
renvoyer les attributs du fichier (sinon ce serait juste retourner tous les fichiers du répertoire qui correspondent'f.m'
). En outre,t
est nécessaire pour accéder audate
terrain.GNU COBOL avec -free, 204
J'enfreins les règles concernant la célébrité, donc pas de bonus là-bas ...
Le texte produit est saisi par l'utilisateur (demandé lors de l'exécution). Si ce n'est pas bon à aller, puis la ligne définissant les
C
besoins à supprimer, comme le faitACCEPT C
, etDISPLAY C
doit devenirDISPLAY "HAPPY BIRTHDAY TO ME!"
, pour un sept caractères supplémentaires.WHEN-COMPILED
est un registre spécial contenant la date / heure de compilation qui est disponible pour le programme (toujours pratique, vous pouvez savoir que vous avez la bonne version). Il est tronqué dans leMOVE
car le reste n'est pas nécessaire.DATE
est la date actuelle - celle-ci est yymmdd.Dans
/
la définition de A est un symbole d'édition d'insertion, car la date de compilation contient des barres obliques. Un caractère supplémentaire, mais facilite la comparaison.Célébrité = Grace Hopper
la source
Lot - 37 octets
Voler la méthode utilisée par l'une des réponses Bash ..
Autre méthode - 145 octets
la source
Ruby, 69 caractères / octets
31536000
est le nombre de secondes dans une année et86400
le nombre de secondes dans une journée.la source
Javascript
Node.js, 156 octets
Utilise l'heure de modification du fichier.
la source
Powershell - 105 octets
Non golfé:
Le bonus n'en vaut pas la peine, je ne peux en obtenir que 117,5.
la source
Powershell - 127
Pour le bonus de 15% - 151 octets, moins 15% = 128,4
la source
write
commande - avec juste"happy birthday to me!"
cela l'imprimera.Ruby -
8010387 bytesRuby -
123115135121 à 15% =104.5597.75114.75102.85 PointsCela pourrait être un peu plus long ou plus court selon l'endroit où votre anniversaire tombe dans l'année et la façon la plus courte de le représenter. Pour le mien, c'est
36e5
(secondes depuis l'époque; selon le fuseau horaire).Mel Gibson compte-t-il? Voici un octet de 138 octets - 35% de bonus = 89,7 points qui se célèbre, moi et Mel!
la source
PureBasic
Sans Bonus - 142
Avec Bonus - 218 - 15% = 185,3
la source
TI-BASIC, 68 octets
Rappelez - vous, ces jetons sont un octet:
If , Ans, →, Disp
.getDate
est de deux octets. Tous les autres symboles à un caractère ont un octet.la source
J 79
Version bonus 120 - 15% = 102
Est-ce que j'obtiens un crédit supplémentaire pour également imprimer les deux lorsque les deux fêtent leur anniversaire?
Explication (de droite à gauche):
Le verbe central du train
La dent gauche pour le train central:
la source
Java - 196
Cela diffère de l'autre soumission Java en utilisant des chaînes, en supprimant 41 caractères dans le processus. Il utilise String.format ("% tj") pour formater un java.util.Date ou une chaîne de jour de l'année, puis compare ces deux chaînes.
Formaté:
la source
C # 191 sans bonus
formaté:
la source
var x="MMdd";
+ ToString (x
) + ToString (x
) = 15 tandis que ToString ("MMdd"
); + ToString ("MMdd"
); ne coûte que 12.WriteLine()
peut donc être raccourcieWrite()
. Avec ce qui précède et ce changement en place, vous avez exactement la même solution que moi ;-)JavaScript (node.js) - 100 octets
la source
vb.net ~ 161c
Cela imprimera le message de célébration à tous ceux dont c'est l'anniversaire.
Alan => Alan Kaye
Score: 253c (-33c vb.net min) = 220 - 15% (ma prime d'anniversaire) = 187c - 14% (anniversaire de célébrité) = 160,82 ~ 161c ou 220c - 29% = 156,2 ~ 157c
la source
Powershell, 82 octets
où
est la combinaison de raccourcis et d' alias pour l'expression:
cet équivalent d'une forme canonique:
Powershell, 119 octets - 14% = 102,34 points
Au 3 janvier , le script s'affiche
Happy birthday to Prof!
. Si ce script est enregistré le 3 janvier, deux salutations seront affichées.la source
C # - 63 octets
Je choisis le temps de compilation . Puisque le code C # se compile en MSIL qui lors de l' exécution est compilé en code exécutable par le compilateur JIT , ce programme remplit les conditions.
EDIT-- Réponse potentiellement invalide comme indiqué dans les commentaires.
la source