• Random Cube Algorithm


    本来我就是魔方爱好者,所有是魔友当然少不了pc端的计时器,以下是魔方打乱公式算法代码,语言:c#;

    public static string rndCube( int max ); 是获取随机打算字符串的入口函数;

    max就是打乱长度了。

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    ////
    ////code by:chouhom
    ////
    namespace ConsoleApplication1
    {
        class Program
        {
            static string[] rndMove = new string[] { "R", "L", "F", "B", "U", "D" };
            static List<string> arr = new List<string>();
            static string[] Arr;
            static Random r = new Random();
            /// <summary>
            /// slice
            /// </summary>
            /// <param name="move1"></param>
            /// <param name="move2"></param>
            /// <returns></returns>
            public static bool slice(string move1, string move2)
            {
                int i = Convert.ToInt32(move1);
                int k = Convert.ToInt32(move2);
                if (i / 2 == k / 2)
                    return true;
                else return false;
            }
            /// <summary>
            /// random filter
            /// </summary>
            /// <param name="tmpRnd">int.tostring</param>
            /// <returns>false is yes</returns>
            public static bool checkmove(string tmpRnd)
            {
                Arr = arr.ToArray();
                if (Arr.Length > 0 && tmpRnd == Arr[Arr.Length - 1])
                    return true;
                else
                {
                    if (Arr.Length > 1 && tmpRnd == Arr[Arr.Length - 2] && slice(tmpRnd, Arr[Arr.Length - 1]))
                        return true;
                    else return false;
                }
            }
            /// <summary>
            /// create random cube string
            /// </summary>
            /// <param name="max">length</param>
            /// <returns>randomCube string</returns>
            public static string rndCube(int max)
            {
                string move = "";
                string tmpRnd;
                max++;
                for (int i = 0; i < max; i++)
                {
                    do { 
                        tmpRnd = r.Next(6).ToString(); 
                    }
                    while (checkmove(tmpRnd));
                    arr.Add(tmpRnd);
                }
                for (int i = 0; i < Arr.Length; i++)
                {
                    int tmp = r.Next(5);
                    if (tmp == 4) { move += rndMove[Convert.ToInt32(Arr[i])] + "2 "; }
                    else if (tmp == 2 || tmp == 3)
                    { move += rndMove[Convert.ToInt32(Arr[i])] + "' "; }
                    else
                    { move += rndMove[Convert.ToInt32(Arr[i])] + " "; }
                }
                return move;
            }
            static void Main(string[] args)
            {
                Console.Write(rndCube(15));
                Console.ReadKey();
            }
        }
    }
  • 相关阅读:
    5个步骤迅速脱离低薪族
    phpdebugapd调试器
    重置zend studio 默认设置的方法
    CMD用什么命令可以删除服务?
    PHP自动识别字符集并完成转码
    一只赖蛤蟆写给白天鹅的情书
    遇到的问题
    Sql 注入漏洞
    分页技术
    flex学习记录——加载图片
  • 原文地址:https://www.cnblogs.com/homchou/p/2861784.html
Copyright © 2020-2023  润新知