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); } }
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); }