さっき偶然気が付いたのですが、便利な拡張機能「VSCommands for Visual Studio 2012」を入れたら、タイトルバーにGitのブランチ名がこんな感じで表示されました。
これはいいかも!
さっき偶然気が付いたのですが、便利な拡張機能「VSCommands for Visual Studio 2012」を入れたら、タイトルバーにGitのブランチ名がこんな感じで表示されました。
これはいいかも!
Git for WindowsがUTF-8に対応したおかげで、ほとんど日本語ということを意識せずに使うことができるようになりました。
ただ、まだまだShift-JISのファイルを扱うことも多く、現在のGit for Windowsではgit diffが文字化けしてしまっていました。
この現象を解消するためには、次のような手順が必要です。
生のgit diffと違って色分けはされませんが、正しく日本語が表示されることがわかります。
なお、gitkは問題なく表示されましたし、色分け表示もされるので、こちらで確認した方が早いかもしれませんw
元ネタはこちら。
というわけで10分で書いた。
using System; | |
using System.Collections.Generic; | |
using System.Linq; | |
using System.Text; | |
using System.Reactive.Linq; | |
namespace ReactiveFizzBuzz | |
{ | |
class Program | |
{ | |
static void Main(string[] args) | |
{ | |
IObservable<string> fizzbuzz = FizzBuzz(); | |
fizzbuzz.Take(20).Subscribe(Console.WriteLine); | |
} | |
private static IObservable<string> FizzBuzz() | |
{ | |
return Observable.Generate( | |
1, | |
_ => true, | |
i => i + 1, | |
i => i % 15 == 0 ? "FizzBuzz" | |
: i % 3 == 0 ? "Fizz" | |
: i % 5 == 0 ? "Buzz" | |
: i.ToString()); | |
} | |
} | |
} |
完全にネタなので、鵜呑みになさらぬよう。
サーセン、ほんとサーセン><
というわけで、末尾再起版。(結果的に計算量もO(n)に)
using System; | |
using System.Collections.Generic; | |
using System.Linq; | |
using System.Text; | |
namespace ConsoleApplication1 | |
{ | |
class Program | |
{ | |
static int cnt; | |
static void Main(string[] args) | |
{ | |
foreach (var i in Enumerable.Range(0, 11)) | |
{ | |
cnt = 0; | |
Console.WriteLine("Fib(" + i + ") : " + Fib(i) + ", 再帰呼び出し回数 : " + cnt); | |
// == 実行結果 == | |
// Fib(0) : 0, 再帰呼び出し回数 : 0 | |
// Fib(1) : 1, 再帰呼び出し回数 : 0 | |
// Fib(2) : 1, 再帰呼び出し回数 : 1 | |
// Fib(3) : 2, 再帰呼び出し回数 : 2 | |
// Fib(4) : 3, 再帰呼び出し回数 : 3 | |
// Fib(5) : 5, 再帰呼び出し回数 : 4 | |
// Fib(6) : 8, 再帰呼び出し回数 : 5 | |
// Fib(7) : 13, 再帰呼び出し回数 : 6 | |
// Fib(8) : 21, 再帰呼び出し回数 : 7 | |
// Fib(9) : 34, 再帰呼び出し回数 : 8 | |
// Fib(10) : 55, 再帰呼び出し回数 : 9 | |
} | |
} | |
private static int Fib(int n) | |
{ | |
return Fib(0, 1, n); | |
} | |
private static int Fib(int fib__, int fib_, int n) | |
{ | |
cnt++; | |
if (n == 0) return 0; | |
if (n == 1) return 1; | |
var fib = fib__ + fib_; | |
if (n > 2) | |
{ | |
return Fib(fib_, fib, n – 1); | |
} | |
else | |
{ | |
return fib; | |
} | |
} | |
} | |
} |
ついでに、おまけに得られた情報。
C#は普通末尾再起最適化を行わないのですが、x64|Releaseビルドだと、JITコンパイルで末尾再起最適化されるらしいです。
@neueccさんから教えていただいた記事。
その後@kazukさんから教えていただいた記事。
窓の杜 – 【REVIEW】テキストファイルを手軽に“Gist”で公開できるツール「CreateNewGist.exe」
以前GistSharpExtensionが窓の杜で紹介されました。
GistSharpExtensionが窓の杜で紹介されました « be free
今回はCreateNewGist.exeも紹介していただきました。
Gistに挙げたいファイルをドラッグ&ドロップすることができるのは、言われてみれば当然なのですが、全然気づいてませんでしたw
というわけで、地味に便利なので、ぜひお使いください。
流石にあんまりなので書いてみた、という小ネタです。
整数nを与えたらフィボナッチ数を返す関数です。
フィボナッチ数列については、フィボナッチ数 – Wikipedia辺りを参照。
using System; | |
using System.Collections.Generic; | |
using System.Linq; | |
using System.Text; | |
namespace Fibonacci | |
{ | |
class Program | |
{ | |
static void Main(string[] args) | |
{ | |
foreach (var i in Enumerable.Range(0, 10)) | |
{ | |
Console.WriteLine(i + ":" + Fib(i)); | |
} | |
} | |
private static int Fib(int n) | |
{ | |
return n == 0 | |
? 0 | |
: n == 1 | |
? 1 | |
: Fib(n – 2) + Fib(n – 1); | |
} | |
} | |
} |
いじょ。