diff options
author | chai <chaifix@163.com> | 2021-06-21 15:53:42 +0800 |
---|---|---|
committer | chai <chaifix@163.com> | 2021-06-21 15:53:42 +0800 |
commit | cc475a8b16b0e9323623c6532e114dceeb64353a (patch) | |
tree | 0d57c6afd973ed03a66e614038d9c9ef1acb790b /Assets/Algorithms | |
parent | 2283e4eda5ed0ef8760bef495b6ca60297b36404 (diff) |
+recursions
Diffstat (limited to 'Assets/Algorithms')
18 files changed, 112 insertions, 373 deletions
diff --git a/Assets/Algorithms/01_Generic.meta b/Assets/Algorithms/01_Generic.meta deleted file mode 100644 index 38fc722..0000000 --- a/Assets/Algorithms/01_Generic.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 49e7f1e9210c36f459a8579d9d1706e2 -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Algorithms/01_Generic/说明.txt b/Assets/Algorithms/01_Generic/说明.txt deleted file mode 100644 index e69de29..0000000 --- a/Assets/Algorithms/01_Generic/说明.txt +++ /dev/null diff --git a/Assets/Algorithms/01_Generic/说明.txt.meta b/Assets/Algorithms/01_Generic/说明.txt.meta deleted file mode 100644 index e6615bd..0000000 --- a/Assets/Algorithms/01_Generic/说明.txt.meta +++ /dev/null @@ -1,7 +0,0 @@ -fileFormatVersion: 2 -guid: 090f934784733db4bbd28b04c857cda4 -TextScriptImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Algorithms/02_Geometry.meta b/Assets/Algorithms/02_Geometry.meta deleted file mode 100644 index 3275f64..0000000 --- a/Assets/Algorithms/02_Geometry.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 23d9820c1cb98cb43887b1241fd0afec -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Algorithms/02_Geometry/说明.txt b/Assets/Algorithms/02_Geometry/说明.txt deleted file mode 100644 index e69de29..0000000 --- a/Assets/Algorithms/02_Geometry/说明.txt +++ /dev/null diff --git a/Assets/Algorithms/02_Geometry/说明.txt.meta b/Assets/Algorithms/02_Geometry/说明.txt.meta deleted file mode 100644 index 8308a43..0000000 --- a/Assets/Algorithms/02_Geometry/说明.txt.meta +++ /dev/null @@ -1,7 +0,0 @@ -fileFormatVersion: 2 -guid: 4175678562e71954aae8ee2bb15e49e4 -TextScriptImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Algorithms/03_Search.meta b/Assets/Algorithms/03_Search.meta deleted file mode 100644 index aff6d3a..0000000 --- a/Assets/Algorithms/03_Search.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: bc4e655f4044bf54d93829b52b707dcc -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Algorithms/03_Search/说明.txt b/Assets/Algorithms/03_Search/说明.txt deleted file mode 100644 index e69de29..0000000 --- a/Assets/Algorithms/03_Search/说明.txt +++ /dev/null diff --git a/Assets/Algorithms/04_Pathfinding.meta b/Assets/Algorithms/04_Pathfinding.meta deleted file mode 100644 index e1dfa1f..0000000 --- a/Assets/Algorithms/04_Pathfinding.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 397d06bf756e6f24db1de7ae08b644f0 -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Algorithms/04_Pathfinding/AStarPathfinding.cs b/Assets/Algorithms/04_Pathfinding/AStarPathfinding.cs deleted file mode 100644 index 80ba51d..0000000 --- a/Assets/Algorithms/04_Pathfinding/AStarPathfinding.cs +++ /dev/null @@ -1,18 +0,0 @@ -using System.Collections;
-using System.Collections.Generic;
-using UnityEngine;
-
-public class AStarPathfinding : MonoBehaviour
-{
- // Start is called before the first frame update
- void Start()
- {
-
- }
-
- // Update is called once per frame
- void Update()
- {
-
- }
-}
diff --git a/Assets/Algorithms/04_Pathfinding/PathFinding.unity b/Assets/Algorithms/04_Pathfinding/PathFinding.unity deleted file mode 100644 index afeda4c..0000000 --- a/Assets/Algorithms/04_Pathfinding/PathFinding.unity +++ /dev/null @@ -1,300 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!29 &1 -OcclusionCullingSettings: - m_ObjectHideFlags: 0 - serializedVersion: 2 - m_OcclusionBakeSettings: - smallestOccluder: 5 - smallestHole: 0.25 - backfaceThreshold: 100 - m_SceneGUID: 00000000000000000000000000000000 - m_OcclusionCullingData: {fileID: 0} ---- !u!104 &2 -RenderSettings: - m_ObjectHideFlags: 0 - serializedVersion: 9 - m_Fog: 0 - m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} - m_FogMode: 3 - m_FogDensity: 0.01 - m_LinearFogStart: 0 - m_LinearFogEnd: 300 - m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1} - m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1} - m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1} - m_AmbientIntensity: 1 - m_AmbientMode: 0 - m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} - m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0} - m_HaloStrength: 0.5 - m_FlareStrength: 1 - m_FlareFadeSpeed: 3 - m_HaloTexture: {fileID: 0} - m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0} - m_DefaultReflectionMode: 0 - m_DefaultReflectionResolution: 128 - m_ReflectionBounces: 1 - m_ReflectionIntensity: 1 - m_CustomReflection: {fileID: 0} - m_Sun: {fileID: 0} - m_IndirectSpecularColor: {r: 0, g: 0, b: 0, a: 1} - m_UseRadianceAmbientProbe: 0 ---- !u!157 &3 -LightmapSettings: - m_ObjectHideFlags: 0 - serializedVersion: 12 - m_GIWorkflowMode: 1 - m_GISettings: - serializedVersion: 2 - m_BounceScale: 1 - m_IndirectOutputScale: 1 - m_AlbedoBoost: 1 - m_EnvironmentLightingMode: 0 - m_EnableBakedLightmaps: 1 - m_EnableRealtimeLightmaps: 0 - m_LightmapEditorSettings: - serializedVersion: 12 - m_Resolution: 2 - m_BakeResolution: 40 - m_AtlasSize: 1024 - m_AO: 0 - m_AOMaxDistance: 1 - m_CompAOExponent: 1 - m_CompAOExponentDirect: 0 - m_ExtractAmbientOcclusion: 0 - m_Padding: 2 - m_LightmapParameters: {fileID: 0} - m_LightmapsBakeMode: 1 - m_TextureCompression: 1 - m_FinalGather: 0 - m_FinalGatherFiltering: 1 - m_FinalGatherRayCount: 256 - m_ReflectionCompression: 2 - m_MixedBakeMode: 2 - m_BakeBackend: 1 - m_PVRSampling: 1 - m_PVRDirectSampleCount: 32 - m_PVRSampleCount: 512 - m_PVRBounces: 2 - m_PVREnvironmentSampleCount: 256 - m_PVREnvironmentReferencePointCount: 2048 - m_PVRFilteringMode: 1 - m_PVRDenoiserTypeDirect: 1 - m_PVRDenoiserTypeIndirect: 1 - m_PVRDenoiserTypeAO: 1 - m_PVRFilterTypeDirect: 0 - m_PVRFilterTypeIndirect: 0 - m_PVRFilterTypeAO: 0 - m_PVREnvironmentMIS: 1 - m_PVRCulling: 1 - m_PVRFilteringGaussRadiusDirect: 1 - m_PVRFilteringGaussRadiusIndirect: 5 - m_PVRFilteringGaussRadiusAO: 2 - m_PVRFilteringAtrousPositionSigmaDirect: 0.5 - m_PVRFilteringAtrousPositionSigmaIndirect: 2 - m_PVRFilteringAtrousPositionSigmaAO: 1 - m_ExportTrainingData: 0 - m_TrainingDataDestination: TrainingData - m_LightProbeSampleCountMultiplier: 4 - m_LightingDataAsset: {fileID: 0} - m_LightingSettings: {fileID: 0} ---- !u!196 &4 -NavMeshSettings: - serializedVersion: 2 - m_ObjectHideFlags: 0 - m_BuildSettings: - serializedVersion: 2 - agentTypeID: 0 - agentRadius: 0.5 - agentHeight: 2 - agentSlope: 45 - agentClimb: 0.4 - ledgeDropHeight: 0 - maxJumpAcrossDistance: 0 - minRegionArea: 2 - manualCellSize: 0 - cellSize: 0.16666667 - manualTileSize: 0 - tileSize: 256 - accuratePlacement: 0 - maxJobWorkers: 0 - preserveTilesOutsideBounds: 0 - debug: - m_Flags: 0 - m_NavMeshData: {fileID: 0} ---- !u!1 &490219957 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 490219960} - - component: {fileID: 490219959} - - component: {fileID: 490219958} - m_Layer: 0 - m_Name: Main Camera - m_TagString: MainCamera - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!81 &490219958 -AudioListener: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 490219957} - m_Enabled: 1 ---- !u!20 &490219959 -Camera: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 490219957} - m_Enabled: 1 - serializedVersion: 2 - m_ClearFlags: 1 - m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} - m_projectionMatrixMode: 1 - m_GateFitMode: 2 - m_FOVAxisMode: 0 - m_SensorSize: {x: 36, y: 24} - m_LensShift: {x: 0, y: 0} - m_FocalLength: 50 - m_NormalizedViewPortRect: - serializedVersion: 2 - x: 0 - y: 0 - width: 1 - height: 1 - near clip plane: 0.3 - far clip plane: 1000 - field of view: 60 - orthographic: 0 - orthographic size: 5 - m_Depth: -1 - m_CullingMask: - serializedVersion: 2 - m_Bits: 4294967295 - m_RenderingPath: -1 - m_TargetTexture: {fileID: 0} - m_TargetDisplay: 0 - m_TargetEye: 3 - m_HDR: 1 - m_AllowMSAA: 1 - m_AllowDynamicResolution: 0 - m_ForceIntoRT: 0 - m_OcclusionCulling: 1 - m_StereoConvergence: 10 - m_StereoSeparation: 0.022 ---- !u!4 &490219960 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 490219957} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 1, z: -10} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &1788501447 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1788501449} - - component: {fileID: 1788501448} - m_Layer: 0 - m_Name: Directional Light - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!108 &1788501448 -Light: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1788501447} - m_Enabled: 1 - serializedVersion: 10 - m_Type: 1 - m_Shape: 0 - m_Color: {r: 1, g: 0.95686275, b: 0.8392157, a: 1} - m_Intensity: 1 - m_Range: 10 - m_SpotAngle: 30 - m_InnerSpotAngle: 21.80208 - m_CookieSize: 10 - m_Shadows: - m_Type: 2 - m_Resolution: -1 - m_CustomResolution: -1 - m_Strength: 1 - m_Bias: 0.05 - m_NormalBias: 0.4 - m_NearPlane: 0.2 - m_CullingMatrixOverride: - e00: 1 - e01: 0 - e02: 0 - e03: 0 - e10: 0 - e11: 1 - e12: 0 - e13: 0 - e20: 0 - e21: 0 - e22: 1 - e23: 0 - e30: 0 - e31: 0 - e32: 0 - e33: 1 - m_UseCullingMatrixOverride: 0 - m_Cookie: {fileID: 0} - m_DrawHalo: 0 - m_Flare: {fileID: 0} - m_RenderMode: 0 - m_CullingMask: - serializedVersion: 2 - m_Bits: 4294967295 - m_RenderingLayerMask: 1 - m_Lightmapping: 4 - m_LightShadowCasterMode: 0 - m_AreaSize: {x: 1, y: 1} - m_BounceIntensity: 1 - m_ColorTemperature: 6570 - m_UseColorTemperature: 0 - m_BoundingSphereOverride: {x: 0, y: 0, z: 0, w: 0} - m_UseBoundingSphereOverride: 0 - m_ShadowRadius: 0 - m_ShadowAngle: 0 ---- !u!4 &1788501449 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1788501447} - m_LocalRotation: {x: 0.40821788, y: -0.23456968, z: 0.10938163, w: 0.8754261} - m_LocalPosition: {x: 0, y: 3, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 1 - m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0} diff --git a/Assets/Algorithms/04_Pathfinding/PathFinding.unity.meta b/Assets/Algorithms/04_Pathfinding/PathFinding.unity.meta deleted file mode 100644 index 79e62ae..0000000 --- a/Assets/Algorithms/04_Pathfinding/PathFinding.unity.meta +++ /dev/null @@ -1,7 +0,0 @@ -fileFormatVersion: 2 -guid: 76e00398d0d0380468c9f9f3ad59d027 -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Algorithms/Algorithms.cs b/Assets/Algorithms/Algorithms.cs new file mode 100644 index 0000000..31be4a8 --- /dev/null +++ b/Assets/Algorithms/Algorithms.cs @@ -0,0 +1,34 @@ +using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+
+namespace AlgorithmCollection
+{
+
+ public static partial class Algorithms
+ {
+ public static void Swap<T>(ref T v1, ref T v2)
+ {
+ T temp = v1;
+ v1 = v2;
+ v2 = temp;
+ }
+
+ public static void Swap<T>(ref List<T> data, int i1, int i2)
+ {
+ T temp = data[i1];
+ data[i1] = data[i2];
+ data[i2] = temp;
+ }
+
+ // 阶乘
+ public static int Factorial(int n)
+ {
+ if (n == 1)
+ return 1;
+ return n * Factorial(n - 1);
+ }
+
+ }
+
+}
\ No newline at end of file diff --git a/Assets/Algorithms/04_Pathfinding/AStarPathfinding.cs.meta b/Assets/Algorithms/Algorithms.cs.meta index 5cd6112..b06d1f9 100644 --- a/Assets/Algorithms/04_Pathfinding/AStarPathfinding.cs.meta +++ b/Assets/Algorithms/Algorithms.cs.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 66158ef978f1a7540addceae83d08239 +guid: 2600020773f30ce428a6884de5077f0a MonoImporter: externalObjects: {} serializedVersion: 2 diff --git a/Assets/Algorithms/Recursion.cs b/Assets/Algorithms/Recursion.cs new file mode 100644 index 0000000..30ebd8a --- /dev/null +++ b/Assets/Algorithms/Recursion.cs @@ -0,0 +1,63 @@ +using System;
+using System.Collections;
+using System.Collections.Generic;
+using AlgorithmCollection;
+
+// 递归与分治算法
+
+namespace AlgorithmCollection.Recursion
+{
+
+ public static class RecursionHelper
+ {
+
+ #region 全排列,返回数据的所有组合
+ public static void Permutations<T>(List<T> data, ref List<List<T>> perms)
+ {
+ if (perms == null)
+ perms = new List<List<T>>();
+ foreach(List<T> perm in perms)
+ {
+ List<T> p = new List<T>(perm);
+ perms.Add(p);
+ }
+ }
+
+ // 生成器形式,每次返回一个组合
+ public static IEnumerable Permutations<T>(List<T> data)
+ {
+ foreach(var perm in _Permutations(data, 0, data.Count - 1))
+ {
+ yield return perm;
+ }
+ }
+
+ // 计算start~end范围内的全排列
+ private static IEnumerable _Permutations<T>(List<T> data, int start , int end, List<T> perm = null)
+ {
+ if(perm == null)
+ perm = new List<T>(data.Count);
+ if(start == end)
+ {
+ perm.Add(data[start]);
+ yield return perm;
+ perm.RemoveAt(perm.Count - 1);
+ }
+ else
+ {
+ for (int i = start; i <= end; ++i)
+ {
+ perm.Add(data[i]);
+ Algorithms.Swap(ref data, start, i);
+ IEnumerator itor = _Permutations(data, start + 1, end, perm).GetEnumerator();
+ while(itor.MoveNext())
+ yield return itor.Current;
+ Algorithms.Swap(ref data, start, i);
+ perm.RemoveAt(perm.Count - 1);
+ }
+ }
+ }
+ #endregion
+
+ }
+}
\ No newline at end of file diff --git a/Assets/Algorithms/Recursion.cs.meta b/Assets/Algorithms/Recursion.cs.meta new file mode 100644 index 0000000..07aa1e2 --- /dev/null +++ b/Assets/Algorithms/Recursion.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: d879b71db7b8d344fafd47ce8522aae3 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Algorithms/说明.txt b/Assets/Algorithms/说明.txt new file mode 100644 index 0000000..634f729 --- /dev/null +++ b/Assets/Algorithms/说明.txt @@ -0,0 +1,2 @@ +Algrothms.cs里是通用算法合集
+
diff --git a/Assets/Algorithms/03_Search/说明.txt.meta b/Assets/Algorithms/说明.txt.meta index 231fb95..be7853f 100644 --- a/Assets/Algorithms/03_Search/说明.txt.meta +++ b/Assets/Algorithms/说明.txt.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 1c40061e432b0ed42a672dbe8e834665 +guid: 64304d8e88db18b46bade48952f0e7f5 TextScriptImporter: externalObjects: {} userData: |