月曜日, 7月 7, 2025
月曜日, 7月 7, 2025
- Advertisment -
ホームニューステックニュースJRの最長片道切符について #Python - Qiita

JRの最長片道切符について #Python – Qiita



JRの最長片道切符について #Python - Qiita

NJSSで主にバックエンドエンジニアをしている一色です。

今回は個人で不定期に取り組んでいるJRの最長片道切符について書いていきます。

JRの旅客営業規則に基づき、発券可能な切符で最も距離が長い片道切符を指します。

1961年の東大旅行研究会が初出とされています。その後も、様々な方が挑戦されており、近年では鉄道系・旅行系YouTuber方々が様々な形で挑戦されています。

最長片道切符の経路は大きく分けて、L型、O型、P型の3つが考えられます。

L型

始点から終点までルート上の駅を1回しか通らないルートです。通常、多くの方がJRを利用する際に発見する切符の多くはこのタイプではないでしょうか。

O型

始点と終点が同一地点のルートになります。山手線などの環状線を一周するルートがこのタイプになります。

P型

終点のみ2回通るのはO型と同じですが、経路の終端のみ環状になる経路です。東京で例えるなら、中央線で中野方面から新宿、代々木、東京と乗車し、そこから山手線で品川、渋谷を経由し再び代々木に至るルートがこのタイプになります。

EXCELによる計算方法

10年ぐらいまでは、この方法で求めるのが主流でした。しかし、EXCELのバージョンアップにより段々と動かなくなってきたのと、別の方法で求めるのが良いのではと考えました。

Graphillionによる計算方法

ほかに方法はないか探していたところ、このような記事を見つけました。これはGraphillionというグラフ集合に関するライブラリを用いたものでした。

やり方としては、駅と駅の距離を1つのデータとして、順々に投入していって、最長距離を求めます。ただ、JRの駅間を1つずつ入れると、膨大なデータ量となってしまうため、路線が分かれる分岐駅(運行上の分岐駅とは違う場合もある)や終端駅ごとにデータを投入するようにしています。

出力に問題があったので改良

ただ、上記では経路が表示されるものの、始点→終点の順番に表示されず、ランダムで表示されるので、その後自分で順番通りに出力を拾っていく必要があったため、出力部分を改良したものを作りました。

P型にも対応出来るようにデータセットを工夫

終端部が環状の「P型」の場合、それまでのデータセットでは計算できていませんでした。しかし、ブログに寄せられたコメントよりデータセットを改良して、P型であっても計算できるようにしました。

計算用のデータセットを自動生成化

さて、その後しばらくは問題無かったものの、路線の新規開業や廃線が発生すると、分岐駅が変わるという事がよく発生しました。その際、wikipediaの駅間距離を見ながら手計算で作成していましたが、ミスを誘発する可能性を考え、JRの駅間をデータとして作成して、計算用のデータセットを自動生成する方式に変更しました。

同名駅の区別忘れ

実はJRには同名の駅が複数あり、しかもそれが分岐駅であるケースもありました。例えば、「福島」と聞いてどこの駅を思い浮かべるでしょうか?多くの方は福島県を想像されると思います。しかし、大阪駅の隣駅にも福島はあります。うっかり、同名駅だと路線上は繋がって無くてもプログラム上同一駅となってしまい、ルートを出してみると突然ワープしてしまうことがありました。そのため、同名駅には、路線の識別記号を入れて区別するようにしました。福島駅であれば、「(北)福島」と「(環)福島」という感じです。

距離は違っても同じ駅間の二重登録は不可能

上記の問題を解決したら、同じ駅間は二重登録不可という問題に行きました。何の事かさっぱり分からない方も多いので具体的な区間を示します。それは、横浜〜大船間です。この区間は東海道線と根岸線が別々で通っており、両線共に途中駅で他のJR線との合流・分岐はありません。そのため、横浜〜大船については、東海道線と根岸線で2つ枝が誕生してしまいます。しかし、Graphillionの仕様上一度投入した枝のダブりは許されないため、ここでは、根岸線側を横浜〜桜木町と桜木町〜大船の2つに分割しました。

2024年4月1日以降のルートは以下になります。九州発北海道行きの片道切符となります。

竹松→ハウステンボス→早岐→三河内→永尾→武雄温泉→嬉野温泉→新大村→諏訪→岩松→諫早→東諫早→肥前白石→
江北→牛津→久保田→(臨)バルーンさが→肥前麓→新鳥栖→博多→竹下→天拝山→原田→けやき台→田代→鳥栖→
肥前旭→久留米→荒木→羽犬塚→筑後船小屋→新大牟田→新玉名→熊本→西熊本→富合→宇土→松橋→千丁→新八代→
新水俣→(鹿)川内→広木→鹿児島中央→鹿児島→加治木→隼人→日当山→栗野→吉松→鶴丸→日向庄内→都城→三股→
加納→南宮崎→宮崎→牧→大分→西大分→安部山公園→城野→石田→田川伊田→田川後藤寺→船尾→上三緒→新飯塚→
飯塚→天道→(筑)桂川→筑前大分→門松→長者原→原町→柚須→吉塚→箱崎→千早→香椎→九産大前→水巻→折尾→陣原→
九州工大前→西小倉→小倉→門司→幡生→長門市→厚狭→小野田→雀田→居能→宇部→新山口→益田→宍道→米子→
伯耆大山→備中神代→備後落合→塩町→広島→海田市→呉→三原→福山→倉敷→総社→新見→津山→岡山→東岡山→相生→
姫路→東津山→鳥取→和田山→福知山→谷川→尼崎→神戸→兵庫→西明石→新神戸→新大阪→京都→綾部→東舞鶴→敦賀→
新高岡→富山→美濃太田→岐阜→大垣→米原→近江塩津→山科→草津→柘植→木津→放出→鴫野→京橋→大阪→西九条→
今宮→天王寺→久宝寺→王寺→奈良→(和)高田→和歌山→多気→松阪→亀山→名古屋→(中)金山→多治見→塩尻→岡谷→
辰野→豊橋→静岡→三島→熱海→小田原→新横浜→(横)橋本→八王子→甲府→富士→沼津→国府津→茅ケ崎→大船→
桜木町→横浜→東神奈川→鶴見→浅野→武蔵白石→浜川崎→尻手→川崎→品川→武蔵小杉→府中本町→立川→拝島→
高麗川→倉賀野→熊谷→大宮→武蔵浦和→西国分寺→新宿→代々木→御茶ノ水→神田→東京→市川塩浜→南船橋→蘇我→
木更津→安房鴨川→大網→成東→松岸→香取→成田→佐倉→千葉→西船橋→錦糸町→秋葉原→日暮里→田端→池袋→赤羽→
南浦和→新松戸→我孫子→友部→水戸→上菅谷→安積永盛→宝積寺→宇都宮→小山→新前橋→渋川→越後湯沢→高崎→
佐久平→長野→篠ノ井→松本→糸魚川→飯山→越後川口→宮内→柏崎→吉田→新潟→燕三条→長岡→東三条→新津→
会津若松→(北)郡山→いわき→岩沼→(北)福島→仙台→高城町→石巻→前谷地→小牛田→古川→一ノ関→北上→新花巻→
花巻→盛岡→大曲→横手→新庄→羽前千歳→北山形→米沢→坂町→余目→秋田→(奥)追分→東能代→川部→新青森→
新函館北斗→大沼→東森→森→長万部→東室蘭→苫小牧→沼ノ端→南千歳→(室)追分→新得→東釧路→網走→新旭川→
旭川→富良野→滝川→岩見沢→(函)白石→桑園→長万部

総距離は10531.1km

こちらのサイトによると、アフリカのスーダンの首都まで直線距離で行けるようです。

地図に落とすと以下のようになります。

北陸新幹線敦賀延伸が終わったため、直近で新幹線の延伸は予定されていません。在来線では、羽田空港アクセス線やなにわ筋線の工事が進んでおり、これらの開業によってルートの変更がされる可能性を含んでいます。一方、最長片道切符のルート上には、路線収支の悪い路線が多数含まれており、新路線の開業を待たずに廃線となりそれによるルート変更の可能性もあります。

JRのシステム上、経路が複雑なため切符の発券までに相当な時間を要するので、発券には余裕を持つことをおすすめします。





Source link

Views: 0

RELATED ARTICLES

返事を書く

あなたのコメントを入力してください。
ここにあなたの名前を入力してください

- Advertisment -