我已经为此绞尽脑汁,它比看起来更难。
请一些铁杆黑客向我展示一种实现以下内容的好方法:
给定未知大小的索引列表和已知的最大范围大小 [说 10](页面大小,即将返回多少结果)当我给予
这个函数一个索引(在索引列表的范围内)然后它 将返回我一个新的范围,返回的范围应该是大小
10,如果可能 并且返回的范围应始终尝试包含
输入索引之前的 5 个索引 返回的范围应尝试 在输入索引后包含 4 个索引
要查看此功能,请转到Google并搜索某些内容。您会得到一组包含一些链接的结果 (1 - 10)当您单击第 6 页之后的任何链接时,结果将始终在当前页面之前有五个链接,在当前页面之后有四个链接。
我只是想看看这是如何从逻辑上完成的。
如果有人有一个很酷的linq建议,那么我将不胜感激。
我已经让这段代码工作了,但它很冗长,有很多"ifs"和"elses"——我只知道有一种优雅的方法可以做到这一点。
我发现的问题在哪里:
(1) 范围小于偏移量(即只有三个结果)。
(2) 输入非常接近输入范围的开始或结束的索引。
我在网上搜索了一遍又一遍,但找不到一种简单(与语言无关)的方式来表达这种逻辑。
谢谢
max
函数(与语言无关)来实现此目的。
start_index = max(1, index - offset)
end_index = index + offset