python中给出了以下代码。我希望它用gawk编写,但我无法找到语法的正确链接。请帮助我。
t=0;
while(t<10):
x=1
s = raw_input()
for c in s:
if(c=='F' or c=='L' or c=='D' or c=='T'):
x = x*2
print x
t = t+1
答案 0 :(得分:1)
gawk 'NR <= 10 { x=1; len = length($0);
for (i = 1; i < len; i++)
if (substr($0, i, 1) ~ /[FLDT]/)
x *= 2;
print x
}'
未经测试,因此可能不太正确。 substr
行是最可能的问题行;它从$0
一次提取一个字符(几乎不是效率的缩影),然后将它与正则表达式进行比较。您可以考虑n = gsub(/[FLDT]/, 'X')
,它会计算它所做的替换(以及行中[FLDT]
个字符的数量),然后适当地乘以x
。
NR <= 10
条件仅处理前十行。