鉄則本3-3 しゃくとり法

ついにしゃくとり法に来た。前々から小耳には挟んでいたけど実際に学ぶのは初めてなのでワクワクする。問題はこちら。 atcoder.jp 異なる2つの整数のペアを選んだ時、差がK以下であるものの総数を求める問題。全部でN(N-1)/2通りと書いてくれてるのはなかな…

すごいH本の覚え書き 第5章「高階関数」

第5章は関数に関してのもう少し高度なトピックを扱っている模様。 カリー化 有名なやつ。カリー化とは、複数の引数を取る関数に一つだけ引数を与えて呼び出した時、残りの引数を取る関数を返すようにすることである。例えば二引数を取るmax関数に一つだけ引…

鉄則本3-2 答えで二分探索

基本問題 タイトルからしてアプローチがもろネタバレなのだが、今回は答えで二分探索をするらしい。 atcoder.jp この問題の場合、答えの制約として 1 <= K <= 109 があるので、この範囲を探索すればいい。線形探索だとO(NK)となり間に合わないが、二分探索な…

鉄則本3-1 二分探索とlower_bound

3章では二分探索がテーマ。まずは一番シンプルな二分探索の問題から。 atcoder.jp 回答コード #include <bits/stdc++.h> using namespace std; #define dump(x) cout << #x << " = " << (x) << endl; #define REP(i, n) for (ll i = 0; i < (n); i++) #define ITOC(n) (cha</bits/stdc++.h>…

すごいH本の覚え書き 第3章「関数の構文」

第三章はHaskellの関数についての独特な構文についての説明になっている。 パターンマッチ Haskellの関数では、特定のパターンにマッチした場合で、処理を分けることができる。以下のように書くと、7を取る場合と任意の数xを取る場合で処理を分岐することが…

すごいH本の覚え書き 第2章「型を信じろ」

Haskellの型についての章。 一般的なHaskellの型 Int 有界の整数値。範囲は環境依存。 Integer 有界でない整数値。大きい値を扱う場合はこっちを使う。動的にメモリを確保するため、Intの方が早い。 Float, Double 小数点型。他言語と同じ。 Bool 真偽値型。…

すごいH本の覚え書き 第1章「はじめの第一歩」

積読してた「すごいHaskellたのしく学ぼう!」(通称すごいH本)を引っ張り出してきて読み始めたので、備忘録的に章ごとに読んだ内容を覚え書きしていこうと思う。 リスト操作 リスト操作をするための一般的な関数の紹介 head リストの先頭の要素を取ってくる …

家で蜘蛛を飼っている

子供の頃から基本的にクモは殺さないようにして生きてきた。見た目も特に不快感はなく、子供ながらになんとなく益虫であるという知識があったからだ。「朝の蜘蛛は良い蜘蛛、夜の蜘蛛は悪い蜘蛛」とかもおばあちゃんから教わった気がする。ということで、夜…

Twitter辞めてえな

Twitterを辞めてえな〜 日常を切り貼りするだけ〜 興味ない呟き眺めるだけ〜 トレンドになった話題に関して偉そうに自説を述べるだけ〜 やることやらずに、TL徘徊 クソほど時間の無駄遣い〜 Twitterのアカウントを初めて作ったのは、確か中学3年生の時だっ…

SNSは孤独な人間のためのセーフティーネットだ

Twitterの障害が話題になっている。原因については他にいくらでも詳細な記事があるからここでは語らない。私が着目したいのはこれだ。 【お知らせ】ユーザー急増のため、一時的に新規登録を停止させて頂きます。ご迷惑をおかけしますが、今しばらくお待ちく…

継続を欠かすな、一日たりとも

この記事は深い後悔と、自責と、自戒の念を込めた記事です。何が言いたいか、一度やると決めたことは"一日たりとも"欠かすべきではないということです。私だってこんな自己啓発本の23ページ目みたいなことは書きたくありません。でも、あまりの自分の不甲斐…

一日で技術書を読破することはできるか

エリックエヴァンスのDDD本ほどではないにしても、技術書というのは基本的にそれなりに難しいもので、読むにしてもそこそこ腰を入れる必要がある。しかし、毎月毎月面白そうな新刊が出る。気軽にポチり、本棚の隅に格納されて埃を被るか、机の上のスタックに…

「ローマ人の物語」を読んでいる

最近、「ローマ人の物語」を読んでいる。文庫版で43巻もあるアレ。章ごとに2,3巻くらいまとめて買って、読み終わったらまた買ってを繰り返している。別に最後まで読み進めてやろうという気合いで読んでいるわけではない。面白くて続きが気になるから読んでい…

生きている

生きている

[競プロ] map,setで最大値、最小値を取得する方法(begin(), rbegin())

最近知ったTipsを共有します。競プロのためだけに理解の浅いC++を使っている私ですが、最近になってmap, setで最小値、最大値を一発で取得する方法があることを知りました。というか、そもそもこれらにデータを入れると勝手にソートしてくれてるので、最小値…

awkで乱数を使いたい - rand(), srand()

awkで乱数を使いたい時は rand() 関数を使います。 $ echo | awk '{print rand()}' 0.827331 rand() は0~1までの乱数を発生させます。そのため、例えば1〜10までの値にしたい時は以下のように書く必要があります。 $ echo | awk '{print int(rand()*10)+1}' …

awkで文字列を結合する

awkで文字列を結合したい場面は稀によくあると思います。awkでの文字列の結合方法は一般的なプログラミング言語とは違い、少し癖があります。というのも、awkには文字列を結合するための演算子がありません。他の言語では + とか concat とかが用意されてい…

ABC252 C - Slot Strategy の解説

数弱で解説を見てもよく分からなかったのですが、なんとかACできたので考え方を残しておきます。 問題 自分の回答 考え方 コード解説 感想 問題 atcoder.jp 自分の回答 int main(void){ ll N;cin>>N; map<ll,vector<ll>> MP; REP(i, N) { string s;cin>>s; REP(j, 10) { MP</ll,vector<ll>…

[C++] [競プロ] next_permutationで順列を作る

競プロで順列に関する操作を行いたい時があります。例えば与えられた数字から作れる順列を列挙しろ、みたいな問題です。そんな時、C++ではnext_permutationという便利な関数があります。 使い方 動作 注意点 計算量 next_permutationが使える例題 使い方 ま…

awkで特定のフィールドだけを抜き出す

awkでは入力をデフォルトで行単位のレコードとして読み込み、さらにそれをフィールドに分割します。フィールドは組み込み変数FS(Field Separater)で分割したモノであり、デフォルトはスペースとタブです。フィールドには左から順に$1, $2と番号が割り振られ…

awkで特定のフィールドだけを抜き出す

awkでは入力をデフォルトで行単位のレコードとして読み込み、さらにそれをフィールドに分割します。フィールドは組み込み変数FS(Field Separater)で分割したモノであり、デフォルトはスペースとタブです。フィールドには左から順に$1, $2と番号が割り振られ…

awkのレコードと組み込み変数NRについて

awkにはレコードという概念があります。これは文字通り行のことで、awkは行単位でパターンマッチの判定、アクションの実行を行います。このように行を処理の単位とすることは他のUnixコマンドでも見られることなので、awkを普通に使う分には特に意識する必要…

awkのパターンとアクション

awkを書く上で重要なパターンとアクションという独特な概念について紹介します。 パターンとアクションとは awkという言語にはパターン、アクションという2つの重要な概念があります。動作は単純明快で、「パターンにマッチしたレコードに対してアクションを…

react-testing-libraryで「要素が存在しないこと」をテストする方法

Reactのテストライブラリでreact-testing-libraryを使っているところは多いと思う。そこで、「ある要素が存在すること」をテストしたいことも多いだろう。そんな時は以下のように書けばいい。 it('画面に initial が表示されること', () => { const { getByT…

今週の競プロ活動振り返り ABCとかアルゴ式とか

今週の競プロ活動を振り返ります。前回の記事を見ると今週の目標として以下を挙げていました。 ABC参加 難易度Easyの問題を10問解く。 アルゴ式のグラフアルゴリズムの章(1,2章)を受講する。 algo-method.com 先週、今週のC問題に挑戦 C - Path Graph? C - D…

クソザコーダー、今週の競プロ活動を振り返る

今週の競プロ活動の振り返りを行います。 やったこと ABC参加 2完、519の茶パフォでした。 atcoder.jp 灰diff7問解く Atcoder Problemsのrecommendationから、カテゴリがEasyの問題を7問解きました。 振り返り 灰色と茶色をうろうろする日々が続いています。…

Macのコマンドの挙動がなんかおかしい時はcoreutilsを使おう

Macユーザーだったらこんな経験があると思う。ネットからコマンドを丸々コピってきてターミナルに貼っつけたけどなんか上手くいかない。command not foundじゃない、コマンドはちゃんとある、コピペもミスってない。なんなんだ? 特に、シェル芸ワンライナー…

CSVで特定の列を抽出するならcutコマンドではなくxsvコマンドを使うべき

CSVで特定の列を抽出し、何らかの処理を加えたい場合は割とよくある。そんな時に書きがちなのが以下のようなコマンドだ。 cat test.csv | cut -d, -f 2 これでCSVの1列目だけを抽出できるというわけだ。めでたしめでたし...。 とはならない。この方法には問…

MongoDBでJOINができないというデマをやめろ

MongoDBの紹介記事、あるいはRDBと比較する記事なんかに、MongoDBのデメリットとして「RDBと違いJOINができない」と書いてあるのをよく見る。MongoDBにJOINが導入される以前の古い記事だったら良いのだが、とんでもないことに最近書かれた記事にもこんなこと…

create-react-appで作ったReactアプリ(TypeScript)にts-jestを導入したら色々詰まった

create-react-appで作成したReactアプリ(TypeScript)に、ts-jestを導入しようとしたらめちゃくちゃ詰まったので備忘録として残しておく。 事前準備 1. css, svgファイルのインポートでエラーが出る。 jest-transform-stubの導入 テスト環境を jsdom に変更 i…