Locked. This question and its answers are locked因为该问题是题外话,但具有历史意义。它当前不接受新的答案或互动。









我使用这些规则制作了最终的笑声发生器。您能以自己喜欢的语言巧妙地实现它吗?

规则:

在每次迭代中,都会发生以下转换。

H   -> AH
A   -> HA
AA  -> HA
HH  -> AH
AAH -> HA
HAA -> AH




n = 0 |  H
n = 1 |  AH
n = 2 |  HAAH
n = 3 |  AHAH
n = 4 |  HAAHHAAH
n = 5 |  AHAHHA
n = 6 |  HAAHHAAHHA
n = 7 |  AHAHHAAHHA
n = 8 |  HAAHHAAHHAAHHA
n = 9 |  AHAHHAAHAHHA
n = ...

最佳答案

MATLAB(v7.8.0):
73个字符(不包括用于使其看起来可读的格式字符)
该脚本(“ haha​​.m”)假定您已经定义了变量n:

s = 'H';
for i = 1:n,
  s = regexprep(s,'(H)(H|AA)?|(A)(AH)?','${[137-$1 $1]}');
end

...这是单行版本:
s='H';for i=1:n,s = regexprep(s,'(H)(H|AA)?|(A)(AH)?','${[137-$1 $1]}');end

测试:
>> for n=0:10, haha; disp([num2str(n) ': ' s]); end
0: H
1: AH
2: HAAH
3: AHAH
4: HAAHHAAH
5: AHAHHA
6: HAAHHAAHHA
7: AHAHHAAHHA
8: HAAHHAAHHAAHHA
9: AHAHHAAHAHHA
10: HAAHHAAHHAHAAHHA

关于puzzle - 高尔夫代码:自动机,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/831915/

10-13 08:54