Пример #1
0
        void Stage1()
        {
            string python_code = sender_msg;

            SendMsg($"收到你的code:\n{python_code}");
            Sleep(2000);
            int edit_distance = CalEditDistance(problem_code, python_code);

            SendMsg($"你code的edit distance是{edit_distance}");
            Sleep(2000);
            if (edit_distance > 4)
            {
                SendMsg("你的code改太多囉,edit distance最多是4!");
                EndDialog(new DialogEntry());
            }
            SendMsg("正在run你的code...");
            Sleep(5000);
            string res = Bash.Cmd("python3", python_code);

            SendMsg($"結果:\n{res}");
            Sleep(3000);
            if (res == desired_answer)
            {
                if (python_code.Contains('#'))
                {
                    SendMsg("靠北哦,偷用註解=^=");
                    Sleep(5000);
                    SendMsg("好啦,就算你對一半嘍!");
                    Sleep(3000);
                    SendMsg("下次告訴我正解以解鎖小故事(ゝ∀・)b");
                }
                else
                {
                    SendMsg("恭喜答對囉!^_^");
                    Sleep(5000);
                    SendMsg("上次小莫在train某個model");
                    Sleep(3000);
                    SendMsg("因為模型有多個output,所以偷懶用迴圈去設定每個output的loss function");
                    Sleep(3000);
                    SendMsg("model.fit(... , loss=[lambda yt,yp:my_loss(yt,yp)*i**2 for i in range(5)], ...)");
                    Sleep(2000);
                    SendMsg("按下run,漸漸發現好像哪裡怪怪的... 乾!!怎麼每個loss function都長得一樣 (/‵Д′)/~ ╧╧");
                    Sleep(4000);
                    SendMsg("所以就不能只有我被python雷啦,要大家一起被雷!⎝( OωO)⎠\n你覺得這題bug難度如何呢?歡迎分享你的感想哦!");
                }
            }
            else
            {
                SendMsg("ㄉㄟㄉㄟ~答錯了\n再想想看怎麼修這個bug吧XD");
                Sleep(3000);
                SendMsg($"你應該要讓輸出變成:\n{desired_answer}");
            }
            EndDialog(new DialogEntry());
        }
        public override void Run()
        {
            string minimized  = Minimize(sender_msg);
            var    candidates = gossip_data.Where(p => minimized == Minimize(p.Item1)).ToArray();

            if (candidates.Length != 0)
            {
                SendMsg(RandItem(candidates).Item2); EndDialog(Program.NextDialog);
            }
            if (sender_msg.Trim().Split('\n').Last().Trim() == "選一個")
            {
                var opts = sender_msg.Trim().Split('\n').ToList();
                opts.RemoveAt(opts.Count - 1);
                if (opts.Count == 0)
                {
                    SendMsg("選項呢?");
                    Sleep(1000);
                    SendMsg("範例:");
                    Sleep(2000);
                    SendMsg("黑桃\n紅心\n方塊\n梅花\n選一個");
                }
                else
                {
                    SendMsg("我選:");
                    Sleep(1000);
                    SendMsg(RandItem(opts));
                }
                EndDialog(Program.NextDialog);
            }
            if ((sender_msg.Trim().StartsWith("說") || sender_msg.Trim().StartsWith("講")) && sender_msg.Trim().Length > 1)
            {
                SendMsg(sender_msg.Trim().Substring(1)); EndDialog(Program.NextDialog);
            }
            if (sender_msg.Trim().All(c => c == '.'))
            {
                SendMsg(Bash.Cmd("bash", "fortune $(fortune -f 2>&1 | tail +2 | sed 's/^[ 0-9.]*% //g' | grep -v 'chinese\\|tang300\\|song100') | sed 's/\\x1b\\[[0-9;]*m//g'")); EndDialog(Program.NextDialog);
            }
            if (sender_msg.Trim().All(c => c == '…'))
            {
                SendMsg(Bash.Cmd("bash", "fortune-zh | opencc | sed 's/\\x1b\\[[0-9;]*m//g'")); EndDialog(Program.NextDialog);
            }
            if (new[] { "剪刀", "石頭", "布" }.Contains(sender_msg.Trim()))
            {
                var s = new List <string> {
                    "剪刀", "石頭", "布"
                };
                (int you, int me) = (s.IndexOf(sender_msg.Trim()), RandInt(0, 2));
                SendMsg($"我出 {s[me]}");
                Sleep(500);
                switch ((me - you + 3) % 3)
                {
                case 0: SendMsg("布!"); break;

                case 1: SendMsg("我贏了!"); break;

                case 2: SendMsg("嗚嗚"); break;

                default: throw new Exception();
                }
                EndDialog(Program.NextDialog);
            }
            if (Minimize(sender_msg) == "笑一個")
            {
                SendMsg(Bash.Cmd("bash", "curl facemood.grtimed.com 2>/dev/null | grep -A 2 '<div class=\"logo\">' | tail -1 | sed 's/<\\/div>//g' | sed -e 's/^[[:space:]]*//g' -e 's/[[:space:]]*$//g'"
                                 , 5));
                EndDialog(Program.NextDialog);
            }
        }
Пример #3
0
        public override void Run()
        {
            var messageText        = Minimize(sender_msg);
            var messageRepeatCount = GetRepeatCount(Program.SenderPsid, messageText);

            //SendMsg($"repeat={messageRepeatCount}");
            if (messageText == Minimize("我要說甚麼"))
            {
                var commands = Constants.Commands.ListCommands();
                SendMsg($"你可以說說看:{RandItem(commands)}");
            }
            else if (messageText == Minimize(Constants.Commands.C1))
            {
                if (ganTalkLeaderBoard == null)
                {
                    ganTalkLeaderBoard = new GanTalkLeaderBoard();
                }
                var content = string.Join("\n", ganTalkLeaderBoard.GetBoard().Select(v => $"{v.Item2}人說了:{v.Item1}"));
                if (content == "")
                {
                    content = "目前沒有資料TwT";
                }
                SendMsg("\\幹話排行榜/ <(_ _)>\n2人以上才會上榜哦!\n" + content);
            }
            else if (messageText == Minimize(Constants.Commands.C2))
            {
                switch (messageRepeatCount)
                {
                case 0: SendMsg("不好說,這真的不好說"); break;

                case 1: SendMsg("走遠了......"); break;

                case 2: SendMsg("剩下的就不要再問了"); break;

                case 3: SendMsg("就跟你說不要再問了!"); break;

                case 4: SendMsg("就說不要再問了你是沒聽到嗎?"); break;

                case 5: SendMsg("好啦好啦,我說我說"); break;

                case 6: SendMsg("好啦我真的要說了,但是要幫我保密哦"); break;

                case 7: SendMsg("真的要幫我保密哦!(勾小拇指"); break;

                default:
                {
                    switch ((messageRepeatCount - 8) % 10)
                    {
                    case 0: SendMsg("就是呢......"); break;

                    case 1: SendMsg("我覺得......"); break;

                    case 2: SendMsg("那個Spec......"); break;

                    case 3: SendMsg("應該要一開始就寫清楚,而且......"); break;

                    case 4: SendMsg("不要一直改啦,這樣......"); break;

                    case 5: SendMsg("壞透了,真的壞透了!><"); break;

                    case 6: SendMsg("生氣氣啦><"); break;

                    case 7: SendMsg("沒了,你還要我說甚麼?"); break;

                    case 8: SendMsg("好啦其實助教人也滿厲害的,甚麼問題都可以很快回答得出來~"); break;

                    case 9: SendMsg("而且作業也是很好玩、可以學到很多東西!只是呢......"); break;

                    default: Console.WriteLine($"messageRepeatCount: {messageRepeatCount}"); break;
                    }
                }
                break;
                }
            }
            else if (messageText == Minimize(Constants.Commands.C3))
            {
                SendMsg($"↓我知道你的資訊有這麼多↓\nId: {Program.SenderPsid}\n" + $"Name: {"TODO"}\n" + $"Properties: {"TODO"}");
            }
            else if (messageText == Minimize(Constants.Commands.C4))
            {
                switch (messageRepeatCount)
                {
                case 0: SendMsg("這是秘密>///<"); break;

                case 1: SendMsg("不要再問了,這是秘密!"); break;

                case 2: SendMsg("就說這是秘密了,再問下去我崩潰給你看哦><"); break;

                case 3: throw new NotImplementedException();
                }
            }
            else
            {
                string msg = sender_msg;
                if (ganTalkLeaderBoard == null)
                {
                    ganTalkLeaderBoard = new GanTalkLeaderBoard();
                }
                ganTalkLeaderBoard.Update(Program.SenderPsid, msg);
                switch (RandInt(0, 6))
                {
                case 0: break;

                case 1: msg = "你說了「" + msg + "」"; break;

                case 2: msg = "好啦," + msg; break;

                case 3: msg = msg + " XDD"; break;

                case 4: msg = msg + " www"; break;

                case 5: msg = msg + " ^_^"; break;

                case 6: msg = Bash.Cmd("\"cowsay -f $(shuf -n 1 <(cowsay -l | tail +2 | sed 's/ /\\n/g'))\"", msg); break;

                default: throw new Exception();
                }
                SendMsg(msg);
            }
            SetLastUserMessage(Program.SenderPsid, messageText);
            //SendMsg($"repeat={GetRepeatCount(Program.SenderPsid, messageText)}");
            Write();
            EndDialog(Program.NextDialog);
        }