monaco editorにANTLRで独自言語を載せるをReactでやる

頑張った github.com 以下の記事で、monaco editorにANTLRベースのパーサを組み込んで独自言語のシンタックスハイライトやエラー表示を行っている tomassetti.me これに、Reactからmonaco editorを使えるようにするやつを組み込む github.com すると簡単にRe…

.NETのWebAssemblyをReactで動かそうとした

www.publickey1.jp 「WebブラウザやNode.jsなどのJavaScript/WebAssemblyランタイム上でJavaScriptから容易にC#などで書かれた.NETを呼び出して実行可能に」なったということなので、Reactから使えないか試してみました。 github.com 結果、 dev環境(yarn d…

京セラプログラミングコンテスト(AtCoder Heuristic Contest 006)参戦記

AtCoder Heuristic Contest 006に参加して、13位 performance 2831、人生初の赤パフォでした。 レーティングも2174と黄色入りして、ランキングは73位でなかなかの順位です。 自社の応募要件に「ヒューリスティック最適化に強いこと(threecourseと同レベル以…

ゲノコン 問題Dでやったこと

ゲノコンD問題でやったことです。途中暫定1位まで行ったのですが、そこから伸ばせませんでした。(D問題は6位) 分析用コードを消さずに提出したところを評価してもらったようで、審査員特別賞を頂くことができました。 atcoder.jp atcoder.jp 問題の概要 文…

ゲノコン2021 問題Cの最高点解法

ゲノコンを頑張っていました。順位は5位で審査員特別賞を頂きました。 D問題については別途記事を書こうと思いますが、C問題で4人しかいない最高点を取れたので、解法を記しておきます。 atcoder.jp 問題 atcoder.jp Largeで40個、長さ750の文字列をいい感じ…

AtCoder Heuristic Contest 005 参加記

AtCoder Heuristic Contest 005に参加し、16.3Mで143位でした。 atcoder.jp 解法 本番では一番近くのまだ到達していない「通り」に進むだけの貪欲しかできなかったため上記の点数でした。 やりたかった解法は以下のとおり。 問題の解釈 問題を良く読むと、縦…

Togetterをスクレイピングしてヒューリスティックコン解法を集める

agwさんがヒューリスティックコンがあるときにだいたいTogetterまとめを作って下さっていて、それが情報収集にとても有り難いです。 自分の気になったツイートだけ抽出したくなったのでツールを作ってみました。 スクレイピング github.com 「残りを読む」ボ…

AtCoder Heuristic Contest 003 参加記

AtCoder Heuristic Contest 003に結構時間を溶かして参加し、96.7Bで暫定29位でした。 https://atcoder.jp/contests/ahc003 解法 ベースはRidge回帰+ダイクストラで最短路を選択 M=2を意識して行/列ごとに2個パラメータを持たせるようにした 最初の90ター…

フロントエンド何もわからない(その6)〜 Introduction To Heuristic Contestのビジュアライザを作った

threecourse.hatenablog.com のつづきです。 今回の成果物はAtCoderのIntroduction to Heuristics Contest のビジュアライズで、人間では到底良さげな解に到達できないところ、最適化だと1秒程度で綺麗な解を出してくれるのが見てて面白い。 visualizer.thre…

マラソンマッチのビジュアライザいろいろ

マラソンマッチのビジュアライザについて、各者/各社さまざまな作り方をしているので、まとめてみました。 longcontest-visualizer-framework kimiyukiさんのlongcontest-visualizer-frameworkおよびRCO/リクルートの日本橋ハーフマラソンで使われている方…

ソフトウェアのアーキテクチャについて(その3)~ 良書とクリーンアーキテクチャ

以下の記事の続きです。 threecourse.hatenablog.com ドメイン駆動設計についての書籍 ドメイン駆動設計周りを学ぶには、以下の2冊が良さそう。 「実践ドメイン駆動設計」から学ぶDDDの実装入門 www.amazon.co.jp/dp/B07S675HVM amazonレビューを見るとスル…

AtCoder Heuristic Contest 002 参加記

atcoder.jp スコア4.32M 107位 パフォ2117でした。 解法 mmlang (https://github.com/colun/mmlang) を使ってビームサーチ 点数は見ない 36分割して一筆書きのルートを設定し、できるだけ進みが遅い方を加点、ルートからはみ出たら減点 評価がタイのものは乱…

colunさんのMM Languageを学ぶ

colunさんの作成されたMM Languageを学んでみます。 https://github.com/colun/mmlang https://github.com/colun/mmlang/blob/master/doc/introduction.md マラソンマッチに勝とう!という目的というよりは、DSLや抽象化を考察することで何かに役立てられな…

ソフトウェアのアーキテクチャについて(その2)~ ドメイン駆動設計から得られる知見

以下の記事の続きです。 threecourse.hatenablog.com 参考文献 以下の本でドメイン駆動設計について学んだところ、小〜中規模のプログラムの設計・記述についてもなかなかの知見・示唆が得られたので、まとめてみます。 エリック・エヴァンスのドメイン駆動…

フロントエンド何もわからない(その5)〜 React Hooks + Redux + TypeScriptでいいんじゃね

去年から悩んで来ましたが、React (React Hooks + Redux) + TypeScript に落ち着きそうな気がしてきました。 前提 Webページの制作よりは、ヒューリスティックコンテストや数理最適化などのビジュアライザをさくっと作るのが主な目的です。 メインのフレーム…

ナーススケジューリング問題を焼きなましで解いて可視化する

この記事は、数理最適化 Advent Calendar 2020 の17日目の記事です。遅刻してすみません・・。 qiita.com 今回は、ナーススケジューリング問題と呼ばれる勤務シフト作成問題を焼きなまし法で解いてみました。*1 Reactで可視化したので、以下リンクをご参照下…

poetry publishでPyPIに勝手に公開されないのかどうか

poetry publishをうっかり実行してしまい、privateなファイルが全世界に公開されると困るので。。 自分だけならまだ注意すれば良いけど、人に薦めることを考えると気になります。 結論 poetry new <package-name> からpoetry publishをしてみたところ、以下のようにまー大</package-name>…

ソフトウェアのアーキテクチャについて

最近、小〜中規模のプログラムを保守性高く記述するにはどうすればよいかが気になっていて、 ソフトウェアのアーキテクチャについて調べていました。 本を読んでみる 以下の本を浅めに読み通してみました。どの本もそれぞれ学ぶべき点があって興味深かったで…

C#からC++を呼び出してポインタを使う

C#からC++を呼び出す方法を調べていたのですが、ポインタつかってごにょごにょできることを知って驚きました。 安全に使うには当然いろいろと気をつけなくてはいけないのですが、C++ではここまでできるのかと。 ソースコード lib.hの記述 class Value { publ…

Rustでヒューリスティックコンテストを解いてみる

Rustのお勉強として、RustにIntroduction to Heuristics Contestの解答を移植しました。 atcoder.jp スコアはC#並、コードテストでの試行回数は2倍程度でした 解法はtomerunさんの解法(https://twitter.com/tomerun/status/1277241962106511360)を参考にし…

Kaggle Haliteを強化学習で解こうとした話

本記事は 強化学習苦手の会 Advent Calendar 2020 - Adventar 8日目の記事とするべく、コンペ終了後に書いた記事に追記しました。 7日目の記事(Kaggleの強化学習コンペがグダグダだった話 - Qiita)への返歌みたいなものになります。 雑感 強化学習でどこまで…

Connect Fourをちゃんと強化学習できた話

アルファ碁ゼロの手法で、Connect FourというゲームのAIを強化学習で作成させてみました。 Connect Fourは、「重力付き四目並べ」のようなゲームです。(四目並べ - Wikipedia) そこまで探索空間が大きすぎず、またソルバーもあるため、強化学習が正しくで…

フロントエンド何もわからない(その4)

今回は、かなり自分用のメモです。 やりたいこと 計算結果のデータをGCP上に貯めたのちに、Vue.jsなどを使ってビジュアライズしたい。 自分しか使わない ソリューション いろいろ調べた限り、以下が良さそうでした。 構成 ミニマムに作るとき tornadoなどのp…

Google Cloud Runで想定外の課金が発生した話

ヒューリスティックコンのパラメータチューニングをGCPでやる - threecourse’s blogを試している中で、Google Cloud Run(以下、Cloud Run)で1万円使ってしまったので、 同じようなことを試す人がもしいたら(あまりいないと思いますが・・)ということで注…

ヒューリスティックコンのパラメータチューニングをGCPでやる

AtCoderのヒューリスティックコン(https://atcoder.jp/contests/intro-heuristics)のような短時間のコンペのパラメータチューニングをGCPで行ってみました。 理想のラン環境を求めて - threecourse’s blog のつづきです。 (ソースコードは、敵に塩を送り…

継続的インテグレーションについてのメモ

参考資料 少し古いが、テストの分類など以下のスライドがよくまとまっている。 継続的インテグレーションとテストの話 from Preferred Networks www.slideshare.net また、CircleCIでチュートリアル+αをやりました。 circleci.com (CircleCIのドキュメント…

競技プログラミングの解説に必要な要素

AtCoderの解説についての議論があったので、考えたことを書いてみました。 最近あんまりratedに参加していない中、外からなんやかんや言うのはあれなのですが、何かの足しになれば。 (私のアカウントは https://atcoder.jp/users/threecourse です) 解説に…

フロントエンド何もわからない(その3)

しばらく経つといろいろ忘れますが、覚え直すと少しずつレベルアップしている感じはありますね。 今回は、グリッド上に情報を表示するGUIを作ってみたかったため、8クイーン問題を題材にしました。 WebページはGitHub Pagesを使って公開しています。 threeco…

理想のラン環境を求めて

Kaggleやマラソンマッチで、ランをサクッと投げたいというモチベーションのもと、GCP(Google Cloud Platform)の構成を調査していました。 以下のリポジトリにコードを載せています。 GitHub - threecourse/run-environment-public まだ何も実戦で試してい…

CatBoost論文のprediction shiftについて完全に理解する

MathJax.Hub.Config({ tex2jax: { inlineMath: [['$','$'], ['\\(','\\)']], displayMath: [ ['$$','$$'], ["\\[","\\]"] ] } }); CatBoostの論文における、prediction shiftについて調べる機会があったのでまとめてみました。 (CatBoost: unbiased boostin…