LINUX.ORG.RU

История изменений

Исправление 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