LoginSignup
6
1

More than 3 years have passed since last update.

契約書をちゃんと()作ったC#湯婆婆

Last updated at Posted at 2020-12-13

はじめに

この記事は、N高等学校アドベントカレンダー14日目の記事です。ちなみに僕はよわよわN高生です。C#の理解もめちゃくちゃ浅いです。

@NemesisさんのJavaで湯婆婆を実装してみるが若干ゃ流行っているのでC#で適当に書いてみました。
C#湯婆婆はとっくに実装している方がいらっしゃるので、契約書クラスをちゃんと()作ったものを実装してみました。ついでにほんのちょっと機能が改善されています、たぶん、おそらく、きっと。(ぶっちゃけコードはほとんど変わりませんが、せっかく作ったので)

一応ネタバレになるかもしれないのでそこは注意してください。

コード

Yubaba.cs
using System;
using System.Text.RegularExpressions;
using static System.Console;

namespace Yubaba
{
    class Program
    {
        static void Main(string[] args)
        {
            WriteLine("契約書だよ。そこに名前を書きな。");
            Contract contract = new Contract();
            contract.Name = ReadLine();
            string name = Regex.Replace(contract.Name, @"\s", "");
            WriteLine($"フン。{name}というのかい。贅沢な名だねぇ。");
            string newName = CreateNewName(name);
            WriteLine($"今からお前の名前は{newName}だ。いいかい、{newName}だよ。分かったら返事をするんだ、{newName}!!");
            ReadLine();
        }

        static string CreateNewName(string name)
        {
            if (name == "荻野千尋") return "千";
            Random random = new Random();
            return name[random.Next(name.Length)].ToString();
        }
    }

    public class Contract
    {
        public string Text { get; set; } = "契約書の本文が適当に書いてある";
        public string Name { get; set; } //署名
    }

}

まあ契約書(Contract)クラスを作ったり、名前を奪う部分をメソッドにしたりと(そこまで必要のないことを)したぐらいで、特に変わった実装はないです。(ただ契約書を作成して署名させるという流れを忠実に再現しようとしたらこういう実装になりました)

ただ、「山田 太郎」のように空白なんかを入れると空白が名前になってしまう可能性が出てくるので、

string name = Regex.Replace(contract.Name, @"\s", "");

の部分で正規表現を使って空白を消しています。(こうするとTabなんかも消せることをgoogle先生に教わりました)
また、「荻野千尋」と入力した場合は確定で「千」になるようにしています。(原作の原作の再現)

実行例

契約書だよ。そこに名前を書きな。
山田太郎
フン。山田太郎というのかい。贅沢な名だねぇ。
今からお前の名前は山だ。いいかい、山だよ。分かったら返事をするんだ、山!!
契約書だよ。そこに名前を書きな。
        タロ =  ウ      = ヤマダ
フン。タロ=ウ=ヤマダというのかい。贅沢な名だねぇ。
今からお前の名前はヤだ。いいかい、ヤだよ。分かったら返事をするんだ、ヤ!!
契約書だよ。そこに名前を書きな。
荻野 千尋
フン。荻野千尋というのかい。贅沢な名だねぇ。
今からお前の名前は千だ。いいかい、千だよ。分かったら返事をするんだ、千!!

名前が空の場合はお察し

おわりに

当然といえば当然なんですが、千尋の名前を奪うところはもっといろいろセリフがあったんですね、見たのが昔すぎてほとんど覚えていない…

若干ふざけたコードなのであれですが、変なところがあれば教えてもらえるとありがたいです。

別の方で参考にさせてもらった記事

このコードで対応していない𠮷田さんを働かせる方法
C# で湯婆婆を実装してみる(𠮷田さんにも対応)

早い湯婆婆
C# で湯婆婆を実装してみる「性能のいい湯婆婆を目指して」
C#で性能のいい湯婆婆

6
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
1