using System;
using System.Collections.Generic;
using System.Text;

namespace Logic_zhongJi
{
    class Program
    {
        static void Main(string[] args)
        {
 

           /*
            * 测试 1819 */
            Twins();
           
            /* 输出结果:
                 C的妹妹是a
                 B的妹妹是b
                 D的妹妹是c
                 A的妹妹是d
             */


        }

 

        #region 2. 四对双胞胎。
        /*
         *        2. 四对双胞胎。
              在老北京的一个胡同的大杂院里,住着4户人家,巧合的是每家都有一对双胞胎女孩。
         *   这四对双胞胎中,姐姐分别是ABCD,妹妹分别是abcd。
             一天,一对外国游人夫妇来到这个大杂院里,看到她们8个,忍不住问:“你们谁和谁是一家的啊?”
              B说:“C的妹妹是d。”
              C说:“D的妹妹不是c。”
              A说:“B的妹妹不是a。”
              D说:“他们三个人中只有d的姐姐说的是事实。”
              如果D的话是真话,你能猜出谁和谁是双胞胎吗?
         */
        static void Twins()
        {
            char[] sister ={ 'A','B','C','D'};
            /*   a,b,c,d 妹妹从左至右战成一排,等待姐姐来配对,对应的姐姐分别是
             * sister[i],sister[j],sister[k],sister[m]
             *
             */
            //其实可以不用声明数组,可以直接用字符型计数器循环从A-D;
            for (int i = 0; i < sister.Length; i++)
            {
                for (int j = 0; j < sister.Length; j++)
                {
                    if (i!=j)
                    {
                        for (int k = 0; k < sister.Length; k++)
                        {
                            if (i!=k&&j!=k)
                            {
                                for (int m = 0; m < sister.Length; m++)
                                {
                                    if (m!=i&&m!=j&&m!=k)
                                    {
                                        //姐姐妹妹配好对后,根据题意得知:
                                        int x = Bool(sister[m]=='C') + Bool(sister[k]!='D') + Bool(sister[i]!='B');
                                        //既然A,B,C中三人有1人说了真话,那么x=1;
                                        if (x==1)
                                        {
                                            //如果d的姐姐是A,
                                            if (sister[m] == 'A' && sister[i] != 'B')
                                            {
                                            Console.WriteLine(sister[i]+"的妹妹是a");
                                            Console.WriteLine(sister[j] + "的妹妹是b");

                                            Console.WriteLine(sister[k] + "的妹妹是c");

                                            Console.WriteLine(sister[m] + "的妹妹是d");
                                            }
                                            //如果d的姐姐,即sister[m]是C,
                                           else if (sister[m] == 'C' && sister[k] != 'D')
                                            {
                                                Console.WriteLine(sister[i] + "的妹妹是a");
                                                Console.WriteLine(sister[j] + "的妹妹是b");

                                                Console.WriteLine(sister[k] + "的妹妹是c");

                                                Console.WriteLine(sister[m] + "的妹妹是d");
                                            }
                                            //如果d的姐姐是B,
                                            else if (sister[m] == 'B' && sister[m] == 'C')
                                            {
                                                Console.WriteLine(sister[i] + "的妹妹是a");
                                                Console.WriteLine(sister[j] + "的妹妹是b");

                                                Console.WriteLine(sister[k] + "的妹妹是c");

                                                Console.WriteLine(sister[m] + "的妹妹是d");
                                            }
                                            //如果d的姐姐是D的话,自相矛盾了!

                                        }
                                    }

                                }
                            }
                        }
                    }
                }
            }

        }

        #endregion


        //bool值为true时,返回1,为false时,返回0。当然,在c语言里,bool值与int值可以直接转换!
        static int Bool(bool a)
        {
            if (a)
            {
                return 1;
            }
            else
            {
                return 0;
            }
        }

    }
}