paiza開発日誌

IT/Webエンジニア向け総合求人・学習サービス「paiza」の開発者が、プログラミングやITエンジニアの転職などについて書いています。

アルゴリズムを駆使してナポリタンのパンチョ18店舗制覇してきた

f:id:paiza:20191106141558p:plain

西口です。paiza(ギノ)に入社して2ヶ月目の新人エンジニアです

先日、11月2日~4日の3連休で、アルゴリズムを使ってナポリタン専門店のパンチョさんのスタンプラリーに挑戦し、ナポリタン1年分無料券をゲットしました。やったー!!

今回は、その経緯と攻略法をお伝えします。

スタンプラリー攻略におけるアルゴリズムに興味がある方、パンチョとナポリタンを愛する方々の参考になればと思います。

パンチョのスタンプラリーと挑戦した経緯

paiza(ギノ)に入社するために引っ越してきた(もとは関西にいました)私が、慣れない東京で迷い込んだのがパンチョ渋谷店でした。

naporitanpancho.com

そのインパクト、キャラクター性、何より味のおいしさにとりつかれてしまった私は、即LINE会員登録をして通いつめていました。

そして、11月1日の午前10時。仕事を始めようとしたそのとき、パンチョさんからLINEで衝撃のお知らせが届きました。

naporitanpancho.com

パンチョのスタンプラリーやと!!??!?!??!?? これは万障お繰り合わせの上で参加するしかない!!!!!!!!!!!

気づけば私は、入社して間もない会社のSlackで全社員に向けて同志を募集していました。すると、ふだんpaizaラーニングを作っている若い2人が食いついてきました。

(西口)「これ3連休で絶対制覇したいんですけど一緒に行きませんか」

(青木)「巡回セールスマンのアルゴリズムを組むのにちょうどいいから行きます」

(喜多)「そんなこともあろうかと全店舗の最寄り駅リストを作っておきました」

(青木)「ではプログラムを作ります」

(西口)「(ありがとうございます!明日からみんなで楽しくがんばりましょう!)変な人たちだなぁ!」

というわけでこの3人が中心となって挑戦することになりました。

パンチョスタンプラリー攻略法

まずは、効率よくスタンプラリーが回れるようなアルゴリズムを組みましょう。

こういったスタンプラリーの経路を考える場合、「巡回セールスマン問題」という有名な問題のアルゴリズムがそのまま使えます。

ja.wikipedia.org

paizaラーニングアルゴリズム入門編にも「アルゴリズム入門編: 「巡回セールスマン問題」を学ぶ」というレッスンを無料で公開しています!興味のある方はぜひ見てくださいね!(これはパンチョさんではなくpaizaラーニングの宣伝です)

開発手順

1. 店舗のリストを集めて最寄り駅を調べる

naporitanpancho.com
渋谷駅と秋葉原駅は最寄りとなる店舗が2店舗ずつあったので (渋谷店と渋谷南店、秋葉原店と秋葉原昭和通り口店) 、最寄り駅は合計16駅となりました。

2. 各最寄り駅間の移動にかかる時間を全通り求める。

この16駅の全組み合わせ、120通りを調べます。

たとえば、渋谷駅からほかの15駅までの時間はどれくらいかかるか、新宿から渋谷を除いた14駅までの時間はどれくらいかかるか…といった感じですね。

これは3人で分担して、2時間ほどで全部調べました。(ちゃんと仕事が終わってからやりました)

3. 巡回セールスマン問題を解くプログラムを作成してデータを読み込ませる。

コードはこんな感じです。(paiza.IOだと計算に時間がかかってタイムアウトしてしまうので、あえて店舗数を減らしたコードを掲載しています。お手元のマシンに開発環境があれば全店舗分でもすぐに実行できるかと思います)

【Ruby】

【Python】

で、こんな感じのルー トが完成します。(このルートはグーグルマップの徒歩ルートを表示しているので、実際にたどるルートとは異なります)
f:id:paiza:20191106110148p:plain

出てきた結果を出力するとこんな感じです。

f:id:paiza:20191106110349p:plain

11月1日(金)のうちにこの作業を終わらせておいたので、あとはこの順番でひたすらパンチョに行ってナポリタンを食べてスタンプを押してもらうだけです。(ちなみに、あとでたくさん写真が出てくるけどパンチョさんはナポリタン以外もおいしいよ!)

初日・11月2日(土)

1.新宿店 (12:22着)

記念すべき一店舗目は新宿店です!
f:id:paiza:20191106110723p:plain

感動のファーストナポリタンおいしかったです。
f:id:paiza:20191106135343p:plain

2.吉祥寺店 (13:19着)

新宿で食べてから移動する時間を考えると、時間おかしない?って感じですが、次の吉祥寺店には13:19に到着しました。
f:id:paiza:20191106111031p:plain

ミートソースです。
f:id:paiza:20191102133039j:plain

3.渋谷店 (14:14着)

ここで、新宿店から遊びでついてきていた営業の人が早々に離脱してしまいました。スタンプラリーをなめているのか? 我々は遊びでやっているのではありません。
f:id:paiza:20191106112152p:plain

裏メニューの白ナポです。
f:id:paiza:20191102142523j:plain

4.渋谷南店(15:23着)

f:id:paiza:20191106112527p:plain

ボンゴレバジリコです。
f:id:paiza:20191106140909j:plain

5.新橋店(17:09着)

新橋店は地下の一角にある、なかなか雰囲気のある店舗です。
f:id:paiza:20191106112933p:plain

この時点で店員さんに「こんなスタンプたまってるの初めて見ました」と言われました。まだ都内の一部しか行ってないのに!!
f:id:paiza:20191102171914j:plain

6.千葉栄町店 (18:56着)

千葉まで移動し、県内の店舗をめぐります。あたりはもう真っ暗でございます。光り輝くネオンで我々を迎え入れてくれるのが、そうパンチョ千葉栄町店です。
f:id:paiza:20191102185617j:plain

f:id:paiza:20191106113331j:plain

7.プレナ幕張店(19:53着)

モノレールを乗り継いで海浜幕張まで来ました。明るく楽しいショッピングモールプレナ幕張で我々を迎え入れてくれるのが、そうパンチョプレナ幕張店です。
f:id:paiza:20191102195241j:plain

f:id:paiza:20191106141013j:plain

8.柏店(21:20着)

柏まで来ました。こちらが初日のラストパンチョとなりますので、感慨深いものがあります。
f:id:paiza:20191102211737j:plain

ごちそうさまでした、明日からまたよろしくお願いします。
f:id:paiza:20191102212408j:plain

二日目・11月3日(日)

9.御徒町店(11:00着)

2日目は御徒町店からスタートです。
f:id:paiza:20191106114213p:plain

ナポリタン厚切りベーコンです。2日目もよろしくお願いします。
f:id:paiza:20191103111311j:plain

なお本日はこちらのJR休日おでかけパスを使い、なるべくJRで移動してお得にまわりたいと思います。
www.jreast.co.jp

10.秋葉原昭和通り店(11:34着)

JRで移動して秋葉原です。秋葉原は店舗が2つあるすばらしい地域です。
f:id:paiza:20191106141312p:plain

ナポリタン目玉焼きです。
f:id:paiza:20191106114716p:plain

11.秋葉原店(12:02着)

f:id:paiza:20191106114857p:plain

ナポリタンハンバーグです。秋葉原店はサービスでお味噌汁がついてきます!やったー!
f:id:paiza:20191103120757j:plain

12.蒲田店(12:59着)

JRで移動して蒲田店です。
f:id:paiza:20191106115331p:plain

ミートソース目玉焼きです。
f:id:paiza:20191106115505p:plain

13.相模原店(14:38着)

蒲田からJRで町田まで移動して、町田からタクシーで相模原店まで来ました! 相模原店は東京環状線沿いの郊外型店舗です。
f:id:paiza:20191103143732j:plain

タッチパネルで注文できるハイテクパンチョです!
f:id:paiza:20191106120332j:plain

f:id:paiza:20191106120412j:plain

14.平塚店(17:39着)

町田に戻ってJRで平塚に行き、こんなこともあろうかと登録しておいたカーシェアリングを使って車でパンチョ平塚店に行きます。平塚店めっちゃでかい!
f:id:paiza:20191103173708j:plain

平塚店のオムカレーで2日目のラストパンチョです。平塚店はファミレス的なメニューがたくさんありました。そして、ここでも店員さんに「こんなにスタンプたまってるの初めて見ました」と言われました。
f:id:paiza:20191103175242j:plain

最終日・11月4日(月)

15. 246裾野店(11:00着)

最終日は静岡の店舗をめぐります。平塚から東海道線終着駅の国府津まで行き、沼津でさらに乗り換えて長泉なめり駅を目指します。

f:id:paiza:20191104102129j:plain

長泉なめり駅から246裾野店までは徒歩23分と出ていたので歩きます!

国道246号線沿いの246裾野店は過去最大の看板の大きさ! はりきって開店前に到着してしまったので、並んで待ちました。
f:id:paiza:20191104104531j:plain

三島コロッケつきのご当地パンチョです。三島コロッケは味がしっかりついててソースなしでもおいしいです!
f:id:paiza:20191104111023j:plain

店員さんに「スタンプすごいですね! そういう旅なんですか?」と言われました。そういう旅です。

16.富士店(13:25着)

歩いて長泉なめり駅に戻り、御殿場線と東海道線を乗り継いで吉原から岳南電車でジヤトコ前駅に向かいます!(ジヤトコ前は「じゃとこまえ」と読むそうです)

f:id:paiza:20191104130149j:plain

ジヤトコ前から住宅街を進んでいくとパンチョ富士店が現れます!
f:id:paiza:20191104132405j:plain

スタンプカードを見た店員さんに「うわっすごいですね…」と引かれました。
f:id:paiza:20191104133301j:plain

ジヤトコ前から三島に行って、新幹線で東京に戻り、大宮に向かいます。まさかナポリタンのために新幹線に乗る日が来るとは思いませんでした。
f:id:paiza:20191104151826j:plain

17.大宮店(17:51着)

関東に戻ってきて大宮店です。
f:id:paiza:20191104170732j:plain

店員さんに「あと一店舗がんばってください!」と応援してもらいました。
f:id:paiza:20191104171624j:plain

18.池袋店(18:18着)

記念すべき18店舗目は池袋店です!
f:id:paiza:20191104181447j:plain

感動のチーズナポリタンです。
f:id:paiza:20191104182654j:plain

これで18店舗すべてのスタンプを集めることができました!!!!

f:id:paiza:20191104182240j:plain

池袋の店員さんいわく、社内で「すべて回った人が出た」という連絡はまだ来ていないそうで、おそらく一番乗りでしょうとのことでした!!!! やったー!!!!!!

これは巡回セールスマン問題なので、仕上げに一店舗目の新宿店に戻って完成です。これで2周目もスムーズにいけますね。

f:id:paiza:20191106131833p:plain

まとめ

この三連休、アルゴリズムと時間をめいっぱい使ってのギリギリの18店制覇でした!

営業時間のことも考えると、アルゴリズムの心得がなければ3日で18店もまわるのは無理だったと思うので、プログラミングを学んでおいて本当によかったなと思います。

パンチョさん、本当にありがとうございました! 一年間ナポリタン無料の権利もいただいたので、これからもたくさん食べに行きたいと思います!!

今回使った巡回セールスマン問題やフィボナッチ数、ハノイの塔などのアルゴリズムが学べるpaizaラーニングアルゴリズム入門編こちら

 


 

paizaラーニング」では、未経験者でもブラウザさえあれば、今すぐプログラミングの基礎が動画で学べるレッスンを多数公開しております。

詳しくはこちら

paizaラーニング

そしてpaizaでは、Webサービス開発企業などで求められるコーディング力や、テストケースを想定する力などが問われるプログラミングスキルチェック問題も提供しています。

スキルチェックに挑戦した人は、その結果によってS・A・B・C・D・Eの6段階のランクを取得できます。必要なスキルランクを取得すれば、書類選考なしで企業の求人に応募することも可能です。「自分のプログラミングスキルを客観的に知りたい」「スキルを使って転職したい」という方は、ぜひチャレンジしてみてください。

詳しくはこちら

paizaのスキルチェック





※このブログで紹介しているキャンペーンやイベント、およびサイト内の情報については、すべて記事公開時の情報となります。閲覧されたタイミングによっては状況が変わっている場合もございますのでご了承ください。

ITプログラマー・エンジニア転職・就活・学習のpaiza

プログラミング入門講座|paizaラーニング

PHP入門編Ruby入門編Python入門編Java入門編JavaScript入門編C言語入門編C#入門編アルゴリズム入門編AI機械学習入門

エンジニアのためのプログラミング転職サイト|paiza転職

プログラミング スキルチェックエンジニア求人一覧

未経験からエンジニアを目指す人の転職サイト|EN:TRY

プログラミング スキルチェックエンジニア未経験可求人一覧

エンジニアを目指す学生の就活サイト|paiza新卒

プログラミング スキルチェックエンジニア求人一覧

ブラウザを開くだけで エディタ、Webサーバ、DB等の開発環境が整う|PaizaCloud