fork download
  1. sealed trait Ponyatia
  2. case class Zagadka(question: String, f: String => Ponyatia) extends Ponyatia
  3.  
  4. trait Mast extends Ponyatia
  5. case object Petuh extends Mast
  6. case object Blatnoy extends Mast
  7.  
  8. object Main extends App {
  9. def poreshatPoPonyatijam(input: String => String)(p: Ponyatia, answers: Seq[(Zagadka, String)] = Nil): Mast = p match {
  10. case m: Mast =>
  11. m
  12.  
  13. case z @ Zagadka(q, f) =>
  14. val answer = input(q)
  15. poreshatPoPonyatijam(input)(f(answer), answers :+ (z, answer))
  16. }
  17.  
  18. val z2 = Zagadka("Вилку в глаз или в жопу раз?", _ match {
  19. case "Вилку" =>
  20. Blatnoy
  21.  
  22. case _ =>
  23. Petuh
  24. })
  25.  
  26. val z1 = Zagadka("Есть два стула, на одном пики точены, на другом хуи дрочены, на какой сядешь, на какой мать посадишь?", _ match {
  27. case "Возьму пики точены, срублю хуи дрочены" =>
  28. z2
  29.  
  30. case _ =>
  31. Petuh
  32. })
  33.  
  34. poreshatPoPonyatijam(q => readLine(s"$q\n"))(z1) match {
  35. case Petuh =>
  36. println("Поди подмойся, Маня")
  37.  
  38. case Blatnoy =>
  39. println("Успех")
  40. }
  41. }
Success #stdin #stdout 0.4s 322432KB
stdin
Возьму пики точены, срублю хуи дрочены
Вилку
stdout
Есть два стула, на одном пики точены, на другом хуи дрочены, на какой сядешь, на какой мать посадишь?
Вилку в глаз или в жопу раз?
Успех