Компютери бе Интернет вуҷуд дорад, аммо файлро тавассути USB интиқол додан мумкин аст. Планшети дорои интернет мавҷуд аст, ки ин файлро аз он интиқол додан мумкин аст. Шумо метавонед торренти лозимиро дар планшетатон зеркашӣ кунед, аммо фазои холӣ кофӣ нест. Файл дар торрент як ва калон аст.
функсия merge_part як катор риштахоро кабул мекунад streams_in ки як кисми хачмро мехонад buffer_length ва натиҷаи якҷоя кардани қисмҳои риштаҳои гуногунро бармегардонад.
function merge_part(streams_in, buffer_length)
local out_part
for _, stream in ipairs(streams_in) do
local in_part = stream:read(buffer_length)
if not out_part then
out_part = in_part -- просто копируем часть из первого файла
elseif in_part and #in_part > 0 then
if #out_part < #in_part then
out_part, in_part = in_part, out_part
end
if out_part ~= in_part -- данные различаются
and in_part:find("[^ ]") -- есть данные в in_part
and out_part:find(" ", 1, true) -- есть пустые места в out_part
then
local find_index = 1
--[[
функсия string.gsub барои вазифа мувофиқ аст, зеро он қисмҳои бо сифр пуршударо пайдо мекунад ва он чизеро, ки ба он дода шудааст, мерасонад.
--]]
out_part = out_part:gsub(" +", function(zero_string)
if #in_part < find_index then
return -- не на что менять
end
--[[
string.gsub мавкеи дар он пайдо шудани гугирдро намерасонад. Аз ин рӯ, мо барои мавқеъ ҷустуҷӯи мувозӣ мекунем zero_string бо истифода аз функсия string.find. Барои дарёфти байти аввалини сифр кифоя аст.