ゲンゾウ用ポストイット: ケブンッリジ関数 どう書く?org に影響されて実装してみた。
using System; using System.Linq; using System.Text; using System.Text.RegularExpressions; namespace Cmabridge { class Program { static Random random = new Random(); static void Main(string[] args) { var s = @"こんにちは みなさん おげんき ですか? わたしは げんき です。 この ぶんしょう は いぎりす の ケンブリッジ だいがく の けんきゅう の けっか にんげん は もじ を にんしき する とき その さしいょ と さいご の もじさえ あっていれば じゅんばん は めちゃくちゃ でも ちゃんと よめる という けんきゅう に もとづいて わざと もじの じゅんばん を いれかえて あります。 どうです? ちゃんと よめちゃう でしょ? ちゃんと よめたら はんのう よろしく"; Console.WriteLine(Cmavridge(s)); Console.ReadKey(); } private static string Cmavridge(string s) { var buf = new StringBuilder(); var r = new Regex(@"(?<prefix>(^|\s+)[^\s])((?<shuffle>[^\s]+)?(?<suffix>[^\s]))?(?=(\s+|$))"); foreach (Match m in r.Matches(s)) { buf.AppendFormat("{0}{1}{2}", m.Groups["prefix"].Value, Shuffle(m.Groups["shuffle"].Value), m.Groups["suffix"].Value); } return buf.ToString(); } private static string Shuffle(string s) { return new string(s.ToCharArray().OrderBy(m => random.NextDouble()).ToArray()); } } }
どう書く?org 見てみたけど、Java や C# はどうしてもコードが多くなるね。Groovy や Ruby はソースが短い!