首页 > 其他分享 >云课五分钟-06一段代码调试debug-AI与人工

云课五分钟-06一段代码调试debug-AI与人工

时间:2023-12-07 10:01:16浏览次数:31  
标签:脚本 颜色 06 AI 代码 float 程序 云课 033


前篇:

云课五分钟-05一段代码修改-AI修改C++

简单问题,与文心一言等工具交互一次,就能得到很满意的结果。

但是,复杂问题呢,可能需要多次交互,也可能由于问题的复杂性,提问者本身描述就存在不合理的地方。 

云课五分钟-06一段代码调试debug-AI与人工_数组

云课五分钟-06一段代码调试debug-AI与人工_云课五分钟_02

云课五分钟-06一段代码调试debug-AI与人工_数组_03

 


视频:


云课五分钟-06一段代码调试debug-AI与人工



文本:

能否修改如上代码,显示彩色的动态效果。

例如这个问题,如果突破思维的局限,甚至不用修改代码就能实现呢。

云课五分钟-06一段代码调试debug-AI与人工_无限循环_04

思维定势的破除,对于智能时代非常重要的,毕竟应用工具的是每个人。

云课五分钟-06一段代码调试debug-AI与人工_无限循环_05

于是这个问题有了另一种解法。

云课五分钟-06一段代码调试debug-AI与人工_c++_06

#!/bin/bash  
  
# 定义颜色数组  
colors=("\033[0;31m" "\033[0;32m" "\033[0;33m" "\033[0;34m" "\033[0;35m" "\033[0;36m" "\033[0;37m")  
  
# 获取颜色数组的长度  
colors_length=${#colors[@]}  

# 设置超时时间(以秒为单位)  
timeout=6 
  
# 无限循环  
while true; do  
    # 循环遍历颜色数组  
    for (( i=0; i<${colors_length}; i++ )); do  
        # 输出带有颜色的文本  
        echo -e "${colors[$i]}This is a colored text!\033[0m"   
	sleep $timeout        
	# 启动程序  
	./a.out &  
	program_pid=$!    
	# 等待程序运行并计时  
	sleep $timeout  
	# 检查程序是否仍在运行  
	if ps -p $program_pid > /dev/null; then  
	    echo "程序运行时间超过$timeout秒,正在强制变色..."  
	    kill -9 $program_pid  
	else  
	    echo "程序在正常时间内退出。"  
	fi
	sleep $timeout 
    done  
done

在这个脚本中,colors 数组包含了所有基本颜色(红色,绿色,黄色,蓝色,洋红色,青色,白色)的 ANSI escape codes。脚本会在这些颜色之间循环,使得文本颜色不断变化。

注意:这个脚本会无限循环,直到你停止它(通常可以通过按 Ctrl+C 来停止)。另外,这个脚本只适用于支持 ANSI escape codes 的终端。

注意,你需要确保my_program具有可执行权限,如果不是,你可以使用chmod +x my_program命令赋予其可执行权限。同时,你需要根据实际需要,将此代码嵌入到脚本的正确位置。这里只是一个示例,你可能需要根据自己的需求进行调整。

你可以使用脚本来关闭程序1并打开程序2。下面是一个示例脚本,它首先尝试关闭程序1,然后打开程序2:

#!/bin/bash  
  
# 关闭程序1  
pkill -f "程序1的进程名"  
  
# 等待一段时间确保程序1关闭  
sleep 5  
  
# 打开程序2  
./程序2的路径 &

请注意,你需要将 "程序1的进程名" 替换为实际程序1的进程名,并将 "程序2的路径" 替换为实际程序2的可执行文件的路径。

这个脚本首先使用 pkill 命令发送信号关闭程序1。-f 选项允许你指定要匹配的进程名称。然后,脚本使用 sleep 命令等待一段时间,确保程序1有足够的时间关闭。最后,使用 ./程序2的路径 & 的方式打开程序2。& 符号表示在后台运行程序2。

你可以将上述脚本保存为一个文本文件(例如 script.sh),然后在终端中运行该脚本:bash script.sh

如果程序不会自动退出,如果在脚本中计时,退出特定程序呢

如果程序不会自动退出,你可以使用脚本中的计时器来监控程序的运行时间,并在超时时退出特定程序。下面是一个示例脚本,可以实现这个功能:

#!/bin/bash  
  
# 设置超时时间(以秒为单位)  
timeout=60  
  
# 启动程序  
./程序路径 &  
program_pid=$!  
  
# 等待程序运行并计时  
sleep $timeout  
  
# 检查程序是否仍在运行  
if ps -p $program_pid > /dev/null; then  
    echo "程序运行时间超过$timeout秒,正在强制退出..."  
    kill -9 $program_pid  
else  
    echo "程序在正常时间内退出。"  
fi

在这个示例脚本中,你需要将 程序路径 替换为你要运行的程序的实际路径。脚本首先启动程序,并将其进程ID保存到 program_pid 变量中。然后,使用 sleep 命令等待指定的超时时间。在超时时间到达后,脚本检查程序是否仍在运行,如果是,则使用 kill -9 命令强制退出程序。

你可以根据需要修改超时时间 timeout 的值。请注意,强制退出程序可能会导致数据丢失或不完整,因此请确保在适当的情况下使用此脚本。

云课五分钟-06一段代码调试debug-AI与人工_c++_07

这段代码是一个C语言程序,用于生成一个动态变化的彩色文本输出在终端上。它使用了ANSI转义码来控制文本的颜色。让我们一步步解释代码的每个部分:

  1. 引入头文件:

c

#include <stdio.h> 
#include <math.h> 
#include <cstring> 
#include <unistd.h>

这些头文件包含了程序需要的各种函数和声明。例如,stdio.h包含了输入输出函数,math.h包含了数学函数等。
2. 定义颜色数组:

c

char colors[7][8] = {"\033[31m", "\033[33m", "\033[32m", "\033[36m", "\033[34m", "\033[35m", "\033[37m"};

这是一个包含7种颜色的ANSI转义码的数组。这些转义码用于在终端上设置文本颜色。
3. 主函数:

c

int main() { ... }

这是程序的入口点。
4. 变量初始化:
一些变量(如A、B、i、j等)被初始化,用于在后面的循环中计算。

  1. 无限循环:

c

for (;;) { ... }

这个无限循环使得程序持续运行,生成动态变化的输出。
6. 清理屏幕和初始化数组:

c

printf("\x1b[2J"); 
memset(b, 32, 1760); 
memset(z, 0, 7040);

printfmemset函数用于清理屏幕和初始化数组。 7. **计算和绘图**: 在嵌套的for循环中,程序使用三角函数和其他数学计算来生成一个形状,并将结果存储在bz数组中。颜色选择基于数组N`的值。

  1. 打印输出:

c

printf("\x1b[H"); 
for (k = 0; k < 1761; k++) { 
printf("%s", colors[k%7]); 
putchar(k % 80 ? b[k] : 10); 
A += 0.00004; 
B += 0.00002; 
}

在这部分,程序将计算得到的字符打印到屏幕上,并设置相应的颜色。同时,A和B的值也稍微增加,使得输出动态变化。
9. 暂停:

c

usleep(100000);

程序暂停100000微秒(0.1秒),然后重新开始循环,继续生成新的输出。

整体而言,这个程序是一个动态的文本生成器,它使用数学函数生成形状,并使用ANSI颜色代码以不同颜色显示这些形状。这个程序可能用于终端的艺术显示或者简单地展示动态文本的效果。

云课五分钟-06一段代码调试debug-AI与人工_无限循环_08

这段代码看起来像是一个在终端中生成动态图形的程序。它使用了 ANSI escape codes 来控制文本的颜色和位置,并包含了大量的数学运算来生成图形的每一个点。

如果要找出最难理解的一部分,可能因人而异。但其中比较复杂的部分可能是以下这段代码:

c

float c = sin(i);  
float d = cos(j);  
float e = sin(A);  
float f = sin(j);  
float g = cos(A);  
float h = d + 2;  
float D = 1 / (c * h * e + f * g + 5);  
float l = cos(i);  
float m = cos(B);  
float n = sin(B);  
float t = c * h * g - f * e;  
int x = 40 + 30 * D * (l * h * m - t * n);  
int y = 12 + 15 * D * (l * h * n + t * m);  
int o = x + 80 * y;  
int N = 8 * ((f * e - c * d * g) * m - c * d * e - f * g - l * d * n);

这一段代码包含了大量的浮点数运算,包括三角函数、乘法和除法。这些运算在图形生成中用于计算每个点的位置和颜色。由于涉及到多个变量的三角函数和复合运算,这一部分可能比较难以理解。

float c = sin(i); 
float d = cos(j); 
float e = sin(A); 
float f = sin(j); 
float g = cos(A); 
float h = d + 2; 
float D = 1 / (c * h * e + f * g + 5); 
float l = cos(i); 
float m = cos(B); 
float n = sin(B); 
float t = c * h * g - f * e; 
int x = 40 + 30 * D * (l * h * m - t * n); 
int y = 12 + 15 * D * (l * h * n + t * m); 
int o = x + 80 * y; 
int N = 8 * ((f * e - c * d * g) * m - c * d * e - f * g - l * d * n);

整体而言,代码的目的是通过一系列数学运算生成图形,并使用 ANSI escape codes 在终端上输出相应字符来表示图形的每一个点。这个程序是一种创造性的方法,利用终端的字符输出生成动态图形。对于不熟悉这种方法的人来说,整个程序可能都比较难以理解。

云课五分钟-06一段代码调试debug-AI与人工_#include_09

以下是一个使用C++编写的在终端中动态旋转的立方体的代码示例:

#include <iostream>  
#include <cmath>  
#include <chrono>  
#include <thread>  
  
#define WIDTH 80  
#define HEIGHT 20  
  
const char* colors[7] = {"\033[31m", "\033[33m", "\033[32m", "\033[36m", "\033[34m", "\033[35m", "\033[37m"};  
  
void drawCube(float angleX, float angleY) {  
    // 清屏  
    std::cout << "\033[2J";  
  
    for (int x = -1; x <= 1; x++) {  
        for (int y = -1; y <= 1; y++) {  
            for (int z = -1; z <= 1; z++) {  
                if (x * x + y * y + z * z == 1) {  
                    int posX = WIDTH / 2 + (int)(x * 8 * std::cos(angleY) - z * 4 * std::sin(angleX));  
                    int posY = HEIGHT / 2 + (int)(y * 4 - z * 4 * std::cos(angleX) - x * 8 * std::sin(angleY));  
  
                    if (posX >= 0 && posX < WIDTH && posY >= 0 && posY < HEIGHT) {  
                        std::cout << "\033[" << posY << ";" << posX << "H" << colors[(int)(angleY * 7) % 7] << (x + 'X') << "\033[0m";  
                    }  
                }  
            }  
        }  
    }  
  
    std::cout << std::flush;  
}  
  
int main() {  
    float angleX = 0.0, angleY = 0.0;  
  
    while (true) {  
        drawCube(angleX, angleY);  
  
        // 更新角度以旋转立方体  
        angleX += 0.02;  
        angleY += 0.015;  
  
        // 等待一段时间  
        std::this_thread::sleep_for(std::chrono::milliseconds(20));  
    }  
  
    return 0;  
}

这个代码示例使用C++的标准库和终端控制序列来实现在终端中动态旋转的立方体。它定义了一个drawCube函数来绘制立方体,并在main函数中使用一个无限循环来不断更新和绘制旋转的立方体。在每次循环中,都会更新角度、绘制立方体,并等待一段时间以实现动态效果。你可以根据需要调整角度的增量和等待时间来控制立方体的旋转速度和流畅度。记得在支持ANSI escape codes的终端中运行该代码,以正确显示颜色和立方体的动态旋转效果。

推荐:

ascii-graphics

 

云课五分钟-06一段代码调试debug-AI与人工_数组_10

云课五分钟-06一段代码调试debug-AI与人工_c++_11

cmake_minimum_required(VERSION 3.23.1)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")

project(Ascii-Graphics)



add_executable(${PROJECT_NAME} ascii-graphics.cpp)

add_subdirectory(src)

target_link_libraries(${PROJECT_NAME} agm)
target_link_libraries(${PROJECT_NAME} Camera)
target_link_libraries(${PROJECT_NAME} Lights)
target_link_libraries(${PROJECT_NAME} Mesh)
target_link_libraries(${PROJECT_NAME} Screen)

标签:脚本,颜色,06,AI,代码,float,程序,云课,033
From: https://blog.51cto.com/u_12369060/8718234

相关文章

  • 云课五分钟-07安装Opera失败-版本不匹配
    前篇:云课五分钟-06一段代码调试debug-AI与人工其中已经遇到了一些问题,在和文心一言交互过程中,由于提问不合适,得不到所期望的结果。那么这一节本可以避免,但是为了展示失败,需要将过程录制。 视频:云课五分钟-07安装Opera失败-版本不匹配文本:如果在一开始就询问:对于安装Opera浏览器......
  • 有带AI功能的cms建站系统推荐吗?
    当涉及到带有AI功能的CMS建站系统时,以下是几个流行的选择:Wix:Wix是一个易于使用的网站建设平台,它提供了人工智能设计功能(WixADI),可以根据用户的需求和偏好自动创建网站设计。用户可以回答一些问题,然后WixADI将为他们生成一个定制的网站设计。Squarespace:Squarespace也是一个受......
  • 【Azure Entra ID】如何在中国区获取用户 StrongAuthenticationUserDetails 和 Strong
    问题描述如何在中国区获取用户StrongAuthenticationUserDetails和StrongAuthenticationMethods信息?StrongAuthenticationUserDetails:包含有关用户MFA设置的信息,例如他们首选的身份验证方法、电话号码和电子邮件地址。系统使用此信息在用户尝试访问受保护资源时验证用户的身......
  • skywalking 部署安装 https://blog.csdn.net/swg321321/article/details/129704345
    https://blog.csdn.net/swg321321/article/details/129704345 前言在分布式系统中会出现服务间的相互调用,且服务数量众多。一般会出现如下异常请求出现异常,需要定位定位具体是哪个服务器发生异常,需要对这个请求链路一步一步调试才能确定那个服务出现异常。出现定位异常服务难......
  • 俄罗斯AI突破:Kandinsky-3模型的创新与性能解析
    引言俄罗斯AI研究团队AIForever在开源领域再次取得显著成就,推出了Kandinsky-3模型。这一模型以其11.9B的庞大参数量,不仅刷新了开源文生图模型的规模纪录,也代表了俄罗斯在AI技术方面的重要突破。Kandinsky2.2与Kandinsky-3的演进Kandinsky-3的前身Kandinsky2.2结合了DALL-E2和La......
  • 【论文阅读笔记】【多模态-Referring & Grounding】 Grounded Language-Image Pre-tra
    GLIPCVPR2022(Oral,BestPaperFinalist)读论文思考的问题论文试图解决什么问题?写作背景是什么?问题:如何将视觉-语言预训练技术应用在以目标检测为代表的fine-grainedimageunderstanding上面?如何在增加训练数据的同时,使目标检测模型具有良好的语义理解能力,能......
  • 行行AI直播:跨境出海将“风”起何方? 如何利用AI引领行业变革?
    作为国际贸易发展新业态,中国跨境电商发展速度快,市场潜力大,带动作用强,日益成为外贸高质量发展的新引擎。商务部发布的数据显示,跨境电商占中国货物贸易进出口比重从2015年的1%增长到2022年的5%。今年前三季度跨境电商进出口额达1.7万亿元,同比增长14.4%,占同期货物贸易进出口比重的5.5......
  • AI:逻辑回归
    名回归,实分类尽管名字中有"回归"一词,但逻辑回归实际上是一种分类算法,用于预测离散的类别标签。逻辑回归广泛应用于二分类问题。概率逻辑回归通过计算数据属于各类别的概率来进行分类。因为使用概率进行分类,逻辑回归的输出范围必须限制在0和1之间。Sigmoid逻辑回归使用Sigmoid......
  • linux使用tail,grep查看文件,提示配到二进制文件 (标准输入)
    环境centos7.9背景最近在linux下使用cat,tail等查看日志时会报《配到二进制文件(标准输入)》,然后就没有任何输出,通常这些日志是中文英文混打印的如使用vi进日志后能查看中文格式的内容原因那是因为在Linux系统中,使用tail和grep命令来查找中文格式的log时,遇到《Binaryfil......
  • 在科技行业的热门趋势中,你必定无法忽视日益增长的人工智能大模型的影响力。无论是你热
    在科技行业的热门趋势中,你必定无法忽视日益增长的人工智能大模型的影响力。无论是你热衷浏览的短视频还是见不得的“AI绘画”,或者是你的朋友圈中充斥的“虚拟试衣”和智能聊天软件ChatGPT,这些都在告诉你,AI大模型正在为日常生活带来革命性的改变。今天,我们就来探讨如何使用AI大模型......