Simplify integerDivisionDown and integerDivisionUp

This commit is contained in:
DBotThePony 2022-10-22 12:22:08 +07:00
parent 0d52bd8e19
commit 2fc7073c01
Signed by: DBot
GPG Key ID: DCC23B5715498507
2 changed files with 43 additions and 20 deletions

View File

@ -44,16 +44,7 @@ fun BigInteger.toIntSafe(): Int {
@Suppress("SameParameterValue")
fun integerDivisionDown(elements: Int, elementsPerRow: Int): Int {
require(elements >= 0) { "Invalid amount of elements $elements" }
if (elements == 0) {
return 0
}
if (elements % elementsPerRow == 0) {
return elements / elementsPerRow - 1
}
return elements / elementsPerRow
return (elements - 1) / elementsPerRow
}
/**
@ -69,14 +60,5 @@ fun integerDivisionDown(elements: Int, elementsPerRow: Int): Int {
@Suppress("SameParameterValue")
fun integerDivisionUp(elements: Int, elementsPerRow: Int): Int {
require(elements >= 0) { "Invalid amount of elements $elements" }
if (elements == 0) {
return 0
}
if (elements % elementsPerRow == 0) {
return elements / elementsPerRow
}
return elements / elementsPerRow + 1
return (elements + elementsPerRow - 1) / elementsPerRow
}

View File

@ -0,0 +1,41 @@
package ru.dbotthepony.mc.otm.tests
import org.junit.jupiter.api.Assertions.assertEquals
import org.junit.jupiter.api.DisplayName
import org.junit.jupiter.api.Test
import ru.dbotthepony.mc.otm.core.integerDivisionDown
import ru.dbotthepony.mc.otm.core.integerDivisionUp
object MathTests {
@Test
@DisplayName("Integer divisions (round up and round down)")
fun integerDivision() {
assertEquals(0, integerDivisionDown(0, 9))
assertEquals(0, integerDivisionDown(1, 9))
assertEquals(0, integerDivisionDown(4, 9))
assertEquals(0, integerDivisionDown(5, 9))
assertEquals(0, integerDivisionDown(9, 9))
assertEquals(1, integerDivisionDown(10, 9))
assertEquals(1, integerDivisionDown(11, 9))
assertEquals(1, integerDivisionDown(12, 9))
assertEquals(1, integerDivisionDown(15, 9))
assertEquals(1, integerDivisionDown(16, 9))
assertEquals(1, integerDivisionDown(17, 9))
assertEquals(1, integerDivisionDown(18, 9))
assertEquals(2, integerDivisionDown(19, 9))
assertEquals(0, integerDivisionUp(0, 9))
assertEquals(1, integerDivisionUp(1, 9))
assertEquals(1, integerDivisionUp(4, 9))
assertEquals(1, integerDivisionUp(5, 9))
assertEquals(1, integerDivisionUp(9, 9))
assertEquals(2, integerDivisionUp(10, 9))
assertEquals(2, integerDivisionUp(11, 9))
assertEquals(2, integerDivisionUp(12, 9))
assertEquals(2, integerDivisionUp(15, 9))
assertEquals(2, integerDivisionUp(16, 9))
assertEquals(2, integerDivisionUp(17, 9))
assertEquals(2, integerDivisionUp(18, 9))
assertEquals(3, integerDivisionUp(19, 9))
}
}