以下是两个建议的解决方案:一个是完整的解决方案,需要大量字节,另一个是部分解决方案(仅解决N + N和N * N个部分,仅需484字节),每种解决方案均采用不同的方法,并采用不同的解决方案一套很酷的技巧!:)
1.完整解决方案(810147050字节)
使用TovTovTov(TOV='hi',SEP=',')
的TOV
元素免疫到位重复字符(包括"hihihi"
与"hhiihhiihhii"
有三个"hi"
在其中S,以及所有TovTovTov
关心的是如何多TOV
小号之间出现SEP
多个)。
如果使用SEP=', '
,整个程序将不受字符重复的影响(这很酷,但不能解决问题)。所以我们用SEP=','
。
所以程序"hihihi,hi"
,例如,编译为所述整数数组[3,1]
,而"hhiihhiihhii,,hhii"
编译到[3,0,1]
和"hhiihhiihhii,,hhii"
到[3,0,0,1]
。这意味着命令本身在复制后不会改变其含义,但是总长度会随着字符复制而变化。低于溶液查询程序的长度,并使用此来决定是否打印N+N
,N*N
或N^N
。
建议的完整解决方案(如ints数组)是: [6, 12, 9, 18, 9, 142, 11, 38, 8, 9, 260, 11, 73, 8, 22, 75, 7, 10, 14, 3, 1, 22, 24, 18, 15, 8, 10, 16, 3, 1, 22, 24, 18, 15, 8, 10, 45, 16, 7, 22, 3, 1, 22, 24, 18, 15, 8, 22, 3, 1, 22, 24, 18, 15, 8, 25, 3, 1, 22, 24, 18, 15, 8, 48, 3, 1, 22, 24, 18, 15, 8, 277, 3, 1, 22, 24, 18, 15, 8, 3146, 3, 1, 22, 24, 18, 15, 8, 46677, 3, 1, 22, 24, 18, 15, 8, 823564, 3, 1, 22, 24, 18, 15, 8, 16777237, 3, 1, 22, 24, 18, 15, 8, 387420510, 3, 1, 22, 24, 18, 15, 8]
作为一个字符串,它是一个相当长的程序,由810147050个字符组成,开头为:
hihihihihihi,hihihihihihihihihihihihi,hihihihihihihihihi,hihihihihihihihihihihihihihihihihihi,hihihihihihihihihi,hihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihih...
2.仅解决问题的N + N和N * N部分(484字节)
使用TovTovTov(TOV='1',SEP=', ')
,这次SEP
s可以避免重复(其中",, "
仍然只有一个", "
),因此以下建议的解决方案即使在重复字符后也始终具有33条命令:
1111, 111111111111111111111111111111111111111111111111, 1111111111, 1111111111, 1111111111, 111111, 111111111111, 111111111, 11111111111111, 111, 1, 1111111111111111111111, 111111111111111111111111, 111111111111111111, 111111111111111, 11111111, 111111111111, 1111111111111111, 111111111111111, 1111111111111111111111, 111111111111111111111111111111111111, 11, 1111111111111111111111111111, 111111, 111, 111111, 11111111111, 111111111111111111111111111, 1111, 1, 11111111, 1, 11111111
相应的int数组(上面33个命令中的每个命令中TOV
s(1
s 的数量))如下:[4,48,10,10,10,6,12,9,14,3,1,22,24,18,15,8,12,16,15,22,36,2,28,6,3,6,11,27,4,1,8,1,8]
复制这些字符会产生33个完全不同的命令的列表:
[8,96,20,20,20,12,24,18,28,6,2,44,48,36,30,16,24,32,30,44,72,4,56,12,6,12,22,54,8,2,16,2,16]
原来整型数组(计算N + N)的设计精心,使以后的命令变换他们的意思,节目仍然是有意义的,但计算N * N。例如,第一个字符4
(将其TovTovTov
理解为“将下一个op作为转换为字符的ascii代码进行处理”)在字符复制到后会更改为8
,这是完全不同的命令(“将Program Counter更改为从堆栈,如果紧随其后弹出的值为true”)。