ヤマカサのプログラミング勉強日記

プログラミングに関する日記とどうでもよい雑記からなるブログです。

[yukicoder] No.3 ビットすごろく

全数探索?

f:id:yamakasa3:20180608030207p:plain

No.3 ビットすごろく - yukicoder

競技プログラミングを始めたての頃にこの問題を解いたことがありますが、提出したことはありませんでした。そのときの記事は、

yamakasa3.hatenablog.com

になります。そのときの解き方は隣接行列を使って到達可能かどうかを判定していました。

続きを読む

リーダブルコードを読む その10

リーダブルコード

 

リーダブルコード ―より良いコードを書くためのシンプルで実践的なテクニック (Theory in practice)

リーダブルコード ―より良いコードを書くためのシンプルで実践的なテクニック (Theory in practice)

 

14章 テストと読みやすさ

僕はテストコードというのを書いたことがありませんが、コードを振る舞いを確認するために必要な技術だということは分かりました。

テストコードは、ある入力から得られる振る舞いと期待する出力を一致させることが目的です。コードを簡潔に読みやすくするだけでなく、テストステートメントを短くすることでテストケースの追加が簡単になります。

テストステートメントは、

www.itmedia.co.jp

で説明されています。

テストに関連して、エラーメッセージを読みやすくすることも重要です。エラーメッセージを役立たせるために、自作のassert()を用意することも手です。

AtCoder Beginner Contest 099に参加しよう

AtCoder Beginner Contest 099

6月10日の21:00にAtCoderプログラミングコンテストがあるので参加したいと思います。前回は残連ながらB問題までしか解くことができませんでしたが、今回はC問題まで解けるように頑張ります。

abc099.contest.atcoder.jp

スレッドの協調

スレッド間の通信

久しぶりにわかりやすJava オブジェクト指向編の記事を書きたいと思います。

わかりやすいJavaオブジェクト指向編

わかりやすいJavaオブジェクト指向編

この本の15章8節スレッドの協調―スレッドの通信―では、スレッド通信を用いた排他制御の内容です。

wait()メソッドとnotify()メソッドを用いて排他制御を行います。

続きを読む

yukicoderの進捗

yukicoder

yukicoderの進捗ですが、レベル1.5の問題を解き終わりました。次はレベル2ですが、アルゴリズムの知識を必要とする問題も出てくるので、プログラミングコンテスト攻略のためのアルゴリズムとデータ構造の内容を理解しておかねければならないと思います。

また、AtCoderの過去問も解いていきたいとおもいます。

f:id:yamakasa3:20180607001303p:plain

 

[yukicoder] No.617 Nafmo、買い出しに行く

全数探索の問題

No.617 Nafmo、買い出しに行く - yukicoder

この問題は全数探索をすることで解くことができると思います。つまり、すべての商品の選び方を元に重さを計算します。重さが  K になればその時点で解が見つかりますが、そうでない場合は全ての組み合わせを調べる必要があります。

組み合わせの列挙ですが、これは前に記事にしたビット列の列挙のコードを利用することで実現できます。

続きを読む