#AS2301. ACSL Tiles(高级)

ACSL Tiles(高级)

Description

ACSL Tiles 是一款单人游戏,使用长方形图块进行。每个图块的两端都有一个 0-9 之间的个位数。游戏开始时,有 4 行,每行有一个 0-9 的单数字;因此数字 405 代表起始行数字为 0, 4, 0, 5。图块可以改变方向;例如,图块 04 和 40 是同一个图块。

分发给玩家的图块称为“手牌 (hand)”,其他图块放入“摸牌堆 (draw pile)”。每局游戏中手牌和摸牌堆的初始数量各不相同。游戏的目标是通过将手牌中的图块放置在某行的右端来构建行,要求图块上的一个数字与该行末尾的数字相匹配。如果手牌中没有图块可以放置,则从摸牌堆中添加图块到手牌末尾,直到从摸牌堆拿到的图块可以被放置为止。

具体来说,在每一回合中,从手牌中的第一张图块开始尝试匹配。检查是否可以将任何图块添加到其中一行,检查顺序从上一张放置图块所在行的下一行开始,如有必要则循环回第 1 行。游戏开始时从第 1 行开始查找。 但是,如果最后放置的图块是“对子 (double)”(即两个数字相同),则必须在该行上放置另一个图块,然后才能考虑其他匹配。如果你不能放置手牌中的任何图块,则从摸牌堆中添加图块到手牌中,直到可以放置图块为止。

当手牌中的所有图块都已放置完毕,或者无法放置手牌中的任何图块且摸牌堆已耗尽时,游戏结束。此时,计算手牌中剩余图块上所有个位数字的总和。

Input Format

输入一个 0 到 9999 之间(含)的整数,给出第 1 行到第 4 行的初始数字(不足4位补0)。 随后是两串数字,数字范围 0 到 99(含),每串数字用空格分隔。 第一串数字代表手牌中的图块;第二串数字代表摸牌堆中的图块。 每个字符串中的数字代表每个图块上的两个数字;一位数表示图块上的数字中至少有一个是 0。

Output Format

按照上述规则放置图块后,输出手牌中剩余图块上个位数字的总和。如果你放置了所有图块,则输出 0。

Explanation

示例:

Input:
5923
56 27 73 34 99 45 32 17 64 57 18 11
36 92 22 50 82

解析:

游戏开始时 4 行数字为 5, 9, 2, 3。

  1. 图块 56 放在第 1 行。
  2. 图块 27 放在第 3 行。
  3. 图块 73 放在第 4 行(旋转为 37)。
  4. 图块 34 保留在手牌中。
  5. 图块 99 放在第 2 行。

99 是对子,所以下一个放置的图块必须匹配 9。手牌中没有匹配的图块,所以从摸牌堆摸入 36。36 不匹配,留在手牌。接下来摸入 92;它可以放在第 2 行。你的手牌现在是 34 45 32 17 64 57 18 11 36,摸牌堆是 22 50 82。

接下来的移动:

  • 32 放在第 2 行(旋转)。
  • 34 放在第 2 行。
  • 45 放在第 2 行。
  • 17 放在第 3 行(旋转)。
  • 64 放在第 1 行。
  • 57 放在第 2 行。
  • 18 放在第 3 行。

此时手牌中剩下 11 和 36;都不能放置,所以摸入 22(不能放),然后 50(不能放),然后 82。82 可以放在第 3 行。你的手牌现在是 11 36 22 50,摸牌堆为空。22 图块可以放置,然后游戏结束。

手牌剩余:11, 36, 50。 这些图块上的数字之和为 1+1+3+6+5+0 = 16。

Sample Input / Output

5923
56 27 73 34 99 45 32 17 64 57 18 11
36 92 22 50 82
16