跑在终端里的甜甜圈代码(顺祝码友六一快乐)

2024-06-01 17:52

本文主要是介绍跑在终端里的甜甜圈代码(顺祝码友六一快乐),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

 

老规矩,先上源码 

#include <stdint.h>
#include <stdio.h>
#include <string.h>
#include <unistd.h>#define R(mul,shift,x,y) \_=x; \x -= mul*y>>shift; \y += mul*_>>shift; \_ = 3145728-x*x-y*y>>11; \x = x*_>>10; \y = y*_>>10;int8_t b[1760], z[1760];int main() {int sA=1024,cA=0,sB=1024,cB=0,_;for (;;) {memset(b, 32, 1760);  // text buffermemset(z, 127, 1760);   // z bufferint sj=0, cj=1024;for (int j = 0; j < 90; j++) {int si = 0, ci = 1024;  // sine and cosine of angle ifor (int i = 0; i < 324; i++) {int R1 = 1, R2 = 2048, K2 = 5120*1024;int x0 = R1*cj + R2,x1 = ci*x0 >> 10,x2 = cA*sj >> 10,x3 = si*x0 >> 10,x4 = R1*x2 - (sA*x3 >> 10),x5 = sA*sj >> 10,x6 = K2 + R1*1024*x5 + cA*x3,x7 = cj*si >> 10,x = 40 + 30*(cB*x1 - sB*x4)/x6,y = 12 + 15*(cB*x4 + sB*x1)/x6,N = (-cA*x7 - cB*((-sA*x7>>10) + x2) - ci*(cj*sB >> 10) >> 10) - x5 >> 7;int o = x + 80 * y;int8_t zz = (x6-K2)>>15;if (22 > y && y > 0 && x > 0 && 80 > x && zz < z[o]) {z[o] = zz;b[o] = ".,-~:;=!*#$@"[N > 0 ? N : 0];}R(5, 8, ci, si)  // rotate i}R(9, 7, cj, sj)  // rotate j}for (int k = 0; 1761 > k; k++)putchar(k % 80 ? b[k] : 10);R(5, 7, cA, sA);R(5, 8, cB, sB);usleep(15000);printf("\x1b[23A");}
}

然后

gcc math.c -o math
./math

甜甜圈,启动!


感兴趣的可以去研究背后的数学知识,地址:donut.c without a math library

这篇关于跑在终端里的甜甜圈代码(顺祝码友六一快乐)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1021709

相关文章

idea的终端(Terminal)cmd的命令换成linux的命令详解

《idea的终端(Terminal)cmd的命令换成linux的命令详解》本文介绍IDEA配置Git的步骤:安装Git、修改终端设置并重启IDEA,强调顺序,作为个人经验分享,希望提供参考并支持脚本之... 目录一编程、设置前二、前置条件三、android设置四、设置后总结一、php设置前二、前置条件

Python实现终端清屏的几种方式详解

《Python实现终端清屏的几种方式详解》在使用Python进行终端交互式编程时,我们经常需要清空当前终端屏幕的内容,本文为大家整理了几种常见的实现方法,有需要的小伙伴可以参考下... 目录方法一:使用 `os` 模块调用系统命令方法二:使用 `subprocess` 模块执行命令方法三:打印多个换行符模拟

Python实现MQTT通信的示例代码

《Python实现MQTT通信的示例代码》本文主要介绍了Python实现MQTT通信的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一... 目录1. 安装paho-mqtt库‌2. 搭建MQTT代理服务器(Broker)‌‌3. pytho

MySQL进行数据库审计的详细步骤和示例代码

《MySQL进行数据库审计的详细步骤和示例代码》数据库审计通过触发器、内置功能及第三方工具记录和监控数据库活动,确保安全、完整与合规,Java代码实现自动化日志记录,整合分析系统提升监控效率,本文给大... 目录一、数据库审计的基本概念二、使用触发器进行数据库审计1. 创建审计表2. 创建触发器三、Java

Java中调用数据库存储过程的示例代码

《Java中调用数据库存储过程的示例代码》本文介绍Java通过JDBC调用数据库存储过程的方法,涵盖参数类型、执行步骤及数据库差异,需注意异常处理与资源管理,以优化性能并实现复杂业务逻辑,感兴趣的朋友... 目录一、存储过程概述二、Java调用存储过程的基本javascript步骤三、Java调用存储过程示

Visual Studio 2022 编译C++20代码的图文步骤

《VisualStudio2022编译C++20代码的图文步骤》在VisualStudio中启用C++20import功能,需设置语言标准为ISOC++20,开启扫描源查找模块依赖及实验性标... 默认创建Visual Studio桌面控制台项目代码包含C++20的import方法。右键项目的属性:

MySQL数据库的内嵌函数和联合查询实例代码

《MySQL数据库的内嵌函数和联合查询实例代码》联合查询是一种将多个查询结果组合在一起的方法,通常使用UNION、UNIONALL、INTERSECT和EXCEPT关键字,下面:本文主要介绍MyS... 目录一.数据库的内嵌函数1.1聚合函数COUNT([DISTINCT] expr)SUM([DISTIN

在Linux终端中统计非二进制文件行数的实现方法

《在Linux终端中统计非二进制文件行数的实现方法》在Linux系统中,有时需要统计非二进制文件(如CSV、TXT文件)的行数,而不希望手动打开文件进行查看,例如,在处理大型日志文件、数据文件时,了解... 目录在linux终端中统计非二进制文件的行数技术背景实现步骤1. 使用wc命令2. 使用grep命令

Java实现自定义table宽高的示例代码

《Java实现自定义table宽高的示例代码》在桌面应用、管理系统乃至报表工具中,表格(JTable)作为最常用的数据展示组件,不仅承载对数据的增删改查,还需要配合布局与视觉需求,而JavaSwing... 目录一、项目背景详细介绍二、项目需求详细介绍三、相关技术详细介绍四、实现思路详细介绍五、完整实现代码

Go语言代码格式化的技巧分享

《Go语言代码格式化的技巧分享》在Go语言的开发过程中,代码格式化是一个看似细微却至关重要的环节,良好的代码格式化不仅能提升代码的可读性,还能促进团队协作,减少因代码风格差异引发的问题,Go在代码格式... 目录一、Go 语言代码格式化的重要性二、Go 语言代码格式化工具:gofmt 与 go fmt(一)