魔方吧·中文魔方俱乐部

标题: 魔方计时器的打乱公式是怎么来的?? [打印本页]

作者: lpx152301    时间: 2009-5-8 16:00:21     标题: 魔方计时器的打乱公式是怎么来的??

如题,是完全随机的(要排除连续随出相同或连续R,L,R等吧),还是有些其他方法使之打的很乱??
还又正式比赛的打乱也一样吗??
作者: 會夢銀玥    时间: 2009-5-8 16:11:45

这个真不知道
作者: wpb93    时间: 2009-5-8 16:16:40

稍等,看我到家后能不能找到源代码
作者: 笑毅    时间: 2009-5-8 16:21:16

貌似是是随机的,要不然不好编程的
作者: 系统屏蔽    时间: 2009-5-8 16:27:04

提示: 作者被禁止或删除 内容自动屏蔽
作者: ursace    时间: 2009-5-8 17:07:22

是随机,但有规则,不能同时出类似RRRUUU一类的

而且按打乱公式打乱后,会检查一下此时魔方的状态,如果不够乱,就重新打乱
作者: lpx152301    时间: 2009-5-8 17:23:57

哦,这样                              

作者: rrrevery    时间: 2009-5-8 17:41:48

有兴趣研究的我可以把我的计时器的大乱代码发出来,没有废步的,不过支持之234567阶
作者: juventus66    时间: 2009-5-8 18:46:07

原帖由 ursace 于 2009-5-8 17:07 发表
是随机,但有规则,不能同时出类似RRRUUU一类的

而且按打乱公式打乱后,会检查一下此时魔方的状态,如果不够乱,就重新打乱

原来如此,学习了
作者: aben306    时间: 2009-5-8 18:54:25

嗯,是随机的.总之出来之后,是非常匀称的,遵循一定的规则.
作者: rrrevery    时间: 2009-5-8 19:51:21

我写的打乱步骤核心部分代码。
  Randomize;
  move := '';
  i := 0;
  while (i < edRnd.IntValue) do
  begin
    ti := Round(Random(max));
    if (i > 0) and (ti = arr[i - 1]) then
      Continue;
    if (i > 1) and (ti = arr[i - 2]) and ((ti div 3) = (arr[i - 2] div 3)) then
      Continue;
    arr := ti;
    Inc(i);
  end;
  for i := 0 to edRnd.IntValue - 1 do
  begin
    ti := Floor(Random(max - 1));
    if ti = 4 then
      move := move + asMoves[arr] + '2'
    else if (ti = 2) or (ti = 3) then
      move := move + asMoves[arr] + #39
    else
      move := move + asMoves[arr];
    move := move + ' ';
  end;
作者: lpx152301    时间: 2009-5-8 20:38:35

惭愧,代码不太懂啊,只有一点C和VB的基础,没注释不行…不过基本明白是什么意思了。只是之前觉得公式打的有时不太乱,还有那个手机上用的flash版的cuberhelper,竟然会出现RRLL之类的错误。期待一个好用的手机计时器
作者: kexin_xiao    时间: 2009-5-8 21:33:29

很多规则和特殊情况在编程的时候就要想到




欢迎光临 魔方吧·中文魔方俱乐部 (http://bbs.mf8-china.com/) Powered by Discuz! X2