任何其他方式打印$ 0而不使用awk中的打印?

时间:2013-01-21 06:50:00

标签: awk

我正在解决这个问题http://www.spoj.com/problems/NEXTODD/

在这个问题中你必须用最小的字节数来解决它。

我的代码: - {print$1%2?$1+2:$1+1},即21个字节。

最佳解决方案是10个字节。

有没有其他方法可以在不使用print或printf语句的情况下打印$ 0,这可以帮助我减少代码。

4 个答案:

答案 0 :(得分:4)

在AWK的模式/动作语言中,当模式评估为true时,存在打印$ 0的隐式动作,但没有描述明确的动作。关于您的挑战,请参阅此示例(13个字符):

{$0+=$0%2+1}1

帽子提示给'某个人',他在抽奖时比我更快发布代码。

答案 1 :(得分:3)

缩短两个字符:

'{$0%2?$0+=2:$0+=1}1'

1此处代替{print $0}1是模式,匹配任何记录。 {print $0}是默认操作。

已编辑。更好(-6个字符):

{$0+=$0%2?2:1}1

答案 2 :(得分:2)

您只需要条件,因为它永远不会为非零,因此将始终调用打印当前记录的默认操作:

awk '$0+=$0%2+1'

答案 3 :(得分:0)

我也为此研究了一个技巧..这可以打高尔夫吗?

{$0=or($0+1,1)}1