AtCoderで始めるCOBOL入門 ~概要・入出力編~
はじめに
1959年に産声を上げたプログラミング言語であるCOBOLは、今なお世界中で動いています。
しかし今ではレガシーシステムの代表格に取り上げられており、COBOLを使うエンジニアもどんどん高齢化しています。
当然ナウなヤングにバカウケである競技プログラミングサイトことAtCoderでは、COBOLのような太古の言語を使う人はほとんどいません*1。
しかしCOBOLを使ってみたいという風変わりな人がどこかにいるかも知れないので、そういった人に向けて記事を書き留めておきます。
なお本気で競プロをしたい場合は勧められない*2のでこれ以上読まないのが身のためです。
また目的はAtCoderの問題を解くことなので、解くのに必要ない仕様についてはほぼ触れません。
また筆者はにわかコボラーなため、この記事には嘘も書いてあるかもしれません。ご承知おきください。
(指摘コメントもお待ちしております)
scipyで最大流問題を解く
はじめに
scipyにはsparse.csgraph.maximum_flowが用意されていて最大流問題が解けるようになっています。
しかしこれといって日本語の解説記事が見当たらないので書いてみます。
NKODICEのOCHINCHIN確率問題を動的計画法で解く
はじめに
ここ数日NKODICEというダイスゲームが流行っています。
これはチンチロリンのように日本語が書かれた6面体サイコロを振って美しい日本語を作るゲームですが、ダイスを振って出た目で「お」「ち」「ん」「ち」「ん」を作れると役満のような扱いで特別な演出が発生します。
さてこのゲームで使われる個のダイスを振ってOCHINCHINを出す確率はどれくらいでしょうか?
Twitterで確率を求めようとしていた先駆者がいたようです。
このTogetterの最後の方でPythonで総当りで見つけようとしているのを見かけましたが、競技プログラミングをしている自分にとってこれは動的計画法で効率的に解けそうだなという勘が働いたので解いてみました。
続きを読む嬉野流対策の端角棒銀研究
scipy.optimize.bisectを使った二分法を競プロで使う
はじめに
今日のyukicoder contest 246で関数の二分法に関する問題が出ました。
競プロPython勢ではAtCoderのD - 高橋君ボール1号をニュートン法(scipy.optimize.newton)で解く方法が有名かとは思いますが、二分法でもscipyのモジュールで解けるようなので使ってみました。
続きを読むscipyでABC061 D Score Attackを解こうとして解けなかった話
はじめに
今までAtCoderをやってきて最短経路問題を避けてきたのですが、レート水色目前にしてようやく重い腰を上げFloyd-Warshall法やDijkstra法などを勉強しました。
その中で最短経路問題を解くのにscipyのライブラリを使えることを知りました。
note.nkmk.me
https://juppy.hatenablog.com/entry/2019/06/04/scipy%E3%81%AEFloyd-Warshall%E3%81%A8Dijkstra%E3%81%AE%E3%81%99%E3%81%99%E3%82%81_Python_%E7%AB%B6%E6%8A%80%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0_Atcoder_1juppy.hatenablog.com
kawap23.hatenablog.com
じゃあ自分もやってみよー、せっかくだし負の辺があってジョンソン法が使われる問題でやってみよーと思って解いてみたのが今回の話です。
Foxy Gesturesで上の階層へ移動させる
Firefox 57.0(Quantum)の正式版がきましたね。
アドオンがWebExtensionsに移行されるということで、殆どのアドオンが使えなくなると心配されていましたが、なんだかんだで多数のアドオンが新式になって安心しているところです。
しかし私がChromeに移行できない理由であったアドオン、FireGesturesは作者も行方不明で、ついに新式アドオンに対応しませんでした。
そこで代替アドオンを探してFoxy Gesturesに移行しました。WebExtensionsの制約によりいくつか使えないページがありますが、大概は今まで通り使えて満足しています。
しかし1点不満があり、FireGesturesではDU(↓↑)で上の階層に移動できたのですが、Foxy Gesturesにはそのようなオプションは見当たりませんでした。
しかしUser Scriptで自作スクリプトを動かせるようなので、以下のスクリプトをDUで登録しました。
if(location.href.match(/\/$/)){
window.location.href = '../';
}else{
window.location.href = './';
}
これでとりあえずはFireGesturesの動作を再現できるようになりましたとさ。めでたしめでたし。
でもhoge.hoge2.hoからhoge2.hoに移動させるスクリプトってどう書くんでしょ?location.hostnameとかでしょうか?jsわからないのでどなたかご教示願います。