1024game
时间限制:C/C++/Rust/Pascal 3秒,其他语言6秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
Special Judge, 64bit IO Format: %lld

题目描述

\hspace{15pt}你在玩 1024 \times 2 小游戏。棋盘大小为 4\times 4,初始时棋盘为空。
\hspace{15pt}你拥有“作弊权限”:在每一步开始时,你可以自由选择本步将要生成的新数字的位置。与常规 2048 不同,本题每一步只会生成一个数字 2
\hspace{15pt}一次完整的步骤分为两段:
\hspace{23pt}\bullet\,先在你指定的一个空格子中生成数字 2
\hspace{23pt}\bullet\,随后进行一次方向操作,方向为 L, R, U, D 之一,分别表示整盘向左、向右、向上、向下滑动并合并。
\hspace{15pt}合并规则与经典 2048 一致:同一行或同一列在本次滑动方向上相邻且数值相等的两个格子会合并为它们的两倍,且每个格子在一次滑动中至多参与一次合并。一次滑动在整盘范围内同时发生。
\hspace{15pt}你的目标是在若干步操作后,棋盘上出现至少一个数值为 1024 的格子。

\hspace{15pt}本题与经典 2048 的主要差异如下:
\hspace{23pt}\bullet\,生成时机不同:本题为“先生成,再滑动”;经典 2048 为“先滑动,再由系统随机生成”。
\hspace{23pt}\bullet\,生成数值固定:本题每一步固定生成 2;经典 2048 通常随机生成 24
\hspace{23pt}\bullet\,允许无变化滑动:本题允许你选择一个方向进行滑动,即使棋盘状态不发生变化,该步仍然视为一次有效操作。
\hspace{15pt}以下为对应的坐标

输入描述:

\hspace{15pt}无输入。

输出描述:

\hspace{15pt}第一行输出一个整数 n\left(1\leqq n\leqq 1024\right),表示你将执行的步骤数。
\hspace{15pt}接下来 n 行,每行输出两个整数 i, j\left(1\leqq i, j\leqq 4\right),表示第 k 步开始时新数字 2 生成在第 i 行第 j 列。该位置必须在生成时为空。
\hspace{15pt}最后一行输出一个长度为 n 的仅包含 L, R, U, D 的字符串,表示每一步对应的滑动方向。第 k 个字符对应上述第 k 行生成位置之后进行的滑动方向。
\hspace{15pt}若经过这 n 步后,棋盘上存在至少一个格子数值为 1024,则判为通过。
\hspace{15pt}如果存在多个解决方案,您可以输出任意一个,系统会自动判定是否正确。注意,自测运行功能可能因此返回错误结果,请自行检查答案正确性。