Jump to content
  • 0

Help for an algorithm


Lover1500

Question

I need a help in writhing script. Read code. 

a = 1
check = 8
divided = check / 2
minus = check - a
if a <= divided then print(minus) end

So what i want is to create an algorithm by using original check number 8.

As example,

Give a random number. Check it if its lower than half of 8.if it is,then show me that

8 - given number. 

So if a number is 1 then show me 7.

If 2, show 6.

If 4,show 4.

 

If 5, then i wont use 8 as check number anymore. Because 5 is greater than half of 8(4). Now i am going use 16(2×8) as check number. 

So if 5 then show 11.

If 7, show 9.

if 8, show 8.

If 9, now its greater than half of 16(8). 

 

So i will use 24(3×8) instead of 16.

Yap the progress is that. Ive tried in many ways till to what i can think.with conbination of loop and table.  But i couldnt. 

How can i create that algorithm.

 

Im really appreciate to hear your help news. Thanks in advance all sir!

 

Link to comment
Share on other sites

2 answers to this question

Recommended Posts

The following solution should work for positive numbers:

-- Taken from https://stackoverflow.com/a/3407254
function roundUp(num, multiple)
  if multiple == 0 then
    return num
  end

  local remainder = num % multiple
  if remainder == 0 then
    return num
  end

  return num + multiple - remainder
end

function calculateResult(num)
  local checkMinBound = num * 2
  local check = roundUp(checkMinBound, 8)
  local result = check - num
  print(result)
  return result
end

-- Test cases
calculateResult(1) -- 7
calculateResult(2) -- 6
calculateResult(4) -- 4
calculateResult(5) -- 11
calculateResult(7) -- 9
calculateResult(8) -- 8
calculateResult(9) -- 15
calculateResult(11) -- 13
calculateResult(15) -- 17

solution.lua

Link to comment
Share on other sites

10 hours ago, CmP said:

The following solution should work for positive numbers:


-- Taken from https://stackoverflow.com/a/3407254
function roundUp(num, multiple)
  if multiple == 0 then
    return num
  end

  local remainder = num % multiple
  if remainder == 0 then
    return num
  end

  return num + multiple - remainder
end

function calculateResult(num)
  local checkMinBound = num * 2
  local check = roundUp(checkMinBound, 8)
  local result = check - num
  print(result)
  return result
end

-- Test cases
calculateResult(1) -- 7
calculateResult(2) -- 6
calculateResult(4) -- 4
calculateResult(5) -- 11
calculateResult(7) -- 9
calculateResult(8) -- 8
calculateResult(9) -- 15
calculateResult(11) -- 13
calculateResult(15) -- 17

Pretty perfect code sir! I need more learning in coding. I'll try. Really thank you !its worth with hundreds likes. 

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.