Jun 27, 2016 Q14:W杯出場国しりとり|プログラマ脳を鍛える数学パズル programing プログラマ脳を鍛える数学パズル Scala プログラマ脳を鍛える数学パズル シンプルで高速なコードが書けるようになる70問をやる。今回は、Q14:W杯出場国しりとり。 Q: どの国名も1度しか使うことができないとき、最も長く続けられる順を求め、長さを応える。 foldLeftはmapしてmaxで置き換えられるし、その方が見た目シュッとするけど、こっちの方が性能は良いはず。 val countries = Set("Brazil","Croatia","Mexico","Cameroon","Spain","Netherlands","Chile","Australia","Colombia","Greece","Cote d'lvoire","Japan","Uruguay","Costa Rica","England","Italy","Switzerland","Ecuador","France","Honduras","Argentina","Bosnia and Herzegovina","Iran","Nigeria","Germany","Portugal","Ghana","USA","Belgium","Algeria","Russia","Korea Republic") def count(last:Char, group:Set[String], acc:Int):Int = { val matching = group.filter(_.head == last) if(matching.size == 0) acc else { matching.foldLeft(acc){ (z,country) => val length = count(country.last.toUpper, group - country, acc + 1) if(length > z) counted else z } } } upperCase.foldLeft(1){(z,country) => val length = count(country.last.toUpper, countries - country, 1) if(length > z) length else z } «Q15:階段で立ち話|プログラマ脳を鍛える数学パズル Q13:覆面算を満たすのは何通り?|プログラマ脳を鍛える数学パズル» Link Please enable JavaScript to view the comments powered by Disqus. Latest post: OpenWhiskのScala sbtプロジェクトのgiter8テンプレートを作った OpenWhisk+Scalaで作るServerless Architectureとっかかり BluemixにPlayframeworkアプリケーションをデプロイする sbt、Giter8を統合するってよ Scala 2.12.0でSAM型 Recent Books: 新装版 達人プログラマー 職人から名匠への道 プリンシプル オブ プログラミング3年目までに身につけたい一生役立つ101の原理原則 Scalaスケーラブルプログラミング第3版 SOFT SKILLS ソフトウェア開発者の人生マニュアル Sparkによる実践データ解析 ―大規模データのための機械学習事例集