代码实践思考:C++和Python

news2024/9/21 2:39:44

起因

在人工智能工具日益强大的今天

如何更高效的进行代码学习


如何借助智能工具实现代码转换?

是否直接可以使用?为何?

如何实现不同的编程语言之间代码的无损转换?


x86与arm

 


C++

云课五分钟-02第一个代码复现-终端甜甜圈C++-CSDN博客

#include <stdio.h>
#include <math.h>
#include <cstring>
#include <unistd.h>
 
int main() {
    float A = 0, B = 0;
    float i, j;
    int k;
    float z[1760];
    char b[1760];
    printf("\x1b[2J");
    for (;;) {
        memset(b, 32, 1760);
        memset(z, 0, 7040);
        for (j = 0; j < 6.28; j += 0.07) {
            for (i = 0; i < 6.28; i += 0.02) {
                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);
                if (22 > y && y > 0 && x > 0 && 80 > x && D > z[o]) {
                    z[o] = D;
                    b[o] = ".,-~:;=!*#$@"[N > 0 ? N : 0];
                }
            }
        }
        printf("\x1b[H");
        for (k = 0; k < 1761; k++) {
            putchar(k % 80 ? b[k] : 10);
            A += 0.00004;
            B += 0.00002;
        }
        usleep(30000);
    }
    return 0;
}

g++ 


Python

会体言一心文-码代-4202-CSDN博客

import math  
import numpy as np  
import time  
import sys  
  
def main():  
    A = 0.0  
    B = 0.0  
    z = np.zeros(1760)  
    b = np.array([' '] * 1760, dtype='<U1')  # Unicode character array  
  
    while True:  
        b.fill(' ')  # Fill the array with spaces  
        z.fill(0)    # Fill z with zeros  
  
        for j in np.arange(0, 6.28, 0.07):  
            for i in np.arange(0, 6.28, 0.02):  
                c = math.sin(i)  
                d = math.cos(j)  
                e = math.sin(A)  
                f = math.sin(j)  
                g = math.cos(A)  
                h = d + 2  
                D = 1.0 / (c * h * e + f * g + 5)  
                l = math.cos(i)  
                m = math.cos(B)  
                n = math.sin(B)  
                t = c * h * g - f * e  
                x = int(40 + 30 * D * (l * h * m - t * n))  
                y = int(12 + 15 * D * (l * h * n + t * m))  
                o = x + 80 * y  
                N = int(8 * ((f * e - c * d * g) * m - c * d * e - f * g - l * d * n))  
  
                if 0 < y < 22 and 0 < x < 80 and D > z[o]:  
                    z[o] = D  
                    b[o] = ".,-~:;=!*#$@"[N] if N > 0 else '.'  
  
        sys.stdout.write('\x1b[H')  
        for k in range(1760):  
            sys.stdout.write(b[k] if k % 80 else '\n')  
            A += 0.00004  
            B += 0.00002  
        sys.stdout.flush()  
        time.sleep(0.03)  
  
if __name__ == '__main__':  
    main()

python donut.py


快速实现

从云课五分钟到五秒钟焦虑的甜甜圈向前冲-CSDN博客

echo "终端焦虑的甜甜圈"
 
git clone https://gitcode.net/ZhangRelay/donut.git
 
cd ~/donut
 
g++ colordonut.cpp -o donut
 
./donut
 
echo "突破封印的甜甜圈"

这段代码是一个简单的动画程序,它使用了数学函数(如正弦和余弦)来生成一个动态变化的图案,并通过终端或控制台窗口显示。这个程序可能看起来有些复杂,但我们可以逐步解析它的工作原理。

程序流程解析

  1. 初始化变量
    • A 和 B 是两个浮点数,用作动画变化的参数。
    • i 和 j 是循环变量,用于遍历 0 到 6.28(即 2π)的范围,代表角度的变化。
    • k 用于遍历数组。
    • z[1760] 是一个浮点数数组,用于存储每个点上的最大深度值(或亮度)。
    • b[1760] 是一个字符数组,用于存储每个点对应的字符,这些字符将组成显示的图案。
  2. 清除屏幕
    • 使用 printf("\x1b[2J"); 清除终端屏幕。
  3. 双重循环
    • 外层循环 j 和内层循环 i 遍历不同的角度,以计算每个点的位置和深度(或亮度)。
    • 使用正弦和余弦函数计算各种参数,这些参数用于确定每个点在屏幕上的位置和亮度。
  4. 计算和更新屏幕内容
    • 对于每个点 (x, y),计算其深度和对应的字符。
    • 如果该点的深度大于之前存储的深度(z[o]),则更新该点的深度和字符。
  5. 显示图案
    • 使用 printf("\x1b[H"); 将光标移动到屏幕左上角。
    • 遍历 b 数组,将每个字符输出到终端,并在每80个字符后输出换行符以换行。
    • 同时,更新 A 和 B 的值,为下一帧做准备。
  6. 延时
    • 使用 usleep(30000); 在每帧之间添加延时,以控制动画的速度。

图案的生成

图案的生成基于一系列复杂的数学计算,这些计算涉及到正弦和余弦函数的组合,以及这些函数值的乘法和加法操作。最终,每个点的位置 (x, y) 和亮度(通过 D 和 N 计算)决定了该点在图案中的表示(通过字符数组 b)。

注意事项

  • 这段代码使用了 ANSI 转义序列来清除屏幕和移动光标,这意味着它只在支持这些转义序列的终端中有效。
  • 由于使用了浮点数和循环的增量非常小,这个动画可以生成非常平滑和详细的图案。
  • 程序的性能可能受到终端处理速度和计算机性能的影响。
  • b[o] = ".,-~:;=!*#$@"[N > 0 ? N : 0]; 这行代码通过 N 的值来选择字符,但需要注意的是,N 的计算可能产生超出索引范围的值,但这里通过 N > 0 ? N : 0 确保索引不会越界(尽管这种方式可能导致图案的某些部分看起来不够细致)。然而,由于 N 的计算复杂且依赖于多个正弦和余弦函数的组合,它很可能在大多数情况下都能产生有效的索引值。

这段Python代码是一个使用NumPy和math库在终端中生成动态图案的脚本。它通过计算每个点的位置和亮度(或深度),并使用不同的字符来表示这些亮度值,从而在终端上创建了一个动画效果。下面是代码的主要部分和它们的作用:

  1. 初始化变量
    • A 和 B 是两个浮点数,用作动画中的参数,它们随时间变化以产生动态效果。
    • z 是一个NumPy数组,用于存储每个可能位置上的最大深度值。
    • b 是一个字符类型的NumPy数组,用于存储每个位置对应的字符,这些字符将组成显示的图案。
  2. 双重循环
    • 外层循环遍历 j(从0到2π,步长为0.07),内层循环遍历 i(同样从0到2π,但步长为0.02)。这两个循环共同决定了图案中每个点的角度位置。
  3. 计算每个点的位置和亮度
    • 使用math.sinmath.cos函数计算各种参数,这些参数与AB以及当前的ij值有关。
    • 通过一系列的数学运算,计算出每个点的位置(x, y)和亮度D
    • 亮度D通过公式计算得出,并用于确定字符的索引,该索引从字符串".,-~:;=!*#$@"中选择字符。
  4. 更新屏幕内容
    • 如果计算出的点(x, y)在有效范围内(即屏幕内),并且其亮度D大于之前存储在该位置的亮度,则更新z[o]b[o]
    • 这里,oxy的线性索引,用于将二维位置映射到一维数组中。
  5. 显示图案
    • 使用sys.stdout.write将光标移动到屏幕左上角,并遍历b数组,将每个字符输出到终端。
    • 每输出80个字符后,输出一个换行符以换行。
    • 在输出过程中,同时更新AB的值,为下一帧做准备。
    • 使用sys.stdout.flush()确保所有输出都被立即发送到终端。
  6. 延时
    • 使用time.sleep(0.03)在每帧之间添加延时,以控制动画的速度。
  7. 循环
    • 整个过程被包裹在一个无限循环中,因此动画将一直运行,直到被外部方式(如用户中断)停止。

注意:

  • 这个脚本使用了ANSI转义序列\x1b[H来将光标移动到屏幕左上角,这意味着它只能在支持这些转义序列的终端中正常工作。
  • 字符数组b使用了Unicode字符类型(<U1),这确保了即使在不同的终端和编码设置下,字符也能正确显示。
  • 代码中的if N > 0 else '.'确保即使N计算出的索引超出字符串".,-~:;=!*#$@"的长度,也会使用.作为默认值,避免了潜在的索引越界问题。然而,由于N的计算方式,这种情况在实际应用中不太可能发生。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1957160.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

GEE错误——文件导出的时候出现Error: User memory limit exceeded. (Error code: 3)

错误简介 在试图将我的表导出到资产文件夹,但出现了内存错误。我不知道我做错了什么。相同的脚本适用于其他年份。文件导出的时候出现Error: User memory limit exceeded. (Error code: 3) 函数 reduceToVectors(reducer, geometry, scale, geometryType, eightConnected,…

雪花算法的一些问题解析

前言 最近做项目&#xff0c;有些老旧项目&#xff0c;需要生成分布式唯一ID&#xff0c;不允许重复&#xff0c;此时如果要对其他中间件和数据库依赖小&#xff0c;那么就需要一套固定的ID生成规则&#xff0c;雪花算法就正当合适&#xff0c;当时Twitter就是用来存储数据库I…

服务器主机安全有多重要

一、什么是主机安全 主机安全&#xff0c;作为维护计算机系统核心安全的基石&#xff0c;旨在全面捍卫硬件与软件免受任何未经授权的侵扰、篡改、数据泄露等安全挑战。这一过程不仅聚焦于数据存储与处理的保密性、完整性及可用性&#xff0c;还深入至硬件构造、固件层、以及系…

利用C++11的异步操作实现一个线程池

利用C11的异步操作实现一个线程池 利用C11的异步操作实现一个线程池 介绍关于一些代码细节的解释测试 介绍 基于线程池执行任务的时候&#xff0c;入口函数内部执行逻辑是固定的&#xff0c;因此选择std::packaged_task加上std::future的组合来实现。 具体使用可以见我上一…

2025年第7届图像处理和机器视觉国际会议 (IPMV 2025)即将召开!

2025年第7届图像处理和机器视觉国际会议 (IPMV 2025)将于2025年1月10日-12日在中国香港举行。图像处理和机器视觉作为当代信息技术领域的重要分支&#xff0c;不仅推动了人工智能技术的飞速发展&#xff0c;也为各行各业带来了革命性的变革。本次会议旨在汇聚全球图像处理和机器…

极致的灵活度满足工程美学:用Vue Flow绘制一个完美流程图

目录 极致的灵活度满足工程美学&#xff1a;用Vue Flow绘制一个完美流程图 一、环境要求 二、初识Vue Flow 2.1、安装Vue Flow 2.2、Vue Flow构成 2.3、一个小坑 2.4、入门案例 三、Vue Flow优秀的自定义功能 3.1、引入 3.2、节点与连线的自定义 ①打样&#xff08;…

MySQL - 通过SQL语句导出数据到CSV文件

在 MySQL 中&#xff0c;可以使用 SELECT ... INTO OUTFILE 语句将查询结果导出为 CSV 文件&#xff0c;然后再将 CSV 文件转换为 Excel 格式。以下是一个示例&#xff1a; SELECT column1, column2, column3 INTO OUTFILE /path/to/file.csv FIELDS TERMINATED BY , ENCLO…

git 迁移仓库的方法

git Git是一个开源的分布式版本控制系统&#xff0c;由Linus Torvalds在2005年创建&#xff0c;用于有效、高速地处理从小到大的项目管理。它最初是为Linux内核开发而设计的&#xff0c;但很快被广泛用于各种项目。 以下是Git的一些主要特性&#xff1a; 分布式架构&#xff…

接近传感器 - 从零开始认识各种传感器【第十七期】

1、什么是接近传感器 接近传感器常被用于检测物体的距离或者是否有物体靠近。它通常发射电磁场或电磁波&#xff08;例如红外线&#xff09;来探测物体的位置。当有物体靠近时&#xff0c;传感器会接收到反射的电磁波信号&#xff0c;从而触发相应的电路或者控制系统。它广泛应…

Helm(二)

一、Chart模板流程控制if_with_range 1.if 修改values.yaml cat > values.yaml <<EOF myname: yeunyi service: type: ClusterIP port: 80 myport: 8080 EOF 修改service.yaml cat > templates/service.yaml <<EOF apiVersion: v1 kind: Service met…

TC8:SOMEIP_ETS_007-008

SOMEIP_ETS_007: echoBitfields 目的 检查位字段是否能够被顺利地发送和接收。 测试步骤 Tester:创建SOME/IP消息Tester:使用method echoBitfields发送SOME/IP消息DUT:返回method响应消息,其中位字段的顺序与请求相比是反向的期望结果 3、DUT:返回method响应消息,其中位…

微软蓝屏”事件暴露了网络安全哪些问题?

&#x1f4e2;博客主页&#xff1a;https://blog.csdn.net/2301_779549673 &#x1f4e2;欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1f4dd; 如有错误敬请指正&#xff01; &#x1f4e2;本文由 JohnKi 原创&#xff0c;首发于 CSDN&#x1f649; &#x1f4e2;未来很长&#…

探秘数字孪生技术在智慧校园的应用

在当今教育信息化的浪潮中&#xff0c;数字孪生技术逐渐成为智慧校园建设的重要助推器。这一技术通过构建真实世界的数字化映像&#xff0c;不仅提升了校园管理的效率&#xff0c;更为师生的日常学习生活提供了全新的体验。首先&#xff0c;数字孪生可以将校园内的各类设施、环…

七夕告白攻略:天使智能体教你如何设计完美表白卡片!独属程序员地浪漫!

文章目录 &#x1f495;七夕浪漫告白天使&#x1f495;&#x1f495;浪漫风格的表白卡片设计&#x1f495;&#x1f495;甜蜜风格的表白卡片设计&#x1f495;&#x1f495;温馨风格的表白卡片设计&#x1f495;&#x1f495;幽默风格的表白卡片设计&#x1f495;&#x1f495;…

使用java读取本地文件内容并输出,java读取文件内容,节省内存开销

java使用FileInputStream读取本地文件内容 java使用Stream流读取本地文件内容 1.先在自己笔记本选一个目录创建文件&#xff0c;这里就选择在D盘创建一个 word.txt文件 随意输入内容例如 2.直接来直接复制代码运行 import java.io.*; import java.nio.file.Files; import ja…

rust sip电话(基于tauri 、pjsip库)

本文尝试下rust 的tauri 桌面运用 原因在于体积小 1、pjsip 提供了rust 接口官方的 rust demo 没编译出来 在git找了个sip-phone-rs-master https://github.com/Charles-Schleich/sip-phone-rs 可以自己编译下pjsip lib库替换该项目的lib 2、创建一个tauri demo 引用 [depe…

佐糖v1.7.2高级版,全能型AI图片处理App!

经常刷抖音的小伙伴应该都遇见过这种吧&#xff0c;修复老张片一张10块钱&#xff0c;老照片还原高清...这种看似很高端很神器&#xff0c;你以为真的有画师专门帮你来修复老张片吗&#xff1f;&#xff01;怎么可能...都是现在AI技术识别照片信息&#xff0c;然后给你生成的。…

全国禁毒知识竞赛--“我是答题王”竞赛规则

全国禁毒知识竞赛共分四轮&#xff0c;通过6支队伍最终分数高低&#xff0c;角逐出团队一、二、三等奖。第四轮各队派出1名代表进行车轮挑战&#xff0c;最终决出本届的“我是答题王”一、二、三等奖和个人答题王。 环节一&#xff1a;火线缉毒&a…

基于CNN的手写汉字识别系统的设计与实现

1 项目介绍 1.1 摘要 随着数字化技术的快速发展&#xff0c;手写汉字识别技术在多个领域展现出广泛的应用前景。为了提升手写汉字识别的准确率和泛化能力&#xff0c;本文通过构建一个基于卷积神经网络&#xff08;CNN&#xff09;的手写汉字识别系统&#xff0c;以应对不同书…

Nginx系列-11 HTTP消息处理流程

背景 了解Nginx处理HTTP请求的11个阶段&#xff0c;有助于理解和配置nginx、自定义模块、基于lua模块自定义功能。按如下配置&#xff0c;执行"curl http://localhost:8001/query/test.html"&#xff0c;如果读者对结果不是很确定&#xff0c;建议阅读本文。 serve…