回答編集履歴
1
refactor
    
        answer	
    CHANGED
    
    | @@ -1,20 +1,19 @@ | |
| 1 1 | 
             
            ちょ、退会すんなよ。
         | 
| 2 2 |  | 
| 3 | 
            -
            100を百にしようと思うと大変だけど、一〇〇でいいなら、Linqで | 
| 3 | 
            +
            100を百にしようと思うと大変だけど、一〇〇でいいなら、Linqで。
         | 
| 4 | 
            -
            漢数字をlist(配列とかList)でもつか、map(Dictinary)でもつか2パターン
         | 
| 5 | 
            -
            引数を数字と見るか、文字列と見るかで2パターン
         | 
| 6 | 
            -
            (さらに書きませんでしたが文字列の場合、数値だけを抜き出しておきかえる、というパターンもあり得るが、Where(char.isDigit)をSelectの前に入れればいいので)
         | 
| 7 | 
            -
            C#でこの程度で10回if書いてたら話になりません。
         | 
| 8 4 |  | 
| 9 5 | 
             
            ```csharp
         | 
| 10 | 
            -
             | 
| 11 | 
            -
             | 
| 12 | 
            -
             | 
| 13 | 
            -
             | 
| 14 | 
            -
             | 
| 15 | 
            -
             | 
| 16 | 
            -
                     | 
| 17 | 
            -
             | 
| 18 | 
            -
             | 
| 19 | 
            -
             | 
| 6 | 
            +
            static string ConvertToKansuji(int n) => string.Concat(EnumerateDigits(n).Select(i => ToKansujiOnBaseByString(i)).Reverse());
         | 
| 7 | 
            +
            static string ConvertToKansuji(string str, bool onlyDigits = false) => string.Concat(str.ToCharArray().Where(c => !onlyDigits || char.IsDigit(c)).Select(c => char.IsDigit(c) ? ToKansujiOnBaseByDictionary(c) : $"{c}"));
         | 
| 8 | 
            +
            static IEnumerable<int> EnumerateDigits(int n, int unit = 10)
         | 
| 9 | 
            +
            {
         | 
| 10 | 
            +
                while (n >= unit)
         | 
| 11 | 
            +
                {
         | 
| 12 | 
            +
                    yield return n % unit;
         | 
| 13 | 
            +
                    n = n / unit;
         | 
| 14 | 
            +
                }
         | 
| 15 | 
            +
            }
         | 
| 16 | 
            +
            static string ToKansujiOnBaseByString(int n, int unit = 10) => unit > 10 || n >= unit ? throw new InvalidOperationException("illegal") : $"{"〇一二三四五六七八九"[n]}";
         | 
| 17 | 
            +
            static string ToKansujiOnBaseByArray(int n, int unit = 10) => unit > 10 || n >= unit ? throw new InvalidOperationException("illegal") : (new[] { "〇", "一", "二", "三", "四", "五", "六", "七", "八", "九", })[n];
         | 
| 18 | 
            +
            static string ToKansujiOnBaseByDictionary(char n, int unit = 10) => unit > 10 || !char.IsDigit(n) || (int)char.GetNumericValue(n) >= unit ? throw new InvalidOperationException("illegal") : (new Dictionary<char, string> { { '0', "〇" }, { '1', "一" }, { '2', "二" }, { '3', "三" }, { '4', "四" }, { '5', "五" }, { '6', "六" }, { '7', "七" }, { '8', "八" }, { '9', "九" }, })[n];
         | 
| 20 19 | 
             
            ```
         | 
