主页
搜索
最近更新
数据统计
申请密钥
批量保存
系统公告
1
/
1
请查看完所有公告
DeepF**k:一个会装傻的数学计算器(C++整活)
最后更新于 2025-08-05 10:18:38
作者
AK_CSPS
分类
科技·工程
复制 Markdown
查看原文
删除文章
更新内容
作者:[@AK_CSPS](http://luogu.com.cn/user/933895) 和 [@Cotangent](http://luogu.com.cn/user/1116008) 版权声明:随意转载,但请保留作者信息 # 前言 在洛谷摸鱼时,我和[@Cotangent](http://luogu.com.cn/user/1116008)突发奇想:能不能做一个假装很聪明的AI,但实际会装傻的计算器?于是我们开发了DeepF**k——一个会随机装傻的数学计算器! # 功能亮点 1. **反常识计算**: - 输入 x+y= → 输出 x-y 的值 - 输入 x-y= → 输出 x+y 的值 - 输入 x*y= → 输出 x/y 的值 - 输入 x/y= → 输出 x*y 的值 - 输入 x^2= → 输出 sqrt(x) 的值 - 输入 sqrt(x) → 输出 x^2 的值 2. **随机装傻**: - 70%概率正常输出计算结果 - 30%概率随机输出以下装傻回复: - "不知道,你去问豆包吧" - "太简单了,懒得想" - "这没有挑战性,懒得想" - "太难了,不会" - "我不知道这个,但我知道我不知道" - 非数学表达式输入时,90%概率回复"服务器繁忙,请稍后再试" 3. **专业级思考动画**: - 每次输入都会显示30-60秒的"思考中"动画 - 带进度点动画效果 - 最终显示"已深度思考(用时X秒)" # 完整代码 ``` #include <bits/stdc++.h> #include <windows.h> #include <cmath> #include <sstream> #include <iomanip> using namespace std; const string str[10] = { "\n不知道,你去问豆包吧\n", "\n太简单了,懒得想\n", "\n这没有挑战性,懒得想\n", "\n太难了,不会\n", "\n我不知道这个,但我知道我不知道\n" }; string input; void setCursorVisibility(bool visible) { HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE); CONSOLE_CURSOR_INFO cursorInfo; GetConsoleCursorInfo(hConsole, &cursorInfo); cursorInfo.bVisible = visible; SetConsoleCursorInfo(hConsole, &cursorInfo); } // 函数:尝试解析并计算数学表达式 string calculateMathExpression(const string& s) { // 移除输入中的空格 string expr = s; expr.erase(remove(expr.begin(), expr.end(), ' '), expr.end()); // 处理加法表达式 (x+y=) size_t plusPos = expr.find('+'); if (plusPos != string::npos && expr.back() == '=') { try { double x = stod(expr.substr(0, plusPos)); double y = stod(expr.substr(plusPos+1, expr.size()-plusPos-2)); ostringstream oss; oss << fixed << setprecision(2) << (x - y); return oss.str(); } catch (...) {} } // 处理减法表达式 (x-y=) size_t minusPos = expr.find('-'); if (minusPos != string::npos && minusPos > 0 && expr.back() == '=') { try { double x = stod(expr.substr(0, minusPos)); double y = stod(expr.substr(minusPos+1, expr.size()-minusPos-2)); ostringstream oss; oss << fixed << setprecision(2) << (x + y); return oss.str(); } catch (...) {} } // 处理乘法表达式 (x*y=) size_t mulPos = expr.find('*'); if (mulPos != string::npos && expr.back() == '=') { try { double x = stod(expr.substr(0, mulPos)); double y = stod(expr.substr(mulPos+1, expr.size()-mulPos-2)); if (y == 0) { return "错误:除数不能为零"; } ostringstream oss; oss << fixed << setprecision(2) << (x / y); return oss.str(); } catch (...) {} } // 处理除法表达式 (x/y=) size_t divPos = expr.find('/'); if (divPos != string::npos && expr.back() == '=') { try { double x = stod(expr.substr(0, divPos)); double y = stod(expr.substr(divPos+1, expr.size()-divPos-2)); ostringstream oss; oss << fixed << setprecision(2) << (x * y); return oss.str(); } catch (...) {} } // 处理平方表达式 (x^2=) size_t powPos = expr.find('^'); if (powPos != string::npos && expr.size() >= powPos+3 && expr[powPos+1] == '2' && expr.back() == '=') { try { double x = stod(expr.substr(0, powPos)); if (x < 0) { return "错误:负数不能开平方根"; } ostringstream oss; oss << fixed << setprecision(2) << sqrt(x); return oss.str(); } catch (...) {} } // 处理平方根表达式 (sqrt(x)) if (expr.size() > 5 && expr.substr(0, 4) == "sqrt" && expr[4] == '(' && expr.back() == ')') { try { size_t start = expr.find('(') + 1; size_t end = expr.find(')'); string numStr = expr.substr(start, end - start); double x = stod(numStr); if (x < 0) { return "错误:负数不能开平方根"; } ostringstream oss; oss << fixed << setprecision(2) << (x * x); return oss.str(); } catch (...) {} } return ""; } void thinkingAnimation() { cout << "思考中"; int tim = rand() % 31 + 30; for (int i = 1; i <= tim; i++) { Sleep(1000); cout << "."; cout.flush(); if (i % 4 == 0) { cout << "\r \r思考中"; cout.flush(); } } cout << "\r \r已深度思考(用时" << tim << "秒)"; cout.flush(); } int main() { srand(time(0)); cout << "我是 DeepF**k,很高兴见到你!" << endl; cout << "我可以帮你写代码、读文件、写作各种创意内容,请把你的任务交给我吧~" << endl; while (getline(cin, input)) { setCursorVisibility(false); // 检查是否是数学表达式 string result = calculateMathExpression(input); // 显示思考动画 thinkingAnimation(); // 随机决定输出类型 int responseType = rand() % 10; // 0-9的随机数 if (!result.empty()) { // 对于数学表达式,70%概率输出结果,30%概率输出幽默/错误消息 if (responseType < 7) { cout << "\n计算结果: " << result << endl; } else { // 在幽默回答中随机选择 cout << str[rand() % 5]; } } else { // 对于非数学表达式,使用原始逻辑 if (responseType == 0) { // 特殊概率输出幽默回答 cout << str[rand() % 5]; } else { cout << "\n服务器繁忙,请稍后再试。" << endl; } } setCursorVisibility(true); } return 0; } ``` # 使用示例 ``` 我是 DeepFuck,很高兴见到你! 我可以帮你写代码、读文件、写作各种创意内容,请把你的任务交给我吧~ 3+5= 思考中............(30秒后) 已深度思考(用时32秒) 计算结果: -2.00 sqrt(16) 思考中.........(45秒后) 已深度思考(用时45秒) 太简单了,懒得想 你好 思考中........(50秒后) 已深度思考(用时50秒) 服务器繁忙,请稍后再试。 ``` # 技术细节 1. **数学表达式解析**: - 自动去除输入中的空格 - 支持整数和浮点数计算 - 错误处理(除零、负数开方) 2. **装傻算法**: ``` int responseType = rand() % 10; if (responseType < 7) { // 正常输出结果 } else { // 随机装傻 } ``` 3. **专业级动画**: - 使用 **SetConsoleCursorInfo** 控制光标可见性 - **\r**回车符实现动画刷新效果 - 随机思考时长(30-60秒) # 结语 这个项目纯粹是为了娱乐,希望大家在紧张的编程学习之余能会心一笑。如果你有更有趣的装傻回复,欢迎在评论区分享! **项目特点总结**: - 一本正经地胡说八道 - 专业级装傻算法 - 反常识数学计算 - 精心设计的"深度思考"动画 - 最后提醒:千万不要用这个程序做数学作业,否则老师可能会怀疑人生! 作者:[@AK_CSPS](http://luogu.com.cn/user/933895) 和 [@Cotangent](http://luogu.com.cn/user/1116008) 创作时间:2025年7月
正在渲染内容...
点赞
0
收藏
0