ChallengeR #8

Lors d’un épisode précédent, vous deviez coder une fonction month.end qui, comme son nom le suggère, renvoie le dernier jour du mois de toutes les dates passées en argument tout en utilisant le moins de caractères possibles — sachant que (i) je ne compte que le corps de la fonction et (ii) les espaces, indentations et retours à la ligne ne sont pas considérés comme des caractères).

Et les vainqueurs de ce ChallengeR sont @AlekVladNevski, @navarre_julien et @_pvictorr avec 45 caractères ! @AlekVladNevski nous propose :

month.end <- function(x){
 d=as.Date
 c=cut
 m="month"
 d(c(d(c(x,m))+32,m))-1
}

Avec une méthode similaire, @navarre_julien :

month.end <- function(x) {
  f = function(x) as.Date(cut(x, "mo"))
  f(f(x) + 32) - 1
}

Enfin, @_pvictorr utilise une autre approche qui présente l'avantage indéniable d'être significativement plus rapide :

month.end <- function(x) {
 x = as.POSIXlt(x)
 x$mon = x$mo + 1
 x$mday = 1
 as.Date(x) - 1
}

Bravo à tous les 3 !

Challenger #8

Dans la veine du casse-tête proposé par @_ColinFay il y a quelques jours, je vous propose de trouver un moyen de faire en sorte que :

> x == 0
[1] TRUE
> x + 1 == 2
[1] TRUE
> x / 2 == 1
[1] TRUE
> x
[1] 3
> 3 - x
[1] 3
>

Et vous devez faire ça sans utiliser d’autres fonctions que celles fournies dans les packages de base de R. Vous avez jusqu’à vendredi prochain (le 09/02).

Votre @username sur Twitter :


Coller votre code ici :


Validez pour enregistrer votre réponse.

Aucun commentaire:

Enregistrer un commentaire

ChallengeR #8 - Solutions

Votre mission consistait donc à trouver un moyen de faire en sorte que : > x == 0 [1] TRUE > x + 1 == 2 [1] TRUE > x / 2 == 1 [1...