Last active
July 2, 2022 04:26
-
-
Save oripwk/fd0b6efb1ffb8a2c4a8805b8422a73a2 to your computer and use it in GitHub Desktop.
Françaises conjugaisons
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import scala.io.StdIn | |
import scala.util.Random | |
object Main { | |
def main(args: Array[String]): Unit = { | |
val product: List[(String, String, String)] = for { | |
verb <- verbs.toList | |
person <- persons | |
time <- times | |
} yield (verb, person, time) | |
val rand = new Random() | |
var wrong = 0 | |
var total = 0 | |
sys.addShutdownHook { | |
println(s"correct: ${total - wrong} wrong: $wrong") | |
} | |
while (true) { | |
val i = rand.nextInt(product.size) | |
val (verb, person, time) = product(i) | |
println(s"$person $verb $time") | |
val answer = StdIn.readLine() | |
total += 1 | |
check(person, time, verb, answer) map { correct => | |
wrong += 1 | |
println(s"WRONG! $correct") | |
} getOrElse println("CORRECT!") | |
println("---") | |
} | |
} | |
def check(person: String, time: String, verb: String, answer: String): Option[String] = { | |
val conj = map(verb)(person)(time) | |
val expected = s"$person $conj" | |
if (expected == answer) None | |
else Some(expected) | |
} | |
val map = Map( | |
"parler" -> Map( | |
"je"-> Map( | |
"present" -> "parle", | |
"imparfait" -> "parlais", | |
"futur" -> "parlerai", | |
"conditionnel" -> "parlerais" | |
), | |
"tu"-> Map( | |
"present" -> "parles", | |
"imparfait" -> "parlais", | |
"futur" -> "parleras", | |
"conditionnel" -> "parlerais" | |
), | |
"il"-> Map( | |
"present" -> "parle", | |
"imparfait" -> "parlait", | |
"futur" -> "parlera", | |
"conditionnel" -> "parlerait" | |
), | |
"elle"-> Map( | |
"present" -> "parle", | |
"imparfait" -> "parlait", | |
"futur" -> "parlera", | |
"conditionnel" -> "parlerait" | |
), | |
"on"-> Map( | |
"present" -> "parle", | |
"imparfait" -> "parlait", | |
"futur" -> "parlera", | |
"conditionnel" -> "parlerait" | |
), | |
"nous"-> Map( | |
"present" -> "parlons", | |
"imparfait" -> "parlions", | |
"futur" -> "parlerons", | |
"conditionnel" -> "parlerions" | |
), | |
"vous"-> Map( | |
"present" -> "parlez", | |
"imparfait" -> "parliez", | |
"futur" -> "parlerez", | |
"conditionnel" -> "parleriez" | |
), | |
"ils"-> Map( | |
"present" -> "parlent", | |
"imparfait" -> "parlaient", | |
"futur" -> "parleront", | |
"conditionnel" -> "parleraient" | |
), | |
"elles"-> Map( | |
"present" -> "parlent", | |
"imparfait" -> "parlaient", | |
"futur" -> "parleront", | |
"conditionnel" -> "parleraient" | |
) | |
), | |
"tuer" -> Map( | |
"je"-> Map( | |
"present" -> "tue", | |
"imparfait" -> "tuais", | |
"futur" -> "tuerai", | |
"conditionnel" -> "tuerais" | |
), | |
"tu"-> Map( | |
"present" -> "tues", | |
"imparfait" -> "tuais", | |
"futur" -> "tueras", | |
"conditionnel" -> "tuerais" | |
), | |
"il"-> Map( | |
"present" -> "tue", | |
"imparfait" -> "tuait", | |
"futur" -> "tuera", | |
"conditionnel" -> "tuerait" | |
), | |
"elle"-> Map( | |
"present" -> "tue", | |
"imparfait" -> "tuait", | |
"futur" -> "tuera", | |
"conditionnel" -> "tuerait" | |
), | |
"on"-> Map( | |
"present" -> "tue", | |
"imparfait" -> "tuait", | |
"futur" -> "tuera", | |
"conditionnel" -> "tuerait" | |
), | |
"nous"-> Map( | |
"present" -> "tuons", | |
"imparfait" -> "tuions", | |
"futur" -> "tuerons", | |
"conditionnel" -> "tuerions" | |
), | |
"vous"-> Map( | |
"present" -> "tuez", | |
"imparfait" -> "tuiez", | |
"futur" -> "tuerez", | |
"conditionnel" -> "tueriez" | |
), | |
"ils"-> Map( | |
"present" -> "tuent", | |
"imparfait" -> "tuaient", | |
"futur" -> "tueront", | |
"conditionnel" -> "tueraient" | |
), | |
"elles"-> Map( | |
"present" -> "tuent", | |
"imparfait" -> "tuaient", | |
"futur" -> "tueront", | |
"conditionnel" -> "tueraient" | |
) | |
), | |
"bleuir" -> Map( | |
"je"-> Map( | |
"present" -> "bleuis", | |
"imparfait" -> "bleuissais", | |
"futur" -> "bleuirai", | |
"conditionnel" -> "bleuirais" | |
), | |
"tu"-> Map( | |
"present" -> "bleuis", | |
"imparfait" -> "bleuissais", | |
"futur" -> "bleuiras", | |
"conditionnel" -> "bleuirais" | |
), | |
"il"-> Map( | |
"present" -> "bleuit", | |
"imparfait" -> "bleuissait", | |
"futur" -> "bleuira", | |
"conditionnel" -> "bleuirait" | |
), | |
"elle"-> Map( | |
"present" -> "bleuit", | |
"imparfait" -> "bleuissait", | |
"futur" -> "bleuira", | |
"conditionnel" -> "bleuirait" | |
), | |
"on"-> Map( | |
"present" -> "bleuit", | |
"imparfait" -> "bleuissait", | |
"futur" -> "bleuira", | |
"conditionnel" -> "bleuirait" | |
), | |
"nous"-> Map( | |
"present" -> "bleuissons", | |
"imparfait" -> "bleuissions", | |
"futur" -> "bleuirons", | |
"conditionnel" -> "bleuirions" | |
), | |
"vous"-> Map( | |
"present" -> "bleuissez", | |
"imparfait" -> "bleuissiez", | |
"futur" -> "bleuirez", | |
"conditionnel" -> "bleuiriez" | |
), | |
"ils"-> Map( | |
"present" -> "bleuissent", | |
"imparfait" -> "bleuissaient", | |
"futur" -> "bleuiront", | |
"conditionnel" -> "bleuiraient" | |
), | |
"elles"-> Map( | |
"present" -> "bleuissent", | |
"imparfait" -> "bleuissaient", | |
"futur" -> "bleuiront", | |
"conditionnel" -> "bleuiraient" | |
) | |
), | |
"rougir" -> Map( | |
"je"-> Map( | |
"present" -> "rougis", | |
"imparfait" -> "rougissais", | |
"futur" -> "rougirai", | |
"conditionnel" -> "rougirais" | |
), | |
"tu"-> Map( | |
"present" -> "rougis", | |
"imparfait" -> "rougissais", | |
"futur" -> "rougiras", | |
"conditionnel" -> "rougirais" | |
), | |
"il"-> Map( | |
"present" -> "rougit", | |
"imparfait" -> "rougissait", | |
"futur" -> "rougira", | |
"conditionnel" -> "rougirait" | |
), | |
"elle"-> Map( | |
"present" -> "rougit", | |
"imparfait" -> "rougissait", | |
"futur" -> "rougira", | |
"conditionnel" -> "rougirait" | |
), | |
"on"-> Map( | |
"present" -> "rougit", | |
"imparfait" -> "rougissait", | |
"futur" -> "rougira", | |
"conditionnel" -> "rougirait" | |
), | |
"nous"-> Map( | |
"present" -> "rougissons", | |
"imparfait" -> "rougissions", | |
"futur" -> "rougirons", | |
"conditionnel" -> "rougirions" | |
), | |
"vous"-> Map( | |
"present" -> "rougissez", | |
"imparfait" -> "rougissiez", | |
"futur" -> "rougirez", | |
"conditionnel" -> "rougiriez" | |
), | |
"ils"-> Map( | |
"present" -> "rougissent", | |
"imparfait" -> "rougissaient", | |
"futur" -> "rougiront", | |
"conditionnel" -> "rougiraient" | |
), | |
"elles"-> Map( | |
"present" -> "rougissent", | |
"imparfait" -> "rougissaient", | |
"futur" -> "rougiront", | |
"conditionnel" -> "rougiraient" | |
) | |
) | |
) | |
val verbs: Iterable[String] = map.keys | |
val persons: Iterable[String] = map.values.head.keys | |
val times: Iterable[String] = map.values.head.values.head.keys | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment