1

これは私が持っているコードで、2 つの変数を使用しているため見栄えが悪いです。

  def patternMatching(pattern: String, genome: String): List[Int] = {
    assert(pattern.length < genome.length)
    var curr = 0
    var r = List[Int]()
    while (curr != -1) {
      curr = genome.indexOf(pattern, curr)
      if (curr != -1) {
        r ::= curr
        curr += 1
      }
    }
    r.reverse
  }

これを機能的にどのように記述しますか?

4

4 に答える 4

1

すべての場所でパターンを明示的に適用したり、サードパーティのライブラリを使用したりする必要のない、はるかに単純な慣用的な Scala ソリューションがあります。

def patternMatching(pattern: String, genome: String): List[Int] =
  pattern.r.findAllMatchIn(genome).map(_.start).toList
于 2018-02-23T09:31:38.707 に答える