-
Notifications
You must be signed in to change notification settings - Fork 1
shop_suggestion
Yutaro Matsui edited this page Jul 18, 2017
·
2 revisions
ごはんを食べるお店に迷ったらどうぞ.
とりあえず
meshi
と投げてみると
とある飯屋 が提案されました
と返してきます.
例えば近場に行きたいときは
meshi walk
と投げると,データ内で近場であると「設定されている」候補から店を選び出します.
🍜が食べたいときは
meshi ramen
とか投げると:ramen:屋の中から選んで返します.
plugins/data/shop.json
に JSON 形式でデータが書いてあります.追加したいときはこのファイルへ:pencil:
- 追加したい店のカテゴリーを選びます.カテゴリーは現在:ramen:,定食,ファミレス,その他の 4 種類です.
- カテゴリーを決めたら,すでに書かれている例にならって「店の名前」,「エリア」,「開店時間」を書きます.
- 「エリア」は現在「近場
nearby
」,「春日kasuga
」,「天久保amakubo
」,「桜sakura
」,「その他other
」の 5 種類あります.適切そうなのを適当に選んで書いておいて下さい. - 「開店時間」は配列方式で書きました.1 次元は曜日(月から始まって日で終わる),2 次元は開店・閉店時刻の集合,3 次元は開店・閉店時刻です.分かりづらいと思うので例を下に示します.
- 「エリア」は現在「近場
- コミットを作ってプルリクエストを投げます.
店データの時刻について
例: 平日は 11:30-13:30, 19:00-21:00 で休日は 18:00-25:00 で営業しており,水曜日が定休日である場合
- 月,火,木,金の項目,すなわち第 1, 2, 4, 5 要素に
[[1130, 1330], [1900, 2100]]
と書きます. - 水は営業時間がないので第 3 要素に
[]
と書きます. - 土,日は第 6, 7 要素に
[[1800, 2500]]
と書きたいところですが,時刻は 24 時までしか対応していません.そこで,翌日の 0 時から 1 時も営業している時間であると考えます.すなわち日,月に[0, 100]
を追加しておきます.
土:[[1800, 2400]]
日:[[0, 100], [1800, 2400]]
月:[[0, 100], [1130, 1330], [1900, 2100]]
- 最終的にこうなります.
"open": [[[0, 100], [1130, 1330], [1900, 2100]], [[1130, 1330], [1900, 2100]], [], [[1130, 1330], [1900, 2100]],
[[1130, 1330], [1900, 2100]], [[1800, 2400]], [[0, 100], [1800, 2400]]]
実装があんまりキレイじゃないのでもうちょっとどうにかしたいなあ.
さしあたっての問題点
- カテゴリーは絞って
list
に入れているが,エリアに関してはランダムでlist
の中から選ばれたものを確認し,選択エリアと合致していなければもう一回ランダムで選択するという方法を取っている.無限ループに陥る可能性もあります. - 無限ループの回避方法は 50 回やり直してもだめだったら:end:ということに...
- 飯屋を複数提案できるようなオプションをつけようという話もあるけれどやってません.
何となく現在この方法しか思い浮かばないのでこんな感じでやっていますが,何か良さげな案がありましたら教えて下さい:pray: