当前位置:网站首页>2048项目实现
2048项目实现
2022-07-05 06:18:00 【mentalps】
1 2048
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace _2048
{
public class MatrixOperation
{
// 计算矩阵的平滑性和连接性
public int[] SmoothAndNum(int[,] matrix)
{
int[,] matrixIndex = new int[5, 5];
int num = 0;
int smooth = 0;
for (int i = 0; i < 5; i++)
{
for (int j = 0; j < 5; j++)
{
int[] vs1 = MatrixMove(matrix, i, j, 1, ref matrixIndex);
int[] vs2 = MatrixMove(matrix, i, j, 2, ref matrixIndex);
int[] vs3 = MatrixMove(matrix, i, j, 3, ref matrixIndex);
smooth = smooth - vs1[0] - vs2[0] - vs3[0];
num = num + vs1[1] + vs2[1] + vs3[1];
}
}
return new int[2] {
smooth, num };
}
// 穷举所有可能的填充组合
//public List<List<int>> AllComb(int max,int min,int num)
// {
// List<int> comb = new List<int>();
// return;
// }
public static int[] MatrixMove(int[,] matrix, int x, int y, int z, ref int[,] matrixIndex)
{
int num = 0;
int smooth = 0;
switch (z)
{
case 1:
if (x + 1 <= matrix.GetUpperBound(1))
{
smooth = (int)Math.Abs(Math.Log(matrix[x, y], 2) - Math.Log(matrix[x + 1, y], 2));
if (smooth == 0)
{
if (matrixIndex[x, y] == 0)
{
matrixIndex[x, y] = 1;
num = num + 1;
}
if (matrixIndex[x + 1, y] == 0)
{
matrixIndex[x + 1, y] = 1;
num = num + 1;
}
}
}
else
{
smooth = 0;
}
break;
case 2:
if ((x + 1 <= matrix.GetUpperBound(1)) && (y + 1 <= matrix.GetUpperBound(0)))
{
smooth = (int)Math.Abs(Math.Log(matrix[x, y], 2) - Math.Log(matrix[x + 1, y + 1], 2));
if (smooth == 0)
{
if (matrixIndex[x, y] == 0)
{
matrixIndex[x, y] = 1;
num = num + 1;
}
if (matrixIndex[x + 1, y + 1] == 0)
{
matrixIndex[x + 1, y + 1] = 1;
num = num + 1;
}
}
}
else
{
smooth = 0;
}
break;
case 3:
if (y + 1 <= matrix.GetUpperBound(0))
{
smooth = (int)Math.Abs(Math.Log(matrix[x, y], 2) - Math.Log(matrix[x, y + 1], 2));
if (smooth == 0)
{
if (matrixIndex[x, y] == 0)
{
matrixIndex[x, y] = 1;
num = num + 1;
}
if (matrixIndex[x, y + 1] == 0)
{
matrixIndex[x, y + 1] = 1;
num = num + 1;
}
}
}
else
{
smooth = 0;
}
break;
}
return new int[2] {
smooth, num };
}
public int[,] FillMatrix(int[,] matrix)
{
List<Tuple<int, int>> fillSteps = new List<Tuple<int, int>>();
for (int i = 0; i < 5; i++)
{
for (int j = 0; j < 5; j++)
{
if (matrix[i, j] == 0)
{
Tuple<int, int> pos = new Tuple<int, int>(i, j);
fillSteps.Add(pos);
}
}
}
return matrix;
}
// total:需要填充的个数
public static int [] AllComb(int total,int [] nums,int start, ref List<int []> all_list ,int [] all)
{
if (start < total) {
for (int i = 0; i < nums.Length; i++)
{
all[start] = nums[i];
AllComb(total, nums, start+1,ref all_list,all);
int[] b = new int[total];
Array.Copy(all, b, total);
all_list.Add(b);
}
return all;
}
else
{
return all;
}
}
static void Main(string[] args)
{
int[] nums = {
2, 4, 8 };
int num = 3;
List<int []> all = new List<int []>();
int[] s = new int[num];
AllComb(3, nums, 0,ref all, s);
for(int i=0;i<all.Count;i++)
{
for(int j=0;j<num;j++)
{
Console.WriteLine(all[i][j]);
}
}
}
}
}
边栏推荐
- MySQL advanced part 2: SQL optimization
- Operator priority, one catch, no doubt
- Simple selection sort of selection sort
- 【Rust 笔记】13-迭代器(下)
- MySQL advanced part 1: triggers
- 求组合数 AcWing 888. 求组合数 IV
- Records of some tools 2022
- SPI details
- [rust notes] 16 input and output (Part 1)
- Leetcode divide and conquer / dichotomy
猜你喜欢
![[2020]GRAF: Generative Radiance Fields for 3D-Aware Image Synthesis](/img/20/826cc9d514496955a557439881234d.jpg)
[2020]GRAF: Generative Radiance Fields for 3D-Aware Image Synthesis

Network security skills competition in Secondary Vocational Schools -- a tutorial article on middleware penetration testing in Guangxi regional competition

Erreur de connexion Navicat à la base de données Oracle Ora - 28547 ou Ora - 03135

MatrixDB v4.5.0 重磅发布,全新推出 MARS2 存储引擎!

MySQL advanced part 2: storage engine
![[2021]GIRAFFE: Representing Scenes as Compositional Generative Neural Feature Fields](/img/65/7fa32cd0005ddaaebacd85c25e0c7e.jpg)
[2021]GIRAFFE: Representing Scenes as Compositional Generative Neural Feature Fields

LeetCode-54

Quickly use Amazon memorydb and build your own redis memory database

栈 AcWing 3302. 表达式求值

Redis publish subscribe command line implementation
随机推荐
C - XOR to all (binary topic)
Leetcode-9: palindromes
What is socket? Basic introduction to socket
Golang uses context gracefully
C Primer Plus Chapter 15 (bit operation)
Chart. JS - Format Y axis - chart js - Formatting Y axis
MIT-6874-Deep Learning in the Life Sciences Week 7
__ builtin_ Popcount() counts the number of 1s, which are commonly used in bit operations
Leetcode-22: bracket generation
阿里巴巴成立企业数智服务公司“瓴羊”,聚焦企业数字化增长
Leetcode-3: Longest substring without repeated characters
数据可视化图表总结(一)
博弈论 AcWing 894. 拆分-Nim游戏
One question per day 1020 Number of enclaves
Arduino 控制的 RGB LED 无限镜
SPI 详解
[rust notes] 17 concurrent (Part 2)
Data visualization chart summary (I)
MySQL advanced part 2: the use of indexes
[leetcode] day94 reshape matrix