八度,38 33字节
这不是最短的(36个字节),但这是我的最爱。解释在底部。
disp(['duck '+~(1:1/rand)';'goose'])
在线尝试!
一些简短的变化:
原则上,这是可行的(33字节),但是在线解释器超时:
disp(['duck '+~(1:now)';'goose'])
添加一些字节以缩短输出使其变为35或36字节:
disp(['duck '+~(7e5:now)';'goose']) % Works on octave-online.net
disp(['duck '+~(7.3e5:now)';'goose']) % Works on tio.run
说明:
我只解释最后一个随机数。其他时间相似,但是使用从1月1日开始的天数,即从0000到今天。
rand
在时间间隔(0,1)上返回一个随机数。因此,1/rand
返回大于1的数字。由于范围1:f
,其中f
是一个随机浮子大于1是相同的1:floor(f)
,1:1/rand
创建了一个范围1 .. X,其中X> = 1。
我将尝试解释这一点,就好像Octave是基于堆栈的语言一样。
'duck ' % Push the string 'duck ' to the stack
(1:1/rand) % Push a vector 1... floor(1/rand)
~(1:1/rand)' % Negate the vector (making it all zeros)
% and transpose it.
+ % Add 'duck ' with the vertical vector of zeros
% to implicitly duplicate the string r times
[ ;'goose'] % Push the string 'goose' and concatenate
% vertically with the rest
disp( ) % Display it all.