递归火山软件开发平台

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 火山 源码 类库
查看: 3902|回复: 15
打印 上一主题 下一主题

[视窗] 寻找一个算法

[复制链接]

346

主题

1599

帖子

6533

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
6533
QQ
跳转到指定楼层
楼主
发表于 2024-2-17 18:08:51 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
算    圆周 的 一个 点,距离 下一个点  应该是  正向近 还是 逆向 近?
例如:
时钟表盘,当前时针指向  6时,
如果目标 是 3时,那就必须  逆行  6 -1 -1 -1 =3,即3个步骤。
如果目标 是 9时,那就必须  正行  6 +1 +1 +1 =9 ,即 3个步骤。

如果错误算法,将导致步骤增加。例如6时正向到3时,将需要9个步骤。

有什么好的思路吗?
请指教。
专业承接18-98岁xx的心理及生理教育辅导。
回复

使用道具 举报

54

主题

396

帖子

2612

积分

贵宾

Rank: 9Rank: 9Rank: 9

积分
2612
沙发
发表于 2024-2-17 20:04:32 | 只看该作者
顺时针计算一下长度
逆时针在计算一下长度
两个比较一下,哪个短就用哪个
长期从事编程教学课程研发,联系QQ:332690958
回复

使用道具 举报

28

主题

359

帖子

3323

积分

论坛元老

Rank: 8Rank: 8

积分
3323
板凳
发表于 2024-2-17 20:06:13 | 只看该作者
可以根据2个点和圆心的夹角是否小于180
回复

使用道具 举报

37

主题

584

帖子

2855

积分

金牌会员

Rank: 6Rank: 6

积分
2855
地板
发表于 2024-2-17 20:09:10 | 只看该作者
本帖最后由 山梦 于 2024-2-17 20:10 编辑

哈哈,学习
回复

使用道具 举报

73

主题

338

帖子

2015

积分

金牌会员

嘿嘿哈哈

Rank: 6Rank: 6

积分
2015
5#
发表于 2024-2-17 21:18:14 | 只看该作者
学习,哈哈
回复

使用道具 举报

23

主题

146

帖子

1867

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
1867
6#
发表于 2024-2-17 21:44:29 | 只看该作者
CPUCN 发表于 2024-2-17 20:04
顺时针计算一下长度
逆时针在计算一下长度
两个比较一下,哪个短就用哪个

这种好像是最原始的办法!
回复

使用道具 举报

54

主题

396

帖子

2612

积分

贵宾

Rank: 9Rank: 9Rank: 9

积分
2612
7#
发表于 2024-2-17 21:52:37 | 只看该作者
易入门 发表于 2024-2-17 21:44
这种好像是最原始的办法!

这根本不需要什么算法
就是一个简单的判断就搞定了
千万别把简单的问题复杂化。
长期从事编程教学课程研发,联系QQ:332690958
回复

使用道具 举报

6

主题

152

帖子

1474

积分

金牌会员

Rank: 6Rank: 6

积分
1474
8#
发表于 2024-2-18 00:45:19 | 只看该作者
只会初中三角函数判断角度,一开始感觉很简单,想了下好像又没那么简单,干脆写了一下
main.v (127.11 KB, 下载次数: 3)
回复

使用道具 举报

346

主题

1599

帖子

6533

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
6533
QQ
9#
 楼主| 发表于 2024-2-18 01:40:38 | 只看该作者

我滴个天,我捣鼓出来了才发现有兄弟给弄了。

  1. <火山程序 类型 = "通常" 版本 = 1 />

  2. 方法 _取差值 <公开 静态 类型 = 整数 @禁止流程检查 = 真>
  3. 参数 v1 <类型 = 整数>
  4. 参数 v2 <类型 = 整数>
  5. {
  6.     @ while (@<v1> < 0) {@<v1> += 12;}
  7.     @ while (@<v1> > 11){@<v1> -= 12;}
  8.     @ while (@<v2> < 0) {@<v2> += 12;}
  9.     @ while (@<v2> > 11){@<v2> -= 12;}
  10.     @ int v3 = min(abs(@<v1> - @<v2>), 12 - abs(@<v1> - @<v2>));
  11.     @ return @<v1> <= @<v2> ? v3 : -v3;

  12. }
复制代码
专业承接18-98岁xx的心理及生理教育辅导。
回复

使用道具 举报

37

主题

584

帖子

2855

积分

金牌会员

Rank: 6Rank: 6

积分
2855
10#
发表于 2024-2-18 08:59:11 | 只看该作者
<火山程序 类型 = "通常" 版本 = 1 />

方法 _取差值 <公开 静态 类型 = 整数 "">
参数 v1 <类型 = 整数>
参数 v2 <类型 = 整数>
{
    变量 v3 <类型 = 整数>
    如果 (取整数绝对值 (v1 - v2) > 6)
    {
        v3 = 12 - 取整数绝对值 (v1 - v2)
    }
    否则
    {
        v3 = 取整数绝对值 (v1 - v2)
    }
    返回 (v3)




}
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|递归火山软件开发平台 ( 鄂ICP备18029190号 )

GMT+8, 2024-11-23 19:22 , Processed in 0.094274 second(s), 21 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表