История изменений
Исправление LINUX-ORG-RU, (текущая версия) :
Битмаски в битмасках, что ли?
Ага
Сделайте одну общую битмаску удвоенного размера
Ну там отличия копеешные будут. Но, да можно чередовать, а можно просто сначала кусок одних бит потом кусок других бит. Оставим это следующим господам. У меня вообще с комбинациями очень плохо, мозг клинит из недавнего Как понять что ты тупой?
А пока, а пока ррррандом р-р-р-руулит :D
local loadstring = loadstring or load;
local res = { }
local opr = {'+','-'}
local r = function(data,buf)
if not buf[1] then
return '',false
end
if data[#data] ~= '+' and data[#data] ~= '-'
and #data > 0 and math.random(0,1) == 0 then
return opr[math.random(1,2)],true
end
return table.remove(buf,1),true
end
while(true) do
local out = {}
local buf = {9,8,7,6,5,4,3,2,1,0}
local doi = true
while(doi) do
out[#out+1],doi = r(out,buf)
end
local static = table.concat(out)
if loadstring('return '..static)() == 200 then
if not res[static] then
res[static] = true
print(static..' == 200');
end
end
end
dron@gnu:~/Рабочий-стол$ lua test.lua
9-8-7-6-5+4+3+210 == 200
98-7+65+43+2-1+0 == 200
98+76-5+43-2-10 == 200
98-7+65+43+2-1-0 == 200
9-8+7-6-5-4-3+210 == 200
^C
Исправление LINUX-ORG-RU, :
Битмаски в битмасках, что ли?
Ага
Сделайте одну общую битмаску удвоенного размера
Ну там отличия копеешные будут. Но, да можно чередовать, а можно просто сначала кусок одних бит потом кусок других бит. Оставим это следующим господам.
А пока, а пока ррррандом р-р-р-руулит :D
local loadstring = loadstring or load;
local res = { }
local opr = {'+','-'}
local r = function(data,buf)
if not buf[1] then
return '',false
end
if data[#data] ~= '+' and data[#data] ~= '-'
and #data > 0 and math.random(0,1) == 0 then
return opr[math.random(1,2)],true
end
return table.remove(buf,1),true
end
while(true) do
local out = {}
local buf = {9,8,7,6,5,4,3,2,1,0}
local doi = true
while(doi) do
out[#out+1],doi = r(out,buf)
end
local static = table.concat(out)
if loadstring('return '..static)() == 200 then
if not res[static] then
res[static] = true
print(static..' == 200');
end
end
end
dron@gnu:~/Рабочий-стол$ lua test.lua
9-8-7-6-5+4+3+210 == 200
98-7+65+43+2-1+0 == 200
98+76-5+43-2-10 == 200
98-7+65+43+2-1-0 == 200
9-8+7-6-5-4-3+210 == 200
^C
Исходная версия LINUX-ORG-RU, :
Сделайте одну общую битмаску удвоенного размера
Ну там отличия копеешные будут. Но, да можно чередовать, а можно просто сначала кусок одних бит потом кусок других бит. Оставим это следующим господам.
А пока, а пока ррррандом р-р-р-руулит :D
local loadstring = loadstring or load;
local res = { }
local opr = {'+','-'}
local r = function(data,buf)
if not buf[1] then
return '',false
end
if data[#data] ~= '+' and data[#data] ~= '-'
and #data > 0 and math.random(0,1) == 0 then
return opr[math.random(1,2)],true
end
return table.remove(buf,1),true
end
while(true) do
local out = {}
local buf = {9,8,7,6,5,4,3,2,1,0}
local doi = true
while(doi) do
out[#out+1],doi = r(out,buf)
end
local static = table.concat(out)
if loadstring('return '..static)() == 200 then
if not res[static] then
res[static] = true
print(static..' == 200');
end
end
end
dron@gnu:~/Рабочий-стол$ lua test.lua
9-8-7-6-5+4+3+210 == 200
98-7+65+43+2-1+0 == 200
98+76-5+43-2-10 == 200
98-7+65+43+2-1-0 == 200
9-8+7-6-5-4-3+210 == 200
^C