プログラミングの力を使うとき
1年間の親子会会長の任を終え、無事次の方に引き継ぎが終了しました。(つい先日の日曜日)
親子会対象世帯数40くらいのちっこい町会なんですが、イベントの負担を分担するために、4月にみんなでどのイベントの手伝いをするか、担当割り振りします。。
- 対象人数40人くらい
- イベントの数10個程度
- イベントごとに必要な手伝い人数が違う
- 1人1個のイベントを手伝う
- それぞれ希望を3つまで出す(第一希望、第二希望、第三希望)
この制約を見た瞬間・・・・これは・・・プログラマ新入社員研修の課題っぽい ww
とかニヤリとなったんですが。。
ちょうど1年前、去年の引き継ぎの時、この条件で全員にイベントを割り当てないといけないんです〜!言われ。。
横軸に10個のイベント、縦軸に40人の1人の名前のマトリックスを作って、 目視で割り当てるという神業・・・(前年の引き継ぎしてくれた人が表を用意してくれた)
が、ムズイ・・・
表・・でかい・・・ >< 目視確認・・・キツイ・・・
あちらを立てればこちらがたたず(人数足りない)で、入れ替え、入れ替え・・・
大苦戦。。
(しかも残念ながら行を見間違えたらしく、5人で確認してたハズなのに、ミスった・・😔)
これは・・・
人間がやることではない!!!
そう・・私はプログラマ。この程度の制約を満たすプログラムをかけなくてなんとしょうですよ・・!!
来年の引き継ぎの時はプログラム用意しよ・・
そう固く心に誓ったんです。
と、固く心に誓ってたんですが・・(途中夢が膨らんでスマホアプリでやろうかと妄想したりしてた)
気づいたらもう3月下旬!間に合わん!!(アセアセ)
アプリはもう間に合いそうもなくなってしまったので、とりあえずすぐできるRubyスクリプトを書き、バックアッププランは出来たところで。
Rubyスクリプトはほんとすぐ出来たから、ちょっと心の余裕ができて、webで使えるようにすんべ!と 最近ちょっと気になってたVue.jsで書いてみました!(Vueデビューw)
そしてHerokuにデプロイしてみた。
お世話になった技術・サービス
- 入力されるデータは別にDBに保存したくもないので、ブラウザのLocalStorageに保存
解き方の方針
なるべく全員の希望を通しつつイベントに人を割りふりたいので・・
- イベントごとの必要な人数とそのイベントを希望している人の人数の差が小さい順(つまり人気ない順)にイベントを並べ替える
- 対象のイベントを希望している人のうち、希望プラオリティの高い順に人を選ぶ
- をすべてのイベントに対して繰り返す
めっちゃ素直・・
ほんと新人向けプログラム課題Lv.1だ ww
なぜか小学生の子供を持つと、「一人一役」という謎の呪縛が発生してくるので みんなの希望をできるだけ満たしつつ、制約を満たすプログラム、割と有用なのではないか。(自画自賛w)