CoddityTeam / movaicode

Concours mensuel du Pire Développeur de France
123 stars 10 forks source link

Version multi-threaded en scala #24

Closed To-om closed 2 years ago

To-om commented 4 years ago

Pour le tester : https://scastie.scala-lang.org/FkBy1tSYTFGgvwunkQophA

import scala.concurrent.ExecutionContext.Implicits.global
import scala.concurrent.duration.Duration
import scala.concurrent.{Await, Future}

/*
 * Utilise le principe de la division de travail en le répartissant sur l'ensemble des CPU.
 * Le nombre de threads dépends du nombre de cores disponibles.
 */
def inverseAync(input: String): Future[String] = {
  // Si la chaine contient moins de 2 caractères, on ne fait rien
  if (input.length < 2)
    Future.successful(input)
  else {
    // Découpe la chaine en 2 parties égales
    val (gauche, droite) = input.splitAt(input.length / 2)
    // Inverse chaque partie en utilisant un nouveau thread
    for {
      gaucheInversé <- inverseAync(gauche)
      droiteInversé <- inverseAync(droite)
    } yield droiteInversé + gaucheInversé // Assemble les parties inversées
  }
}

def inverse(input: String): String = 
  // Lance le processus et attend le résultat
  Await.result(inverseAync(input), Duration.Inf)

println(inverse("Mon super code"))
nadouani commented 3 years ago

Et en "bocode" ça s'écrit comment? :D

louismarslen commented 3 years ago

Cher @To-om, j'ai le plaisir et l'honneur de vous annoncer que vous n'avez PAS gagné le concours MOVAI CODE. Ce qui fait de vous un EKSSELAN Codeur.

SPOILER : j'espère qu'on aura le plaisir de recevoir votre participation à l'episode 2 du MOVAI CODE (stay tuned).

Bravo toutefois pour votre belle contribution 😊

louismarslen commented 2 years ago

Je fais un peu de ménage dans les issues -> d'ailleurs go participer à l'édition 5