Mini projet pour experimenter les "Dojos" du PSUG (Paris Scala User Group).
Les objectifs sont de s'amuser, d'apprendre Scala et d'échanger autour de petits problèmes.
Il n'y a rien à gagner, juste le plaisir de chercher et aucune obligation de jouer.
Pour chaque problème, il faut essayer de trouver (tout ou une partie) :
-
une implémentation de la méthode pour satisfaire l'exemple et le cas général.
- Elle peut être élégante, optimisée (mem, cpu), surprenant, original, ...
- Elle peut utiliser une fonction existante dans une lib (connaitre les lib et framework est important aussi)
- Réflechissez avant de répondre et essayer de ne poster qu'une solution (dans la vie comme dans le code, on fait des choix)
-
un test (unitaire, fonctionnel, charge/bench) pour les implementations de solution
- Il peut utiliser des framework de test/bench existant (eg scalacheck, specs2, scalatest, junit)
- Il peut être envoyer dès l'annonce du problème et sans solution.
-
Les Problèmes sont "publiés" tous les jours du lundi au vendredi sur la mailing-list du PSUG (Paris Scala User Group) (à l'heure du déjeuner +/-).
-
Il y a 1 à 3 problèmes par jour
-
Vous pouvez proposer et discuter des solutions en répondant sur le
Thread
du message avec le problème. -
Tous les messages du dojo ont un sujet de la forme "[Dojo] P (<*>) : " donc assez facile à filtrer sur vos clients email.
- xxx : numéro du problème
-
- : "difficulté" du problème
- label : libellé du problème (en anglais ou français)
Les 99 premiers problèmes proviennent de http://aperiodic.net/phil/scala/s-99/
- un peu flou ;-)
- "garder" les règles
- fournir un projet de base pour tester du code pour les Dojos (avec toutes les libs).
- éventuellement, stocker certaines solutions
- le projet est une aide, aucune obligation de l'utiliser, ou d'y placer son code source
Pour le moment, il s'agit d'un "bac à sable". Donc pas besoin de configuration maven, ou sbt (mais les contributions sont acceptées). Par contre il faut avoir installer Scala et avoir "scala" dans le PATH. L'interpreteur (REPL) etant le principal outil.
La version de scala utilisée est 2.9.0-1.
Toutes les contributions sont les bien-venues, donc pour ceux qui connaissent git/github (fork + pull-request), pour les autres patch ou fichiers par email (sur la ml) ou ticket.
export PATH=$SCALA_HOME/bin:$PATH
cd psug
# git clone git://github.com/psug/dojos.git
# si vous n'avez pas 'git', vous pouvez utiliser le bouton "download" pour avoir une archive du projet
cd dojos
#scala -Djava.ext.dirs=lib/scala_2.9.0-1
./repl
scala> :load src/p001.scala
Loading src/p001.scala...
defined module p001
import p001._
http://groups.google.com/group/paris-scala-user-group/browse_thread/thread/eac9319f94b244a8
P01 (*) Find the last element of a list.
Example:
scala> last(List(1, 1, 2, 3, 5, 8))
res0: Int = 8
scala> BenjaminLerman.last(List(1, 1, 2, 3, 5, 8))
res0: Option[Int] = Some(8)
scala> ...