Advertisement
Lusien_Lashans

Combinators1

Apr 6th, 2019
180
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Scala 1.43 KB | None | 0 0
  1. object Program extends App{
  2.     //  2.5 балла
  3.     //  Есть цепочка hefEgGeGFEgGgeHE
  4.     //  в данной цепочке есть различные типы частиц
  5.     //  f, e, h, g положительно заряженные частицы
  6.     //  F, E, H, G отрицательно заряженные частицы
  7.     //  если частицы одного типа с разной полярностью стоят вместе в цепочке, они реагируют и исчезают
  8.     //  проход слева направо
  9.     //
  10.     //  hefEgGeGFEgGgeHE <- gG прореагировали
  11.     //  hefEeGFEgGgeHE <- Ee прореагировали
  12.     //  hefGFEgGgeHE <- Gg или gG
  13.     //  hefGFEgeHE <- итоговая цепочка, в которой 10 частиц
  14.     //
  15.     //  Напишите функцию, используя комбинаторы стандартной библиотеки,
  16.     //  которая проведёт полную реакцию и вернёт кол-во частиц в итоговой цепочке
  17.     //  в примере выше это 10
  18.  
  19.     println(react("hefEgGeGFEgGgeHE"))
  20.  
  21.  
  22.     def react(ipt: String): String = {
  23.         ipt.foldLeft("")((m: String, n: Char) => sum(m, n))
  24.     }
  25.  
  26.     def sum(m : String, n : Char) : String = {
  27.         var s = m + n
  28.         if (!m.isEmpty) {
  29.             val kek = m.last
  30.             if (kek == n.toLower || kek.toLower == n) {
  31.                 s = m.take(m.length - 1)
  32.             }
  33.         }
  34.         s
  35.     }
  36. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement