CF952G.Puzzling Language

提高+/省选-

通过率:0%

AC君温馨提醒

该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

现有一种由 Brainfuck(以下称为 BF)衍生出的二维编程语言。本题中,你需要编写一个可以生成该语言代码的简易生成器。

该语言的代码是字符 . 和 X 形成的矩阵,且可以按照下面的方式转换为 BF 程序:以正常顺序(从上到下、从左到右)阅读代码中的字符,每个 X 会被转换成 BF 指令,之后会运行这些指令。转换成的指令由这个 X 左边、上面和右边相邻的三个字符确定,见如下转换表:

img

给你一个字符串,请你输出一个以该语言编写的、能打印出这个字符串的程序。

你可以在这里下载该语言的解释器(用 C++11 编译),这个解释器也将用于评测你的程序。需要注意下面一些实现的细节:

  • 解释器会先将该语言的代码转换成 BF 程序,然后会运行该 BF 程序并输出结果。
  • 代码必须是矩形,所有行的长度必须相同。代码最多有 10410^4 行和 10410^4 列,最多有 5×1055 \times 10^5 个字符 X。
  • 代码的第一行和最后一行上下相邻,第一列和最后一列左右相邻。
  • 解释器有 3×1043 \times 10^4 个存储单元,每个可以存储 00 到 255255 的整数,运算结果对 256256 取模。若当前处于第一个存储单元,则指针左移(<)指令会被忽略;若当前处于最后一个存储单元,则指针右移(>)指令会被忽略。
  • 在 BF 程序中可以出现控制台输入(,)指令,但运行时会将其忽略。

输入格式

输入一个字符串,其中每个字符的 ASCII 码都在 3333(!)到 122122(z)之间(含)。字符串的长度在 11 到 1010 之间(含)。

输出格式

输出一个以该语言编写的程序,运行该程序时会打印出给定的字符串。

【样例 1 解释】

样例 1 输出的程序对应下面的 BF 程序:

       -
      >+<
     >+++<
    >+++++<
   >+++++++<
  >+++++++++<
 >+++++++++++<

<             >
.
.
.

三角形部分表示将第一个存储单元的值减一,并将第二个存储单元的值设为 3636,也就是字符 $ 的 ASCII 码。接下来一行表示将指针移动到第二个存储单元。接下来三行表示将当前存储单元的值对应的字符($)打印三次。

输入输出样例

  • 输入#1

    $$$

    输出#1

    .......X.......
    ......XXX......
    .....XXXXX.....
    ....XXXXXXX....
    ...XXXXXXXXX...
    ..XXXXXXXXXXX..
    .XXXXXXXXXXXXX.
    ...............
    X.............X
    X..............
    X..............
    X..............
    

输入解题思路,AI测评打分。不知道怎么写?

首页