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] TRUE
> x
[1] 3
> 3 - x
[1] 3
>

Et vous deviez faire ça sans utiliser d’autres fonctions que celles fournies dans les packages de base de R.

Il y a deux façons de faire ça. La première consiste à modifier le comportement des opérateurs utilisés ci-dessus ; c'est ce qu'on proposé @sassien et @navarre_julien avec, respectivement :

'==' <- function(a,b) {TRUE}
'+' <- function(a,b) {a/3+b}
'/' <- function(a,b) {(a-1)/b}
'-' <- function(a,b) {a}
x <- 3

Ou, plus minimaliste :

x <- 3
'==' <- function(x, y) T
'-' <- function(x, y) y

L'autre, un brin plus ésotérique et proposée par @AlekVladNevski, consiste à faire varier la valeur de x à chaque évaluation avec makeActiveBinding (c'est la solution du quiz de @_ColinFay) :

f = function(){i <<- (i+1)%%4; return(i);}
makeActiveBinding(sym = "x", env = .GlobalEnv, fun = f)
i <- -1

Notez enfin qu'il y a une autre méthode pour faire presque la même chose en utilisant addTaskCallback :

foo <- function(total) {
 i <- 0
 function(expr, value, ok, visible) {
  i <<- i + 1
  x <<- (x + 1) %% 4
  i < total
 }
}

x <- -1
n <- addTaskCallback(foo(10))

Pour Challenger #9, vous voudrez bien me laisser un peu de temps. J’ai du pain sur la planche.

1 commentaire:

  1. Salut les gars, comment j'ai retrouvé mon ex-mari, Fast, Dr.Padman a vraiment travaillé sur le lancer des sorts d'amour!
    Mon mari m'a quitté pour une autre femme il y a trois mois et depuis lors, ma vie a été remplie de douleurs, de chagrin et de cœur brisé, car il était mon premier amour avec lequel j'ai passé toute ma vie. Un de mes amis m'a dit avoir vu des témoignages d'un lanceur de sorts appelé Dr.Padman qu'il pourrait ramener son amant dans quelques jours. Je ris et dis que je ne m'intéressais pas mais à cause de l'amour que mon ami m'avait pour moi, elle a consulté le grand prêtre (padmanlovespell@yahoo.com) en mon nom et à ma plus grande surprise après 11 heures plus tard, mon mari m'a appelé pour la première fois après trois mois qu'il me manque et qu'il est désolé pour tout ce qu'il a m'a fait traverser.Il est revenu à moi et maintenant nous sommes heureux ensemble. Je ne peux toujours pas y croire, parce que c’est très incroyable. Merci Dr.Padman d’avoir ramené mon amant et également à mon cher ami qui a intercédé en ma faveur, pour tous ceux qui pourraient avoir besoin de l’aide de ce grand docteur, voici l’adresse email: (padmanlovespell@yahoo.com)

    RépondreSupprimer

Cheval de fer, acte II

La première partie est ici. Quand John Kennedy s’y était installé au tout début des années 1790, Manchester n’était encore qu’un gros bour...