考虑到一个字符串的输入完全由qs代表季度音符和es代表第八个音符组成,那么输出被切分的季度音符的指数。
切分是复杂的,但是为了这个挑战的目的,我们对“切分”的定义将非常简单:从“off- but”-that开始的四分之一音符是,在n/4时间中计算为“和”的节拍。
这也可以被定义为任何季度音符,其前面有一个奇数的第八个音符。例如,下面标记为*的注释被认为是切分的,并显示了它们的索引:
eqqeqqeqqe
** **
12 78
Output: 1 2 7 8输入总是由4/4次(四分之一音符是度量的四分之一,第八个音符是度量值的八分之一)组成的。(输入也不会是空的。)输出可以是由不包含数字的任何分隔符分隔的元素的单个字符串,也可以是数组/list/等。如果您愿意,输出可以是基于1的(即第一个索引是1而不是0),也可以是任何数字基(一元、小数点等)。
由于这是密码-高尔夫,以字节为单位的最短代码将获胜。
测试用例:
In Out
-----------------------------------------------
eqqqe 1 2 3
qeqeq 2
qqqeqqeeeeqeqeqeqqeqqeqq 4 5 10 14 19 20
eeeeeqeeqeeqqqqeqeqeeqe 5 8 11 12 13 14 18 21
qqqq <none>
eeeeeeee <none>发布于 2016-01-15 22:23:11
i=e=0
gets.bytes{|n|e^=n
e&4|n>114&&p(i)
i+=1}输入到stdin。输出到标准输出,换行符分开。
评论
i=e=0 #i keeps index, e keeps track of 8ths.
gets.bytes{|n| #iterate through bytes in the input
e^=n #xor e with input. We're interested in the 4's bit, which is only affected by ascii e, not ascii q
e&4|n>114&&p(i) #e&4 evaluates to 4 or 0. OR with n and if the value is greater than ascii code for q, print index
i+=1} #increment index发布于 2020-09-11 12:14:57
发布于 2016-01-16 02:45:30
感谢丹尼斯的额外高尔夫!
i,n;f(char*m){for(i=n=0;*m;i++)*m++&4?++n:n%2?printf("%d ",i):0;}https://codegolf.stackexchange.com/questions/69489
复制相似问题