回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>我有两个字符串作为文件范围的缓冲区。我想从这个“文件”中读取,以便优先从第一个字符串读取字节,而不是从第二个字符串读取字节,第二个字符串有重叠。在</p>
<p>在下面的示例中,r1和r2分别表示文件的范围,它们由字符串以及起始偏移量和结束偏移量组成。我已经格式化了这些示例,以便更清楚地显示字符串在文件中的位置。在</p>
<pre><code>def prioritized_read(range1, range2, read_start, read_end):
# This is the bit I don't know how to write
r1 = ("ABCDEF", (0,6))
r2 = ( "DEF", (1,4))
assert prioritized_read(r1, r2, 0, 6) == "ABCDEF"
r1 = ("ABC", (0,3))
r2 = ( "DEF", (1,4))
assert prioritized_read(r1, r2, 1, 4) == "BCF"
r1 = ( "ABC", (2,5))
r2 = ("DEF", (0,3))
assert prioritized_read(r1, r2, 0, 4) == "DEAB"
r1 = ( "A", (1,2))
r2 = ("DEF", (0,3))
assert prioritized_read(r1, r2, 0, 3) == "DAF"
r1 = ("ABC", (0,3))
r2 = ( "DEF", (3,6))
assert prioritized_read(r1, r2, 3, 6) == "DEF"
</code></pre>
<p><code>read_start</code>和{<cd2>}将始终由<code>r1</code>和{<cd4>}的端点为界。在</p>
<p>这里的示例范围很小,但在我的应用程序中,它们可能超过10亿个,所以我正在寻找一个节省时间和内存的解决方案。在</p>
<p>我考虑过把这个贴到<a href="https://codegolf.stackexchange.com/">Programming Puzzles & Code Golf</a>。看起来这应该是一个简单明了的过程。。。但它打败了我。在</p>
<p>注意:我并不是真正从文件中读取,所以我不能使用涉及Python文件对象的解决方案。我只是用文件作为一个方便的类比。在</p>