您将获得一堆权重的ASCII图像作为输入,并且必须输出该堆的组合重量。

有5个不同的重量,重量1,2,5,10,20 帕塞人 (或其他一些任意单位)。
重量按升序排列如下:
1: __
|__|
2: ______
|______|
5: ______
| |
|______|
10: ______________
| |
|______________|
20: ____________________
| |
|____________________|称重将对称放置(如示例图像),而不一定按排序顺序排列。在适用情况下,称重将共享边界:
您也可以使用所有单一权重作为测试用例。
__
_|__|_
|______|
| |
|______|
1 + 2 + 5 = 8 ____________________
| |
|____________________|
| |
|______________|
_|__|_
|______|
| |
|______|
20 + 10 + 1 + 2 + 5 = 38 ______
|______|
|______|
|______|
|______|
2 + 2 + 2 + 2 = 8这是密码-高尔夫,所以每种语言以字节表示的最短代码都是赢家。我们一如既往地鼓励解释。
发布于 2018-04-26 17:05:26
lambda x:sum(i/21*x.count('|'+i%21*' _'[i<50]+'|')for i in[23,48,69,224,440])[i/21, i%21, ' _'[i<50] for i in [23,48,69,224,440]]将生成以下三叉[1, 2, '_'], [2, 6, '_'], [3, 6, ' '], [10, 14, ' '], [20, 20, ' '],表示每个权重的权重、长度和底部的字符,用于对每个权重进行唯一的单行表示。
由于第三重将与第二重重叠,所以我用它的身体(_ -> )替换了它的底部,并将值降为3 (它将计算基座为2,将身体计算为3,从而产生5)
发布于 2018-04-26 17:22:15
x=>x.replace(/\|.*\|/g,s=>u+=s.length/4*(s[1]<1?s[21]?29/11:1.5:1),u=0)|u发布于 2018-04-27 05:16:47
lambda t:sum([1,2,3,5,5,9,11][len(x)//4+(x<'_')]for x in t.split('|')[1::2])sum([1,2,3,5,5,9,11][len(x)//4+(x<'_')]for x in t.split('|')[1::2])
t.split('|') - split ascii art into pieces
[1::2]) - weights are at odd indexes
for x in - iterates over the weights
len(x)//4 - map widths to 0,1,3,5,7
+(x<'_') - add 1 if the first row of 2-row weight
[1,2,3,5,5,9,11][ ] - value of each part of a weight
sum( ) - add 'em all uphttps://codegolf.stackexchange.com/questions/163488
复制相似问题