- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我想让这个挑战引起 stackoverflow 社区的注意。原始问题和答案是here .顺便说一句,如果你之前没有遵循它,你应该尝试阅读 Eric 的博客,这是纯粹的智慧。
总结:
编写一个接受非空 IEnumerable 并返回具有以下特征的字符串的函数:
正如您所见,即使是我们自己的 Jon Skeet(是的,众所周知 he can be in two places at the same time )也发布了一个解决方案,但他的(恕我直言)并不是最优雅的,尽管您可能无法击败它的性能。
你怎么看?那里有很好的选择。我真的很喜欢涉及选择和聚合方法的解决方案之一(来自 Fernando Nicolet)。 Linq 非常强大,花一些时间来应对这样的挑战会让你学到很多东西。我对它进行了一些改动,使其更高效、更清晰(通过使用 Count 并避免 Reverse):
public static string CommaQuibbling(IEnumerable<string> items)
{
int last = items.Count() - 1;
Func<int, string> getSeparator = (i) => i == 0 ? string.Empty : (i == last ? " and " : ", ");
string answer = string.Empty;
return "{" + items.Select((s, i) => new { Index = i, Value = s })
.Aggregate(answer, (s, a) => s + getSeparator(a.Index) + a.Value) + "}";
}
最佳答案
效率低下,但我认为清晰。
public static string CommaQuibbling(IEnumerable<string> items)
{
List<String> list = new List<String>(items);
if (list.Count == 0) { return "{}"; }
if (list.Count == 1) { return "{" + list[0] + "}"; }
String[] initial = list.GetRange(0, list.Count - 1).ToArray();
return "{" + String.Join(", ", initial) + " and " + list[list.Count - 1] + "}";
}
如果我要维护代码,我更喜欢这个版本而不是更聪明的版本。
关于c# - Eric Lippert 的挑战 "comma-quibbling",最佳答案?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/788535/
我只是在看 Eric Lippert 的 immutable binary tree 的简单实现,我对此有疑问。在展示了实现之后,Eric 表示 Note that another nice feat
昨天刚刚安装了 Ubuntu 16.04 LTS,安装了 Eric。工作正常。今天想启动 Eric 并使用 qtdesigner,但没有成功(出现错误 qtdesigner not found),因为
我正在使用 eric hynds 多选 下面是我使用的代码 data = $.parseJSON(data); try { $(
我正在使用 Eric Meyer 的 css reset 2。但是在我的网站中使用标题时,标题都是相同大小和小文本。我已经看到问题来自 css reset。我尝试从那里删除标题,但现在它们似乎从顶部开
我正在阅读Eric Lippert博客中有关C#5的新异步功能的出色article series。他在那里使用了一个从远程位置获取文档并将其存档到存储驱动器上的方法的示例。这是他使用的代码: asyn
这是一个如此简单的问题,但我无法找出答案。 我已经安装了适用于 Python 的 Eric 6 IDE。它有一个交互式控制台 - 太棒了!如何在控制台中执行选定的命令? PyCharm 具有 Shif
我是 jQuery 的初学者,我正在尝试让一个简单的 columnChooser 为 jqGrid 工作。我使用 jqGrid 的导航栏插入“添加/删除列”按钮,并在该按钮的单击事件上显示列选择器。之
我正在尝试更改 h1 元素的字体大小,但它似乎并没有覆盖重置的 CSS 文件。我有两次定义样式的运气,但这似乎不是最优雅的解决方案。谢谢。 /* http://meyerweb.com/eric/to
我想让这个挑战引起 stackoverflow 社区的注意。原始问题和答案是here .顺便说一句,如果你之前没有遵循它,你应该尝试阅读 Eric 的博客,这是纯粹的智慧。 总结: 编写一个接受非空
上周埃里克·尼布勒 tweeted std::is_function 的非常紧凑的实现特质类: #include template struct priority_tag : priority_ta
这个问题在这里已经有了答案: Race Condition with Static Class? (3 个答案) 关闭 7 年前。 这个谜题是在 NDC 2010 上展示的。那里有指向视频的链接,但
我正在学习构成 DDD 基础的书,并且在理解第 7 章中有关 cargo 的示例方面有点卡住了。 更具体地说,我有以下问题; Wat是“Delivery History”的真正目的?在我的理解中,它只
我无法理解这两个圆括号是什么意思? struct conf_method_st { const char *name; CONF *(*create) (CONF_METHOD *me
我使用 http://www.erichynds.com/jquery/jquery-ui-multiselect-widget/ 的 JQuery UI 多选插件将元素动态附加到选择框 //Make
有人可以向我解释为什么下面的代码会输出它的作用吗?为什么第一个输出中的 T 是 String 而不是 Int32,为什么在下一个输出中是相反的情况? 这个拼图来自 interview with Eri
这个问题在这里已经有了答案: 关闭 12 年前。 Possible Duplicates: Why is it bad to use a iteration variable in a lambda
我知道并使用 eric meyer CSS reset,但是是否有更多的东西可以添加到 reset css 中?并且可以节省我们的时间并增加兼容性。 这是 default meyer 的最新 CSS
我想调整简单容器的高度,以匹配使用 $.ajax 从服务器返回的数据传递的不断变化的深度要求。 似乎一旦触发模态,所有 CSS 都会即时更改,例如$('#someid').css('高度','500p
我刚刚读了Eric Lippert's "Arrays considered somewhat harmful"文章。他告诉他的读者,他们“可能不应该返回一个数组作为公共(public)方法或属性的值
我刚刚读了 Eric Lippert 的这篇有趣的文章,Top 10 Worst C# Features .在接近尾声时他说: The rules for resolving names after
我是一名优秀的程序员,十分优秀!