3人対戦ゲームの試合数・対戦表

2020/11/15 18:57 整数計画問題
数学でこんな問題がありました。

・3人で行うゲームがある
・9人が参加する
・各プレイヤーは4回だけプレイできて、さらに他のすべてのプレイヤーとちょうど1回ずつプレイする
・このような条件をみたすゲームの個数(=試合数)は何通りあるか、対戦表は作れるか

この問題を整数計画問題として GLPK (Gnu Linear Programming Kit) を使って解いてみたので、これで正解なのか自信がありませんが私なりの解答を披露したいと思います。

#Yahoo!知恵袋 でも、同じ問題の答えを聞いている人がいました(こちらこちら)。
#前者の回答例は、私の解答での m02,m12,m22,m23,m30,m46,m47,m51,m63,m66,m74,m76 パターンで、対戦表では No. 352 にあたります。

まず、9人に1,2,3,・・・,9と番号を付ける。
9人のうち3人でゲームをするから、その組み合わせは 9C3で、84通りある。
この組み合わせにも番号を付け、それぞれ m01, m02, ..., m84 と表す。
一覧は次の通り。

続きを読む

pdf-slide-divider スライドが1ページに複数面割り付けられている(例えば3×3面とか2×2面とか)PDFファイルを1ページ1面ごとに分割する

2020/11/18 3:35
例えば何かの資料として、PowerPointで作成したとおぼしきスライドを1ページに複数面割り付けたPDFファイルを受け取ることがあります。
このままだと製本やファイリングしにくいので、1面1枚ずつに分割したいときがあります。
そのときのためのツールです。
「2 in 1 印刷」や「冊子印刷」に対応した形式でも出力できます。
※冊子印刷:週刊誌形式。用紙を重ねてまとめて半分に折って、折った線上をホチキス(ステープラ)でとめたときに、冊子状になる形式。

処理のイメージ
divide_image.png



Perlで書いています。Imagemagick が要ります。

ウェブ上で使える、CGI版も用意しました。
https://satomichan.jp/cgi/pdf-slide-divider/


ソースは

続きを読む

「ぐんまポケット時刻表」計画!

群馬県民にとって使いやすいポケット版時刻表の作成をめざします。

群馬県内のJR在来線・私鉄線(ポケット版時刻表の市販されている東武線を除く)全線全駅を網羅しています。
複数の系統が乗り入れ、日中時間帯には一部新前橋での乗り換えも必要な、高崎-新前橋間を全系統同じ表でまとめて表すことを重視し、機会も多い東京・横浜・さいたまへの所用に便利に使えるよう(新幹線・在来線を同じページに掲載した「高崎のりつぎ時刻表」)、また隣県(栃木県・長野県)への移動にも使えるよう編集しました。

無保証およびノークレーム(ミスがありましたらぜひ教えてください!)を前提に公開します。
icon_4b_64w.png
時刻表PDFファイル(2020年11月号:9月1日からの上毛電気鉄道臨時列車ダイヤ収録)
時刻は臨時に変更される場合があります
この時刻表を使っての交通機関へのお問い合わせはおやめください

サブプロジェクト「高崎のりつぎ時刻表」とは

おもに高崎以北の群馬県内JRローカル線(上越線・吾妻線・両毛線)と高崎以南のJR線(新幹線・高崎線・上野東京ライン・湘南新宿ライン)を、高崎駅で乗り継ぐ鉄道ユーザーに向けた時刻表です。高崎駅のホームが判別できるところがポイントです。

昨春(2019年)のダイヤ改正から、高崎支社版や大宮支社版のポケット時刻表が発売されなくなりました。A6サイズと非常にコンパクトで、案外広範囲の時刻がまとまっていて(北海道新幹線や主要駅だけですが山陽新幹線も載ってる!)、一般的にはもう紙の時刻表の時代でないのは承知ですが、重宝していただけに残念な思いをしてきました。
個人的には、高崎線(上野東京ライン・湘南新宿ライン直通を含む)と上越線が同じページに載っていて、さらに高崎駅の着発番線まで載っているのが、前橋市内から新幹線を使わずに在来線のみで東京や横浜に出かけるのには大変便利でした。

イメージ

gptt_image1.png

gptt_image2.png

こんな感じです。高崎駅での乗り換え情報(番線やホーム)に力を入れています。

2・3・4番線が左寄せ、5・6番線がセンタリング、7・8番線が右寄せ(上画像には例がないですが)となっているのにお気づきでしょうか。これで乗り換えが同一ホーム反対側への移動で済むのか跨線橋を上り下りしなければならないのか判別できます。

自分で時刻表を作って(印刷・製本して)みた

発売されていないものは仕方がないので、そしてまた春のダイヤ改正(2020年3月14日)もあることですし、時刻表を自分で作ってみました。
自宅で製本が出来るようになったので(需要があれば)頒布もしてみたいところですが、適当なチャンネルが思いつきません。

2020-03-28_timetable.jpg

自作時刻表3冊と市販の時刻表3冊を並べました。奥の青色と開いている冊子はA5判で作成、手前の桜色の冊子はB6判(手前左から2番目の「コンパス時刻表」と同じ)で作成しました。手前真ん中の茶色の表紙がかつて発売されていた、高崎支社版の時刻表です。
B6判のものは、コンビニ設置のマルチコピー機で印刷しました。印刷が鮮明で読みやすいです。

2020-04-01_timetable_a6.jpg

さらにA6判も作ってみました。コンビニでA4用紙に上下2面ずつ同じものを印刷して裁断しています。
ほぼ文庫版で、これなら正真正銘「ポケット時刻表」です。写真奥は比較のための岩波文庫です。

収録路線

  • 高崎のりつぎ時刻表
    • 東京-高崎間の新幹線、上野東京ライン・湘南新宿ライン 横浜-大宮-新町-高崎-新前橋-水上・大前・桐生・小山の主要駅 および群馬藤岡-北藤岡-倉賀野-高崎の八高線
      • 平日・下り
      • 平日・上り
      • 土休日・下り
      • 土休日・上り
  • 高崎以北時刻表
    • 上越線・吾妻線・両毛線をまとめた時刻表です。平日と土休日が同じ表に収まっています。
    • 群馬県内区間(土合・桐生まで)は全駅掲載です。
  • JR信越線・JRバス碓氷線・しなの鉄道線(高崎-安中-横川-軽井沢-上田-篠ノ井-長野)
  • JR八高線(高麗川-高崎)
  • 県内私鉄
    • 上毛電気鉄道
    • 上信電鉄
    • わたらせ渓谷鐵道
  • JR宇都宮線
    • 上野東京ライン・湘南新宿ライン 横浜-大宮-小山-宇都宮の主要駅
      • 平日
      • 土休日

公開ファイル(2020年6月6日上毛電気鉄道ダイヤ改正)※随時更新

閲覧・印刷用PDFファイル
Excel データ

その他の時刻表へのリンク

2020/04/05(日)mplayer用のPlayListを生成する

2020/11/03 11:32
Perl で書きました。Linux 等向けの mplayer に読ませるために、カレントディレクトリ以下の音楽ファイル(.mp3/.wma)があるディレクトリに、プレイリストを生成していきます。
「ディレクトリを再帰的にたどりファイル一覧を取得したい その1 - Perl - とあるエンジニアの闇歴史帳」(http://tech.katsubemakito.net/perl/dir_recursion1) を参考にさせていただきました。

音楽ファイルは文字コード順で並び替えられるのが前提(例: 00_zzz.mp3 , 01_yyy.mp4 , ...)です。

ソースはこちら。

続きを読む

2020/04/05(日)PDFファイルにインデックス・タブを付加する

2020/11/03 11:31
index_tab.png

このようなページ頭出し用のインデックス・タブ(黒い箱)を PDF ファイルに付け加えます。
奇数ページ/偶数ページで位置(左右)を変えています。A5サイズで調整したので、適宜変更してください。
beta.png という名前の 単色で塗りつぶした画像ファイルを別途用意してください(サイズは何でもいいです。)。

使い方の例
./tab.pl in.pdf out.pdf 1 15,29,44 2
【第0引数】オリジナルPDFファイル名
【第1引数】インデックス・タブ付加後のPDFファイル名
【第2引数】初期 index 位置(上から 1, 2, 3, ...)デフォルト=1
【第3引数】index 位置が変わるページNo. (最初のページは p.1) (ex '15,29,44') デフォルト=なし(一度も変えない)
【第4引数】目次ページNo. (全てのインデックス・タブを描画するページ) デフォルト=目次ページなし
第2引数~第4引数は省略可能です。

Perl で書いています。要PDFtk。
ソースはこちら。

続きを読む

2020/04/05(日)切手組み合わせ問題を整数計画問題として解く

計算サイト http://xrea.satomichan.jp/stamp_problem/

例えば 1,405円分(定形外1kg以内の一般書留・速達郵便)の切手の組み合わせを考えると、1円切手、84円切手、320円切手がそれぞれ1枚に500円切手が2枚の計5枚だと、最低の枚数で済むんですね。暗算で出来る、500 + 500 + 100 + 100 + 100 + 100 + 5 だと7枚だから、2枚減らせました。普通は窓口で印紙を貼ってもらうか・・・。

それから逆に最小枚数にこだわらない場合、210円切手(定形外150g以内に相当)は常備しなければいけないものでもなさそうです。63 + 63 + 84 = 210 でも代用できます。

Wikipedia日本語版「整数計画問題」: https://ja.wikipedia.org/wiki/%E6%95%B4%E6%95%B0%E8%A8%88%E7%94%BB%E5%95%8F%E9%A1%8C
Wikipedia日本語版「切手問題」:https://ja.wikipedia.org/wiki/%E5%88%87%E6%89%8B%E5%95%8F%E9%A1%8C