明智是我前一段时间设计的一种简单的按位语言。它基于Python的按位运算。它有几个操作,其中大多数与Python中的等效符号相同或非常相似。
:
复制堆栈顶部?
将堆栈顶部旋转到底部!
将堆栈底部旋转到顶部[
]
在栈顶不为零时循环~
不是栈顶(-(n+1)
)-
否定堆栈顶部(-n
)>
将堆栈顶部向右移一次(n//2
)<
将堆栈顶部向左移一次(n*2
)^
xor堆栈的前两个项目(与Python相同)|
或堆栈的前两个项目(与Python相同)&
和堆栈的前两个项目(与Python相同)
用Wise制作整数非常简单,您可以将设为0 ::^
并以递增,~-
因此您可以设为0并将其递增一堆。但是,如果我们删除-
内容,将会变得更加有趣。
我们仍然可以使用剩余的运算来计算每个数字。例如这里是3
~<<~
之所以起作用,是因为~
将零(一个无穷大的0
位字符串)变成负的一个(一个无穷大的1
位字符串),每个都在末尾<
附加一个0
位,完成后,我们将~
其每个都变成一个0
s 字符串,然后是一个2 1
s。 ,或者像大多数人所说的那样3。
任务
编写一个程序,当给定一个正整数时,将输出一个Wise程序,该程序将创建一个数字n
而不-
在其源代码中使用数字(输出的源代码,您可以使用-
在自己的源中使用)。您可能假设堆栈顶部已经有一个零。
这是代码 源代码,而不是 元代码源,因此您应力争将生成的源代码(不一定是输出)最小化。
输出示例
此列表并不详尽,它们只是可能的输出
1 -> ~<~
2 -> ~<~<
3 -> ~<<~
4 -> ~<~<<
5 -> ~<~:<<|
6 -> ~<<~<
7 -> ~<<<~
8 -> ~<~<<<
9 -> ~<~:<<<|
10 -> ~<~:<<|<
11 -> ~<<~:><<<|
12 -> ~<<~<<
13 -> ~<<~:<<<|>
14 -> ~<<<~<
15 -> ~<<<<~
16 -> ~<~<<<<
:
,在空堆栈上应用推入0
。我认为应该指定该值,因为从空堆栈中复制不应该给出0
positive integers