using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApplication1
{
class Program
{
static int n;
static int[,] a = new int[4, 4];
public static void swap<t>(ref t a, ref t b)
{
t temp = a;
a = b;
b = temp;
}
static void up_remove_blank()
{
int i, j, k;
for (j = 0; j < 4; j++)
{
for (i = 1; i < 4; i++)
{
k = i;
while (k - 1 >= 0 && a[k - 1,j] == 0)
{//上面的那个为空
//swap(a[k,j], a[k - 1,j]);
k--;
}
}
}
}
static void down_remove_blank()
{
int i, j, k;
for (j = 0; j < 4; j++)
{
for (i = 2; i >= 0; i--)
{
k = i;
while (k + 1 <= 3 && a[k + 1,j] == 0)
{//上面的那个为空
swap<int>(ref a[k,j], ref a[k + 1,j]);
k++;
}
}
}
}
static void left_remove_blank()
{
int i, j, k;
for (i = 0; i < 4; i++)
{
for (j = 1; j < 4; j++)
{
k = j;
while (k - 1 >= 0 && a[i,k - 1] == 0)
{//上面的那个为空
swap<int>(ref a[i, k], ref a[i, k - 1]);
k--;
}
}
}
}
static void right_remove_blank()
{
int i, j, k;
for (i = 0; i < 4; i++)
{
for (j = 2; j >= 0; j--)
{
k = j;
while (k + 1 <= 3 && a[i,k + 1] == 0)
{//上面的那个为空
swap<int>(ref a[i, k], ref a[i, k + 1]);
k++;
}
}
}
}
static void left()
{
int i, j;
for (i = 0; i < 4; i++)
{
for (j = 0; j < 3; j++)
{
if (a[i,j] == a[i,j + 1])
{
a[i,j] += a[i,j + 1];
a[i,j + 1] = 0;
left_remove_blank();
}
}
}
}
static void right()
{
int i, j;
for (i = 0; i < 4; i++)
{
for (j = 3; j >= 1; j--)
{
if (a[i,j] == a[i,j - 1])
{
a[i,j] += a[i,j - 1];
a[i,j - 1] = 0;
right_remove_blank();
}
}
}
}
static void up()
{
//int i, j;
for (int j = 0; j < 4; j++)
{//每一列
for (int i = 0; i < 3; i++)
{
if (a[i,j] == a[i + 1,j])
{
a[i,j] = a[i,j] + a[i + 1,j];
a[i + 1,j] = 0;
//移除空格
up_remove_blank();
}
}
}
}
static void down()
{
int i, j;
for (j = 0; j < 4; j++)
{//每一列
for (i = 3; i >= 1; i--)
{
if (a[i,j] == a[i - 1,j])
{
a[i,j] = a[i,j] + a[i - 1,j];
a[i - 1,j] = 0;
//移除空格
down_remove_blank();
}
}
}
}
static void output()
{
int i, j;
for (i = 0; i < 4; i++)
{
for (j = 0; j < 4; j++)
{
if (j == 3) Console.Write("{0}\n", a[i,j]);
else Console.Write("{0}", a[i, j]);
}
}
}
static void Main(string[] args)
{
int i, j;
int s =int.Parse( Console.ReadLine());
while (s == 1)
{
for (i = 0; i < 4; i++)
{
for (j = 0; j < 4; j++)
{
a[i, j] = int.Parse(Console.ReadLine());
}
}
if (n == 0)
{//左
left_remove_blank();
left();
}
else if (n == 1)
{//右
right_remove_blank();
right();
}
else if (n == 2)
{//上
up_remove_blank();
up();
}
else
{//下
down_remove_blank();
down();
}
output();
}
// return 0;
}
}
}
1 n=2
0 0 0 0
0 0 0 0
0 2 2 0
2 0 0 0