私はただふざけていて、不思議なことに、単純な再帰関数でネストされたブラケットを解析するのが少し難しいことに気づきました。
たとえば、プログラムがユーザーの詳細を検索することを目的としている場合、 から{{name surname} age}
へ{Bob Builder age}
、次に へと移動する可能性がありBob Builder 20
ます。
これは、概念を示す中括弧内の合計を合計するためのミニプログラムです。
// Parses string recursively by eliminating brackets
def parse(s: String): String = {
if (!s.contains("{")) s
else {
parse(resolvePair(s))
}
}
// Sums one pair and returns the string, starting at deepest nested pair
// e.g.
// {2+10} lollies and {3+{4+5}} peanuts
// should return:
// {2+10} lollies and {3+9} peanuts
def resolvePair(s: String): String = {
??? // Replace the deepest nested pair with it's sumString result
}
// Sums values in a string, returning the result as a string
// e.g. sumString("3+8") returns "11"
def sumString(s: String): String = {
val v = s.split("\\+")
v.foldLeft(0)(_.toInt + _.toInt).toString
}
// Should return "12 lollies and 12 peanuts"
parse("{2+10} lollies and {3+{4+5}} peanuts")
を置き換えることができるクリーンなコードのアイデアは???
素晴らしいでしょう。この問題に対するエレガントな解決策を探しているのは、ほとんど好奇心からです。