ABC147 E Balanced Pathでbitset高速化を完全に理解する

本番で通せなかったABC147のE問題『Balanced Path』について、反省していきたいと思います。 問題概要 H*Wのグリッドの各マスに数が2つ書かれている。グリッド上を(0,0)->(H,W)にy+1orx+1で移動するとき、経路上の各マスについて、いずれかを選び、「その合…

Search Engineering Tech Talk 2019 Autumnで検索の話を聞いてきました。

検索についての勉強会であるSearch Engineering Tech Talk 2019 Autumnに参加しました。ハッシュタグは#searchtechjp。 今回のスポンサーはスマートニュース様のイベント用スペースでした。イベント用スペースを持っているなんてすごい。 会場についてびっく…

マクロ経済系ワーカープレイスメント ナショナルエコノミー

ナショナルエコノミーは、1~4人で国を共有しながら、各自の事業を経営するワーカープレイスメントゲームです。プレイヤーは最も多くの勝利点≒貨幣を集めることを目的にします。このゲームの特徴的なところは労働者に賃金を払う必要があるところです。徐々に…

なぜ"Colorful Hats 2"に35分も掛けてしまったのか。

Colorful Hats 2は三井住友信託銀行プログラミングコンテスト2019のE問題です。本番ではこの問題に35分かかったので、振り返りをします。 三井住友信託銀行はどこに競技プログラマ需要があるのでしょうか?気になりますね。 問題概要 a = [A[0:i-1].count(A[…

HACK TO THE FUTURE 2020予選の参加記

2019/11/02に行われたHACK TO THE FUTURE 2020予選に参加しました。 解法はダイクストラ(曲がり回数100ゴールからの距離を負のコスト+4近傍のブロックの個数の2乗-ゴールからのマンハッタン-5)からの不要矢印削除で、最終成績は07:32に提出した4,941,365点…

第22回 Lucene/Solr勉強会 参加レポート

第22回 Lucene/Solr勉強会 #SolrJP @Mercariに参加しました。20分のトーク3本と懇親会中のLT2本の内容でした。内容を紹介します。

コンテストの開き方(ゆるふわ競技プログラミングオンサイト編)

ゆるふわ競技プログラミングオンサイトについて、コンテスト準備の流れを書こうと思います。主にHackerRankでの開催を念頭においています。今後、有志コンテストを開く方の参考になれば幸いです。

Rimeの使い方 誤答の区別とHackerRank用の出力方法について

この記事では作問補助ツールRimeの使い方のうち、誤答の種類を区別する方法とHackerRank用のzipファイルの作り方を解説します。 その他の情報が欲しい方は、下記の記事と公式ドキュメントを読みましょう。ほとんどのことが書かれています。 Rimeの使い方 - b…

7月に読んで面白かった本

7月に読んで面白かった本を7冊紹介します。データ指向アプリケーションデザイン、岩田さん、FANZA BOOK、Building Blocks of Tabletop Game Design、共感SNS、令和元年のゲーム・キッズ、サトラレ。

検索技術勉強会/Search Engineering Tech Talk 2019 Summerに参加しました。

2019/07/31に六本木メルカリオフィスで開催された検索技術勉強会/Search Engineering Tech Talk 2019 Summerに参加させていただきました。イベントの様子をレポートします。

GitHubにPushするとTravis CIでテストして結果をSlackに通知する設定をした

Travis CIをGitHubと・Slackに連携する方法を備忘のために説明します。GitHubのプライベートリポジトリをTravis CIと連携し、Pushしたタイミングでテストをして、結果をSlackに流すようにしました。

『アジャイルな受託開発を3年やってみて』というLTを Battle Conference Under30 2019 でしました

2019/07/06に行われたBattle Conference Under30 2019で『アジャイルな受託開発を3年やってみて』というLTをさせていただきました。私が実際にチームに入ってからの出来事を時系列で見ていきながら、何が起こり、それに合わせて何をしたかを見ていく内容に…

6月のおすすめ本

6月に読んだ本の中で、面白かった本を紹介します。 失敗から学ぶRDBの正しい歩き方 RDBのアンチパターン集。仕事では更新系をやらないので、書籍で勉強する必要があるので読んだ。 新人エンジニアは読んでおくといいのではと思った。 失敗から学ぶRDBの正し…

私が競プロerと働きたい理由

競プロerとは この記事で「競プロer」といえば、AtCoderとかCodeforcesとかのような、1~2時間で4~6問題に取り組む形式のコンテストに頻繁に参加しているプログラマのこととします。 競技プログラミングには、ゲームAI(CodingGame)とか最適化(TopcoderのMM)の…

RustでBrainfuckのインタプリタを実装する

実践Rust入門の9章はRustで電卓のインタプリタを実装する内容になっています。今回はそれのBrainfuck版を実装しました。 https://amzn.to/2K52yMM まとめ RustでBrainfuckのインタプリタを実装しました。 オーバーフローを無視して計算する wrapping_add, wr…

『ナルハヤのつるぎ』を競技プログラマーが遊ぶ

『ナルハヤのつるぎ』という面白いゲームを手に入れたので、競技プログラミングの問題風にして遊んでみたいと思います。 『ナルハヤのつるぎ』とは? 6枚のカードを組み合わせてお題の剣を揃えるスピード系パズルゲーム。 【GM2019春】ナルハヤのつるぎ 紹介…

Pythonでシフトを自動で組む

2015年にシフトを自動で組むプログラムをPythonで書いた - matsu7874のブログを書いているのですが、これはランダムで100案作って制約を満たすか確認する雑な実装なので、もう少し勉強して書き直してみるシリーズの第一回目です。 問題設定 N日分のシフト枠…

拙速版!『Rust LT #3』に参加しました

株式会社リクルートテクノロジーズのキレイな会場で開かれたRust LT #3に参加&LTをしてきました。眠たいのでイベントレポート拙速版で公開します。 当日の様子は#rust_jpをチェック。 発表資料は各タイトルからリンクにしてます。 std::pin の勘所 Rust歴4…

0-1ナップサック問題入門(if文とfor文と配列を前提とする)

この記事ではナップサック問題を解くプログラムをPythonで実装します。 再帰関数も動的計画法も使わず、if文とfor文と配列を使って解くことを目指します。 ナップサック問題とは ナップサック問題とは次のような問題です。 いくつかのアイテムと1つのナップ…

ゆるふわ競技プログラミングオンサイト@FORCIAを開催しました

ゆるふわ競技プログラミングオンサイト @FORCIAという競技プログラミングの有志オンサイトイベントを開催したので、企画者目線で振り返りを書きます。

8:30起床を支える技術

8:30起床を支える技術 研究者を目指す普通の学生諸君にに影響されて、朝8:30起床を頑張っている。今の所、成功率100%なので方法を紹介したい。 まとめ 自分は自力で朝起きられるという幻想を捨てる さっさと寝る アデッソ MY-96とNature Remoを使う

Matplotlibで間隔が疎らな時系列データを可視化する

クリスマス前後でしばらく寝込んでいたのですが、今週は体調が戻りました。 折角なので寝込んでいた時期の体温の変化を可視化してみます。 等間隔になっていないデータをどうプロットするか 体温はずっと測っていたわけではないので、時間軸の感覚が不揃いで…

2次元の凸包を求めるアルゴリズムと応用について

2次元の凸包(convex hull)を求めるアルゴリズムについてまとめました。また、凸包の応用先を列挙し、凸包を使って解ける競プロ問題を集めました。ギフト包装法(Gift wrapping algorithm),QuickHull,グラハムスキャン(Graham's scan),Monotone Chain,Chan's a…

『WE ARE LONELY,BUT NOT ALONE. ~現代の孤独と持続可能な経済圏としてのコミュニティ~ 』の読書メモ

『WE ARE LONELY,BUT NOT ALONE. ~現代の孤独と持続可能な経済圏としてのコミュニティ~ 』を読んだ。ファンコミュニティについて多くのキーワードを使って説明している。とても読みやすい。

『アウトプット大全』の読書メモ

学びを結果に変えるアウトプット大全 (Sanctuary books)作者: 樺沢紫苑出版社/メーカー: サンクチュアリ出版発売日: 2018/08/03メディア: 単行本(ソフトカバー)この商品を含むブログを見る 基本法則、話し方、書き方、やり方、トレーニング法の5章。根性…

Bashでタブ補完を自作する(同じオプションを2回サジェストしない実装付き)

Bashのタブ補完って便利ですよね。 私の一押しはgitのコマンドを補完してくれるgit-completion.bashです。 めっちゃ便利なので使ってない人は是非使いましょう。 さて、Bashの補完が作れるということなのですが、実際どう作るのか気になったので調べながら実…

Bashで配列の積集合・差集合を求める

Bashで文字列の差集合を求める関数を実装しました。 結構つまりながら実装したのでブログに書いておきます。 考え方 集合Aと集合Bの積集合(共通要素の集合)を求める。 集合Aと「1. 集合Aと集合Bの積集合」で重複していない要素を求める。 実装 except() { …

Pythonで文章から複合名詞や「〇〇の〇〇」といったフレーズを抽出する

複合名詞や「〇〇の〇〇」といったフレーズを、文章から取り出したい場面は多くあります。 この記事ではPythonを使ってそれらを抽出する方法を2つ紹介します。 janomeのTokenFilterを使う negimaを使う janomeのTokenFilterを使う Janomeは@moco_betaさんが…

「Rust LT #2 〜いま使う!Rust〜」のイベントレポート

最近仕事でRustも書いているので、LT会行ってみようということでRust LT #2 〜いま使う!Rust〜に参加枠で参加しました。記念にブログを書きます。 トーク2本とLT5本と、盛りだくさんな内容でした。 会場 主催のどらやき(@dorayaki_kun)さんさんの勤務先で…

n-ominoの列挙(Redelmeier's algorithm)

n-ominoとはn個の正方形で構成されるポリオミノ(Wikipedia)。 n-ominoの列挙を行うRedelmeier's algorithmをPythonで実装した。 速度検証 反転・回転を考慮しないn-ominoを列挙し、個数を数えた。所要時間は下記の通りだった。 n n-omino elapsed[s] 1 1 0.0…