慢羊羊的空间

无为,无我,无欲,居下,清虚,自然

C 语言天罡三十六题 - 精英九题(2021-5-29)

该系列共分四篇:

相关说明请参考基础九题

精英九题

19. 天空星

任务:不可思议的图案(二)。

求以下迭代公式的图像:

// x’ = a * x + b * y + e
// y’ = c * x + d * y + f
// p = 概率
// x、y 值范围:0 ~ 1
double a[5] = { 0.35173,  0.35338, 0.5,    0.5154,   0.00364 };
double b[5] = { 0.35537, -0.3537,  0,     -0.0018,   0 };
double c[5] = {-0.35537,  0.35373, 0,      0.00157,  0 };
double d[5] = { 0.35173,  0.35338, 0.5,    0.58795,  0.57832 };
double e[5] = { 0.3545,   0.2879,  0.25,   0.2501,   0.5016 };
double f[5] = { 0.5,      0.1528,  0.462,  0.1054,   0.0606 };
double p[5] = { 0.1773,   0.38,    0.1773, 0.2091,   0.0563 };

公式重复 5 万次。

简单解释一下步骤:

(1) 生成坐标 (x, y),范围是 0 < x < 1,0 < y < 1。

(2) 产生数组下标 n,范围 0 ≤ n ≤ 4。其中 n == 0 的概率为 17.73%,n == 1 的概率为 38%……,每个值的概率由数组 p[5] 指定,p[i] 的值就是 i 的概率。

(3) 计算 x’ = a[n] * x + b[n] * y + e[n],y’ = c[n] * x + d[n] * y + f[n]

(4) 令 x = x',y = y'。

(5) 在 (x, y) 位置画一个红色的点。

(6) 重复执行步骤 (2)~(5) 五万次。

写一个程序模拟该过程以求得最终图案。

注:x、y 坐标是数学坐标,要表示到屏幕上,需要相应放大,且颠倒 y 轴。

20. 天速星

任务:绘制这个传说中的视觉错觉图片(二)。

21. 天异星

任务:一堆反弹的小球(数量可增减)。

屏幕上随机出现 10 个颜色各异的小球,沿 45 度运动,碰到边界反弹。按键盘的 + 号,屏幕上增加一个随机运动且颜色随机的小球。按 - 号,屏幕上减少一个小球。

每增加一个小球,就为这个小球分配所需的存储空间;每减少一个小球,就释放对应的存储空间。

小球数量的下限为 0,上限不限(数量太多时运行会变慢)。

22. 天杀星

任务:模拟 Windows XP 的屏保“变幻线”。

不了解 WinXP 屏保“变幻线”效果的同学,可以[点击这里下载屏保“变幻线”]。下载后解压,直接运行 ssmyst.scr 即可看到效果。

23. 天微星

任务:雪花。

画出下面这样的雪花图案:

这是分形学的一个经典图案:科赫雪花(Koch snowflake)。希望下面这个动画能给你一点启发:

24. 天究星

任务:汉诺塔求解。

汉诺塔(Tower of Hanoi),又称河内塔,是一个源于印度的古老传说:在印度北部的贝拿勒斯圣庙里,一块黄铜板上插着三根宝石针。印度教的主神梵天在创造世界的时候,在其中一根针从下到上地穿好了由大到小的 64 片金片。不论白天黑夜,总有一个僧侣在按照下面的法则移动这些金片:一次只移动一片,不管在哪根针上,小片必须在大片上面。僧侣们预言,当所有的金片都从梵天穿好的那根针上移到另外一根针上时,世界就将在一声霹雳中消灭,而梵塔、庙宇和众生也都将同归于尽。

例如,4 层汉诺塔的求解步骤如下:

请写一个程序,动态演示 8 层汉诺塔的求解过程。

25. 天退星

任务:为绘图板增加“图像处理”功能。

之前“16. 天捷星”的任务是设计一个基于点阵图像的绘图板。在该任务的基础上,增加功能:鼠标在图像上选取一个矩形区域,然后可以对该区域应用图像滤镜,包括:马赛克效果、高斯模糊效果、灰度效果、黑白二值图效果。

26. 天寿星

任务:求解八皇后问题。

八皇后问题(Eight queens),由国际西洋棋棋手马克斯·贝瑟尔于 1848 年提出:在 8×8 格的国际象棋上摆放 8 个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行、同一列或同一斜线上,问有多少种摆法。

请写一个程序,动态演示八皇后问题的求解过程。

27. 天剑星

任务:迷宫求解。

该任务包括两点要求:

(1) 创建一个随机的迷宫,要求该迷宫有且仅有一条从起点通往终点的路线,同时,任何位置都不存在环路。

(2) 自动求解从起点通往终点的路线。

封神九题

https://codebus.cn/yangw/36-tasks-g4

分享到

添加评论