深奥的语言与 5 个运算符
Esoteric language with 5 operators
我需要实现一种像(?)语言这样的 Brainfuck 语言
该语言有 5 个命令。
最初,
int x=1; at start of the execution of the algorithm
每个命令在 C 语言中执行以下操作。
"+": x+=1;
"-": x-=1;
">": x= x*2;
"<" : x= x/2;
"!" : printf("%c",x);
输入是ASCII码在0到127之间的字符序列。
output 应该是上述命令的序列,以便程序打印与 input
相同的字符序列
注意输出的长度应该最小化。
For example
input: ABC
Output: >>>>>>+!+!+!
explanation: ASCII code for A B C are 65 66 67 receptively
x=1 so x is doubled 6 times to get to 64. Then increment and print 3 times to print all ABC.
This is minimal compared to increasing x 64 times to get to x=65
我需要实现这种语言。
但我一直在思考一种算法,该算法在移动到输入中的下一个字符时找到命令序列。
例如,当x=8需要移动到12时,将x减少两次然后乘以2比加4次更快。当数字足够大时,算法的决定变得非常复杂。
我正在考虑递归也许是为了找到路径?最少命令数。
有什么提示或有没有我可以参考的这种深奥语言的名称?
找到从一个值 x
到另一个值的最小步数的一种方法是使用修改后的 Dijkstra's algorithm.
归结为要维护一个要探索的号码列表,该列表将被初始化为您的起始号码。当你探索一个数字时,你会采取所有可能的步骤,即 +
、-
、>
和 <
,跟踪结果(以及你是如何到达那里的),直到您到达目的地。
这会找到一条从你的起始号码到目的地号码的路径,并且保证是最短的。
我需要实现一种像(?)语言这样的 Brainfuck 语言
该语言有 5 个命令。
最初,
int x=1; at start of the execution of the algorithm
每个命令在 C 语言中执行以下操作。
"+": x+=1;
"-": x-=1;
">": x= x*2;
"<" : x= x/2;
"!" : printf("%c",x);
输入是ASCII码在0到127之间的字符序列。
output 应该是上述命令的序列,以便程序打印与 input
相同的字符序列注意输出的长度应该最小化。
For example
input: ABC
Output: >>>>>>+!+!+!
explanation: ASCII code for A B C are 65 66 67 receptively
x=1 so x is doubled 6 times to get to 64. Then increment and print 3 times to print all ABC.
This is minimal compared to increasing x 64 times to get to x=65
我需要实现这种语言。
但我一直在思考一种算法,该算法在移动到输入中的下一个字符时找到命令序列。
例如,当x=8需要移动到12时,将x减少两次然后乘以2比加4次更快。当数字足够大时,算法的决定变得非常复杂。
我正在考虑递归也许是为了找到路径?最少命令数。
有什么提示或有没有我可以参考的这种深奥语言的名称?
找到从一个值 x
到另一个值的最小步数的一种方法是使用修改后的 Dijkstra's algorithm.
归结为要维护一个要探索的号码列表,该列表将被初始化为您的起始号码。当你探索一个数字时,你会采取所有可能的步骤,即 +
、-
、>
和 <
,跟踪结果(以及你是如何到达那里的),直到您到达目的地。
这会找到一条从你的起始号码到目的地号码的路径,并且保证是最短的。