paiza開発日誌で紹介されていたBotUI、なるほど予め型にはまった会話ならこれだけでお手軽にJavaScriptだけで(.then(function(){...})
で繋ぐだけで)出来ちゃうんですね。注文を取るとか、特定のAPI叩く(Wizardを会話でやる)とか、サポートセンターで特定の電話番号につなぐとか。AIは使ってないので、user側の曖昧な自然言語を受け取って処理する、というものではないですけど、そういうのに繋げればいい? いや、IBMのWatsonとかみると、そういう会話のplatformも含めて提供しているので、そうなるとBotUIの出番は無い筈。 Git Repositoriesの総数を答えるsampleは、公式のsamplesより面白かった(興味深かった)です。
Category: Paiza
BotUI - ChatBot Only by JavaScript
Getting Prize S Level Programmer at Paiza
先日、Paizaのスキルチェックで 時間切れ0点を取ってしまったので、 癪だからランクS、本気で取りに行きました。 ひとりすごろくは第一次制限時間の40分を超えてしまったので、 全ケース通ったんですけど95点でSではなくA判定。 やっぱり時間が大事なんですね。 Javaで「早く」書くのは確かにキツイです。 ので、次は50点の制限時間が2時間のビリヤードの玉突きに挑戦しました。 こちらは、問題中にヒントを書いていてくれていることもあり、 60分で解答を提出、ようやっとSランクをゲットできました。 今までAランクでいっか、とか思ってて、S問題はゆっくりやって、 再チャレンジでcodeをbrush upして100点を取ってたんですけど、 それより時間が大事、なんですかね。 いや、実務では分を争う程、そこまでsevereではないので... それに、paizaでいくら頑張っても、 小さいとこばっかりであんまり行きたい先が無いので、虚しいんです。
Challenging Paiza TSP
8/13はPaizaの日、ということで、巡回セールスマン問題を出題していました。 Paizaラーニングでも巡回セールスマン問題のさわり(貪欲法)を取り上げていて、 2-OptやSimulatedAnnealing(焼きなまし法)を学んで、 いざ書いてみたんですが、なかなかうまく行きません。 テストデータは有名ドコロがあります。 まずはatt48で2-Optでやってみたものの、 交差線が多く、全然それっぽい経路が得られません。 なんでーーー!? Javaによるまんまのコードがあったので、 読み解いていったんですけど時間かかっちゃって、 結局Paizaの締切9/12に間に合いませんでした... 何たること。
どうも、キモはswapにあるようで、 点を交換すると総延長が短くなる場合、 当然点を交換するんですが、 当該点だけを交換するだけじゃなく、 そこから真ん中へ向かってずっと点を交換していくんですね。 そうかー。
悔しいから、久し振りにPaizaのS問題やってみました。 最も簡単そうな最小辞書順列にしてみました。 けれど、問題の意味を理解するのと、JavaのStreamで書ききったために、 制限の2時間、あっという間に過ぎてしまいました。0点確定です。トホホ。 しかも、提出したコードは、2つの場合だけ通らずに、80点。 どうしてコケる時があるのか、思い当たるフシもなく、未だにわかっていません。 テストデータ、見せて欲しいです。