2017-07-01から1ヶ月間の記事一覧

最新版の Vim で :terminal コマンドを使えるようにする

Vim

最近何かと話題の Vim の :terminal ですが、使用する場合は最新版のソースコードからビルドする他にも configure 時に --enable-terminal を追加する必要があります。 $ ./configure --with-features=huge --enable-terminal これで :terminal コマンドが使…

Scala でライフゲームを書いてみた

2〜3時間で軽く書いてみました。 初めて Scala をガッツリ書いたのであまり Scala らしさが感じられないコードですが…。 [コード] import scala.sys.process._ object Lifegame { type Table = List[List[Boolean]] val o = false val x = true def width(ta…

C++ でライフゲームを書いてみた

C++

特に意味はないんですが、C++ でライフゲームを書いてみました。 C++14 で動作します(Windows での動作は未確認。 [コード] #include <cstdlib> #include <thread> #include <string> #include <iostream> #include <vector> int main(){ using table_t = std::vector<std::vector<bool>>; table_t table = { { 0, 0, 0, 0</std::vector<bool></vector></iostream></string></thread></cstdlib>…

Ruby の (1..5) と (1...5) の違い

前者は使っていたけど、後者は知らなかかったので覚書。 範囲演算子 .. を使用した場合は終端を含み、... を使用した場合は終端を含みません。 p (1..5).to_a # => [1, 2, 3, 4, 5] p (1...5).to_a # => [1, 2, 3, 4]

C++14(17) で zip 書いてみた

C++

現状の C++ で zip を書いたらどうなるんだろう、と思って書いてみました。 [コード] #include <iostream> #include <algorithm> #include <vector> #include <tuple> template<typename T, typename U> constexpr auto zip_impl(T v1, U v2){ auto vi1 = std::begin(v1); auto vi2 = std::begin(v2); using value_t = dec</typename></tuple></vector></algorithm></iostream>…

Ruby の () の戻り値

Ruby だと () の戻り値は nil になるらしい。 p () # => nil p ().nil? # true ほぼ使うことはないだろうけど知らなかった(そもそも () だけ評価出来ると思ってなかった。 ちなみに #call が呼び出されるわけではない。 class X def call "call" end def fu…

C++17 のクラステンプレートのテンプレート引数推論を使ってみて

C++

C++17 では『クラステンプレートのテンプレート引数推論』という機能が新しく追加されました。 どういう機能かというと C++17 以前では以下のようなクラステンプレートを使用する場合はテンプレート引数を明示化する必要がありました。 template<typename T> struct A{ A</typename>…

C++ で Non-static data member initializers に auto が使えないのがつらい

C++

C++14(17) になっても Non-static data member initializers に auto が使えないのがつらい、という話です。 [Non-static data member initializers とは] Non-static data member initializers とは C++11 から追加された言語機能の一つで クラスのメンバ変…