Tag: puzzle

Eric Lippert挑战“逗号 – 狡辩”,最佳答案?

我想把这个挑战引起stackoverflow社区的注意。 原始问题和答案都在这里 。 顺便说一句,如果你之前没有按照它,你应该尝试阅读Eric的博客,这是纯粹的智慧。 摘要: 编写一个带有非null IEnumerable的函数,并返回一个具有以下特征的字符串: 如果序列为空,则生成的字符串为“{}”。 如果序列是单个项“ABC”,则结果字符串为“{ABC}”。 如果序列是两个项目序列“ABC”,“DEF”,那么结果字符串是“{ABC和DEF}”。 如果序列具有两个以上的项目,例如“ABC”,“DEF”,“G”,“H”,则结果字符串为“{ABC,DEF,G和H}”。 (注意:没有牛津逗号!) 你甚至可以看到我们自己的Jon Skeet(是的,众所周知, 他可以同时在两个地方 )发布了一个解决方案,但他的(恕我直言)并不是最优雅的,尽管你可能无法击败它性能。 你怎么看? 那里有很好的选择。 我真的很喜欢其中一种涉及选择和聚合方法的解决方案(来自Fernando Nicolet)。 Linq非常强大,并且花了一些时间来应对这样的挑战让你学到很多东西。 我扭曲了一下,所以它更高效和清晰(通过使用Count并避免反向): public static string CommaQuibbling(IEnumerable items) { int last = items.Count() – 1; Func getSeparator = (i) => i == 0 ? string.Empty : (i == last ? ” and ” : “, “); […]