mirror of
https://github.com/pocketpy/pocketpy
synced 2025-10-19 19:10:17 +00:00
use cpython %
and //
impl
This commit is contained in:
parent
3b76266c6a
commit
8bbdf734f9
@ -35,7 +35,5 @@ The easiest way to test a feature is to [try it on your browser](https://pocketp
|
||||
4. Raw string cannot have boundary quotes in it, even escaped. See [#55](https://github.com/pocketpy/pocketpy/issues/55).
|
||||
5. In a starred unpacked assignment, e.g. `a, b, *c = x`, the starred variable can only be presented in the last position. `a, *b, c = x` is not supported.
|
||||
6. A `Tab` is equivalent to 4 spaces. You can mix `Tab` and spaces in indentation, but it is not recommended.
|
||||
7. `%`, `&`, `//`, `^` and `|` for `int` behave the same as C, not python.
|
||||
8. `str.split` and `str.splitlines` will remove all empty entries.
|
||||
9. A return, break, continue in try/except block will make the finally block not executed.
|
||||
7. A return, break, continue in try/except/with block will make the finally block not executed.
|
||||
|
||||
|
@ -1,8 +1,6 @@
|
||||
from typing import Generic, TypeVar, Iterable
|
||||
from typing import TypeVar, Iterable
|
||||
|
||||
T = TypeVar('T')
|
||||
|
||||
def Counter(iterable: Iterable[T]):
|
||||
def Counter[T](iterable: Iterable[T]):
|
||||
a: dict[T, int] = {}
|
||||
for x in iterable:
|
||||
if x in a:
|
||||
@ -28,7 +26,7 @@ class defaultdict(dict):
|
||||
return defaultdict(self.default_factory, self)
|
||||
|
||||
|
||||
class deque(Generic[T]):
|
||||
class deque[T]:
|
||||
_data: list[T]
|
||||
_head: int
|
||||
_tail: int
|
||||
@ -59,7 +57,7 @@ class deque(Generic[T]):
|
||||
self.__resize_2x()
|
||||
|
||||
def appendleft(self, x: T):
|
||||
self._head = (self._head - 1 + self._capacity) % self._capacity
|
||||
self._head = (self._head - 1) % self._capacity
|
||||
self._data[self._head] = x
|
||||
if (self._tail + 1) % self._capacity == self._head:
|
||||
self.__resize_2x()
|
||||
@ -85,7 +83,7 @@ class deque(Generic[T]):
|
||||
def pop(self) -> T:
|
||||
if self._head == self._tail:
|
||||
raise IndexError("pop from an empty deque")
|
||||
self._tail = (self._tail - 1 + self._capacity) % self._capacity
|
||||
self._tail = (self._tail - 1) % self._capacity
|
||||
return self._data[self._tail]
|
||||
|
||||
def popleft(self) -> T:
|
||||
@ -116,7 +114,7 @@ class deque(Generic[T]):
|
||||
self.append(self.popleft())
|
||||
|
||||
def __len__(self) -> int:
|
||||
return (self._tail - self._head + self._capacity) % self._capacity
|
||||
return (self._tail - self._head) % self._capacity
|
||||
|
||||
def __contains__(self, x: object) -> bool:
|
||||
for item in self:
|
||||
|
File diff suppressed because one or more lines are too long
@ -123,13 +123,35 @@ static bool number__pow__(int argc, py_Ref argv) {
|
||||
return true;
|
||||
}
|
||||
|
||||
static py_i64 cpy11__fast_floor_div(py_i64 a, py_i64 b) {
|
||||
assert(b != 0);
|
||||
if(a == 0) return 0;
|
||||
if((a < 0) == (b < 0)) {
|
||||
return labs(a) / labs(b);
|
||||
} else {
|
||||
return -1 - (labs(a) - 1) / labs(b);
|
||||
}
|
||||
}
|
||||
|
||||
static py_i64 cpy11__fast_mod(py_i64 a, py_i64 b) {
|
||||
assert(b != 0);
|
||||
if(a == 0) return 0;
|
||||
py_i64 res;
|
||||
if((a < 0) == (b < 0)) {
|
||||
res = labs(a) % labs(b);
|
||||
} else {
|
||||
res = labs(b) - 1 - (labs(a) - 1) % labs(b);
|
||||
}
|
||||
return b < 0 ? -res : res;
|
||||
}
|
||||
|
||||
static bool int__floordiv__(int argc, py_Ref argv) {
|
||||
PY_CHECK_ARGC(2);
|
||||
py_i64 lhs = py_toint(&argv[0]);
|
||||
if(py_isint(&argv[1])) {
|
||||
py_i64 rhs = py_toint(&argv[1]);
|
||||
if(rhs == 0) return ZeroDivisionError("integer division or modulo by zero");
|
||||
py_newint(py_retval(), lhs / rhs);
|
||||
if(rhs == 0) return ZeroDivisionError("integer division by zero");
|
||||
py_newint(py_retval(), cpy11__fast_floor_div(lhs, rhs));
|
||||
} else {
|
||||
py_newnotimplemented(py_retval());
|
||||
}
|
||||
@ -141,8 +163,8 @@ static bool int__mod__(int argc, py_Ref argv) {
|
||||
py_i64 lhs = py_toint(&argv[0]);
|
||||
if(py_isint(&argv[1])) {
|
||||
py_i64 rhs = py_toint(&argv[1]);
|
||||
if(rhs == 0) return ZeroDivisionError("integer division or modulo by zero");
|
||||
py_newint(py_retval(), lhs % rhs);
|
||||
if(rhs == 0) return ZeroDivisionError("integer modulo by zero");
|
||||
py_newint(py_retval(), cpy11__fast_mod(lhs, rhs));
|
||||
} else {
|
||||
py_newnotimplemented(py_retval());
|
||||
}
|
||||
@ -156,9 +178,8 @@ static bool int__divmod__(int argc, py_Ref argv) {
|
||||
py_i64 rhs = py_toint(&argv[1]);
|
||||
if(rhs == 0) return ZeroDivisionError("integer division or modulo by zero");
|
||||
py_newtuple(py_retval(), 2);
|
||||
ldiv_t res = ldiv(lhs, rhs);
|
||||
py_newint(py_getslot(py_retval(), 0), res.quot);
|
||||
py_newint(py_getslot(py_retval(), 1), res.rem);
|
||||
py_newint(py_getslot(py_retval(), 0), cpy11__fast_floor_div(lhs, rhs));
|
||||
py_newint(py_getslot(py_retval(), 1), cpy11__fast_mod(lhs, rhs));
|
||||
return true;
|
||||
}
|
||||
|
||||
@ -291,7 +312,7 @@ static bool int__new__(int argc, py_Ref argv) {
|
||||
return true;
|
||||
}
|
||||
case tp_str: break; // leave to the next block
|
||||
default: return pk_callmagic(__int__, 1, argv+1);
|
||||
default: return pk_callmagic(__int__, 1, argv + 1);
|
||||
}
|
||||
}
|
||||
// 2+ args -> error
|
||||
@ -363,7 +384,7 @@ static bool float__new__(int argc, py_Ref argv) {
|
||||
py_newfloat(py_retval(), float_out);
|
||||
return true;
|
||||
}
|
||||
default: return pk_callmagic(__float__, 1, argv+1);
|
||||
default: return pk_callmagic(__float__, 1, argv + 1);
|
||||
}
|
||||
}
|
||||
|
||||
|
803
tests/01_int.py
803
tests/01_int.py
@ -111,45 +111,764 @@ assert abs(0) == 0
|
||||
assert abs(1) == 1
|
||||
assert abs(-1) == 1
|
||||
|
||||
# try:
|
||||
# 1 // 0
|
||||
# exit(1)
|
||||
# except ZeroDivisionError:
|
||||
# pass
|
||||
|
||||
# try:
|
||||
# 1 % 0
|
||||
# exit(1)
|
||||
# except ZeroDivisionError:
|
||||
# pass
|
||||
|
||||
# try:
|
||||
# 2**60 // 0
|
||||
# exit(1)
|
||||
# except ZeroDivisionError:
|
||||
# pass
|
||||
|
||||
# try:
|
||||
# 2**60 % 0
|
||||
# exit(1)
|
||||
# except ZeroDivisionError:
|
||||
# pass
|
||||
|
||||
# try:
|
||||
# divmod(1, 0)
|
||||
# exit(1)
|
||||
# except ZeroDivisionError:
|
||||
# pass
|
||||
|
||||
# try:
|
||||
# divmod(2**60, 0)
|
||||
# exit(1)
|
||||
# except ZeroDivisionError:
|
||||
# pass
|
||||
|
||||
# try:
|
||||
# x = eval("231231312312312312312312312312312312314354657553423345632")
|
||||
# print(f"eval should fail, but got {x!r}")
|
||||
# exit(1)
|
||||
# except SyntaxError:
|
||||
# pass
|
||||
# test negative % and //
|
||||
assert -10 % -10 == 0
|
||||
assert -10 // -10 == 1
|
||||
assert -10 % -9 == -1
|
||||
assert -10 // -9 == 1
|
||||
assert -10 % -8 == -2
|
||||
assert -10 // -8 == 1
|
||||
assert -10 % -7 == -3
|
||||
assert -10 // -7 == 1
|
||||
assert -10 % -6 == -4
|
||||
assert -10 // -6 == 1
|
||||
assert -10 % -5 == 0
|
||||
assert -10 // -5 == 2
|
||||
assert -10 % -4 == -2
|
||||
assert -10 // -4 == 2
|
||||
assert -10 % -3 == -1
|
||||
assert -10 // -3 == 3
|
||||
assert -10 % -2 == 0
|
||||
assert -10 // -2 == 5
|
||||
assert -10 % -1 == 0
|
||||
assert -10 // -1 == 10
|
||||
assert -10 % 1 == 0
|
||||
assert -10 // 1 == -10
|
||||
assert -10 % 2 == 0
|
||||
assert -10 // 2 == -5
|
||||
assert -10 % 3 == 2
|
||||
assert -10 // 3 == -4
|
||||
assert -10 % 4 == 2
|
||||
assert -10 // 4 == -3
|
||||
assert -10 % 5 == 0
|
||||
assert -10 // 5 == -2
|
||||
assert -10 % 6 == 2
|
||||
assert -10 // 6 == -2
|
||||
assert -10 % 7 == 4
|
||||
assert -10 // 7 == -2
|
||||
assert -10 % 8 == 6
|
||||
assert -10 // 8 == -2
|
||||
assert -10 % 9 == 8
|
||||
assert -10 // 9 == -2
|
||||
assert -9 % -10 == -9
|
||||
assert -9 // -10 == 0
|
||||
assert -9 % -9 == 0
|
||||
assert -9 // -9 == 1
|
||||
assert -9 % -8 == -1
|
||||
assert -9 // -8 == 1
|
||||
assert -9 % -7 == -2
|
||||
assert -9 // -7 == 1
|
||||
assert -9 % -6 == -3
|
||||
assert -9 // -6 == 1
|
||||
assert -9 % -5 == -4
|
||||
assert -9 // -5 == 1
|
||||
assert -9 % -4 == -1
|
||||
assert -9 // -4 == 2
|
||||
assert -9 % -3 == 0
|
||||
assert -9 // -3 == 3
|
||||
assert -9 % -2 == -1
|
||||
assert -9 // -2 == 4
|
||||
assert -9 % -1 == 0
|
||||
assert -9 // -1 == 9
|
||||
assert -9 % 1 == 0
|
||||
assert -9 // 1 == -9
|
||||
assert -9 % 2 == 1
|
||||
assert -9 // 2 == -5
|
||||
assert -9 % 3 == 0
|
||||
assert -9 // 3 == -3
|
||||
assert -9 % 4 == 3
|
||||
assert -9 // 4 == -3
|
||||
assert -9 % 5 == 1
|
||||
assert -9 // 5 == -2
|
||||
assert -9 % 6 == 3
|
||||
assert -9 // 6 == -2
|
||||
assert -9 % 7 == 5
|
||||
assert -9 // 7 == -2
|
||||
assert -9 % 8 == 7
|
||||
assert -9 // 8 == -2
|
||||
assert -9 % 9 == 0
|
||||
assert -9 // 9 == -1
|
||||
assert -8 % -10 == -8
|
||||
assert -8 // -10 == 0
|
||||
assert -8 % -9 == -8
|
||||
assert -8 // -9 == 0
|
||||
assert -8 % -8 == 0
|
||||
assert -8 // -8 == 1
|
||||
assert -8 % -7 == -1
|
||||
assert -8 // -7 == 1
|
||||
assert -8 % -6 == -2
|
||||
assert -8 // -6 == 1
|
||||
assert -8 % -5 == -3
|
||||
assert -8 // -5 == 1
|
||||
assert -8 % -4 == 0
|
||||
assert -8 // -4 == 2
|
||||
assert -8 % -3 == -2
|
||||
assert -8 // -3 == 2
|
||||
assert -8 % -2 == 0
|
||||
assert -8 // -2 == 4
|
||||
assert -8 % -1 == 0
|
||||
assert -8 // -1 == 8
|
||||
assert -8 % 1 == 0
|
||||
assert -8 // 1 == -8
|
||||
assert -8 % 2 == 0
|
||||
assert -8 // 2 == -4
|
||||
assert -8 % 3 == 1
|
||||
assert -8 // 3 == -3
|
||||
assert -8 % 4 == 0
|
||||
assert -8 // 4 == -2
|
||||
assert -8 % 5 == 2
|
||||
assert -8 // 5 == -2
|
||||
assert -8 % 6 == 4
|
||||
assert -8 // 6 == -2
|
||||
assert -8 % 7 == 6
|
||||
assert -8 // 7 == -2
|
||||
assert -8 % 8 == 0
|
||||
assert -8 // 8 == -1
|
||||
assert -8 % 9 == 1
|
||||
assert -8 // 9 == -1
|
||||
assert -7 % -10 == -7
|
||||
assert -7 // -10 == 0
|
||||
assert -7 % -9 == -7
|
||||
assert -7 // -9 == 0
|
||||
assert -7 % -8 == -7
|
||||
assert -7 // -8 == 0
|
||||
assert -7 % -7 == 0
|
||||
assert -7 // -7 == 1
|
||||
assert -7 % -6 == -1
|
||||
assert -7 // -6 == 1
|
||||
assert -7 % -5 == -2
|
||||
assert -7 // -5 == 1
|
||||
assert -7 % -4 == -3
|
||||
assert -7 // -4 == 1
|
||||
assert -7 % -3 == -1
|
||||
assert -7 // -3 == 2
|
||||
assert -7 % -2 == -1
|
||||
assert -7 // -2 == 3
|
||||
assert -7 % -1 == 0
|
||||
assert -7 // -1 == 7
|
||||
assert -7 % 1 == 0
|
||||
assert -7 // 1 == -7
|
||||
assert -7 % 2 == 1
|
||||
assert -7 // 2 == -4
|
||||
assert -7 % 3 == 2
|
||||
assert -7 // 3 == -3
|
||||
assert -7 % 4 == 1
|
||||
assert -7 // 4 == -2
|
||||
assert -7 % 5 == 3
|
||||
assert -7 // 5 == -2
|
||||
assert -7 % 6 == 5
|
||||
assert -7 // 6 == -2
|
||||
assert -7 % 7 == 0
|
||||
assert -7 // 7 == -1
|
||||
assert -7 % 8 == 1
|
||||
assert -7 // 8 == -1
|
||||
assert -7 % 9 == 2
|
||||
assert -7 // 9 == -1
|
||||
assert -6 % -10 == -6
|
||||
assert -6 // -10 == 0
|
||||
assert -6 % -9 == -6
|
||||
assert -6 // -9 == 0
|
||||
assert -6 % -8 == -6
|
||||
assert -6 // -8 == 0
|
||||
assert -6 % -7 == -6
|
||||
assert -6 // -7 == 0
|
||||
assert -6 % -6 == 0
|
||||
assert -6 // -6 == 1
|
||||
assert -6 % -5 == -1
|
||||
assert -6 // -5 == 1
|
||||
assert -6 % -4 == -2
|
||||
assert -6 // -4 == 1
|
||||
assert -6 % -3 == 0
|
||||
assert -6 // -3 == 2
|
||||
assert -6 % -2 == 0
|
||||
assert -6 // -2 == 3
|
||||
assert -6 % -1 == 0
|
||||
assert -6 // -1 == 6
|
||||
assert -6 % 1 == 0
|
||||
assert -6 // 1 == -6
|
||||
assert -6 % 2 == 0
|
||||
assert -6 // 2 == -3
|
||||
assert -6 % 3 == 0
|
||||
assert -6 // 3 == -2
|
||||
assert -6 % 4 == 2
|
||||
assert -6 // 4 == -2
|
||||
assert -6 % 5 == 4
|
||||
assert -6 // 5 == -2
|
||||
assert -6 % 6 == 0
|
||||
assert -6 // 6 == -1
|
||||
assert -6 % 7 == 1
|
||||
assert -6 // 7 == -1
|
||||
assert -6 % 8 == 2
|
||||
assert -6 // 8 == -1
|
||||
assert -6 % 9 == 3
|
||||
assert -6 // 9 == -1
|
||||
assert -5 % -10 == -5
|
||||
assert -5 // -10 == 0
|
||||
assert -5 % -9 == -5
|
||||
assert -5 // -9 == 0
|
||||
assert -5 % -8 == -5
|
||||
assert -5 // -8 == 0
|
||||
assert -5 % -7 == -5
|
||||
assert -5 // -7 == 0
|
||||
assert -5 % -6 == -5
|
||||
assert -5 // -6 == 0
|
||||
assert -5 % -5 == 0
|
||||
assert -5 // -5 == 1
|
||||
assert -5 % -4 == -1
|
||||
assert -5 // -4 == 1
|
||||
assert -5 % -3 == -2
|
||||
assert -5 // -3 == 1
|
||||
assert -5 % -2 == -1
|
||||
assert -5 // -2 == 2
|
||||
assert -5 % -1 == 0
|
||||
assert -5 // -1 == 5
|
||||
assert -5 % 1 == 0
|
||||
assert -5 // 1 == -5
|
||||
assert -5 % 2 == 1
|
||||
assert -5 // 2 == -3
|
||||
assert -5 % 3 == 1
|
||||
assert -5 // 3 == -2
|
||||
assert -5 % 4 == 3
|
||||
assert -5 // 4 == -2
|
||||
assert -5 % 5 == 0
|
||||
assert -5 // 5 == -1
|
||||
assert -5 % 6 == 1
|
||||
assert -5 // 6 == -1
|
||||
assert -5 % 7 == 2
|
||||
assert -5 // 7 == -1
|
||||
assert -5 % 8 == 3
|
||||
assert -5 // 8 == -1
|
||||
assert -5 % 9 == 4
|
||||
assert -5 // 9 == -1
|
||||
assert -4 % -10 == -4
|
||||
assert -4 // -10 == 0
|
||||
assert -4 % -9 == -4
|
||||
assert -4 // -9 == 0
|
||||
assert -4 % -8 == -4
|
||||
assert -4 // -8 == 0
|
||||
assert -4 % -7 == -4
|
||||
assert -4 // -7 == 0
|
||||
assert -4 % -6 == -4
|
||||
assert -4 // -6 == 0
|
||||
assert -4 % -5 == -4
|
||||
assert -4 // -5 == 0
|
||||
assert -4 % -4 == 0
|
||||
assert -4 // -4 == 1
|
||||
assert -4 % -3 == -1
|
||||
assert -4 // -3 == 1
|
||||
assert -4 % -2 == 0
|
||||
assert -4 // -2 == 2
|
||||
assert -4 % -1 == 0
|
||||
assert -4 // -1 == 4
|
||||
assert -4 % 1 == 0
|
||||
assert -4 // 1 == -4
|
||||
assert -4 % 2 == 0
|
||||
assert -4 // 2 == -2
|
||||
assert -4 % 3 == 2
|
||||
assert -4 // 3 == -2
|
||||
assert -4 % 4 == 0
|
||||
assert -4 // 4 == -1
|
||||
assert -4 % 5 == 1
|
||||
assert -4 // 5 == -1
|
||||
assert -4 % 6 == 2
|
||||
assert -4 // 6 == -1
|
||||
assert -4 % 7 == 3
|
||||
assert -4 // 7 == -1
|
||||
assert -4 % 8 == 4
|
||||
assert -4 // 8 == -1
|
||||
assert -4 % 9 == 5
|
||||
assert -4 // 9 == -1
|
||||
assert -3 % -10 == -3
|
||||
assert -3 // -10 == 0
|
||||
assert -3 % -9 == -3
|
||||
assert -3 // -9 == 0
|
||||
assert -3 % -8 == -3
|
||||
assert -3 // -8 == 0
|
||||
assert -3 % -7 == -3
|
||||
assert -3 // -7 == 0
|
||||
assert -3 % -6 == -3
|
||||
assert -3 // -6 == 0
|
||||
assert -3 % -5 == -3
|
||||
assert -3 // -5 == 0
|
||||
assert -3 % -4 == -3
|
||||
assert -3 // -4 == 0
|
||||
assert -3 % -3 == 0
|
||||
assert -3 // -3 == 1
|
||||
assert -3 % -2 == -1
|
||||
assert -3 // -2 == 1
|
||||
assert -3 % -1 == 0
|
||||
assert -3 // -1 == 3
|
||||
assert -3 % 1 == 0
|
||||
assert -3 // 1 == -3
|
||||
assert -3 % 2 == 1
|
||||
assert -3 // 2 == -2
|
||||
assert -3 % 3 == 0
|
||||
assert -3 // 3 == -1
|
||||
assert -3 % 4 == 1
|
||||
assert -3 // 4 == -1
|
||||
assert -3 % 5 == 2
|
||||
assert -3 // 5 == -1
|
||||
assert -3 % 6 == 3
|
||||
assert -3 // 6 == -1
|
||||
assert -3 % 7 == 4
|
||||
assert -3 // 7 == -1
|
||||
assert -3 % 8 == 5
|
||||
assert -3 // 8 == -1
|
||||
assert -3 % 9 == 6
|
||||
assert -3 // 9 == -1
|
||||
assert -2 % -10 == -2
|
||||
assert -2 // -10 == 0
|
||||
assert -2 % -9 == -2
|
||||
assert -2 // -9 == 0
|
||||
assert -2 % -8 == -2
|
||||
assert -2 // -8 == 0
|
||||
assert -2 % -7 == -2
|
||||
assert -2 // -7 == 0
|
||||
assert -2 % -6 == -2
|
||||
assert -2 // -6 == 0
|
||||
assert -2 % -5 == -2
|
||||
assert -2 // -5 == 0
|
||||
assert -2 % -4 == -2
|
||||
assert -2 // -4 == 0
|
||||
assert -2 % -3 == -2
|
||||
assert -2 // -3 == 0
|
||||
assert -2 % -2 == 0
|
||||
assert -2 // -2 == 1
|
||||
assert -2 % -1 == 0
|
||||
assert -2 // -1 == 2
|
||||
assert -2 % 1 == 0
|
||||
assert -2 // 1 == -2
|
||||
assert -2 % 2 == 0
|
||||
assert -2 // 2 == -1
|
||||
assert -2 % 3 == 1
|
||||
assert -2 // 3 == -1
|
||||
assert -2 % 4 == 2
|
||||
assert -2 // 4 == -1
|
||||
assert -2 % 5 == 3
|
||||
assert -2 // 5 == -1
|
||||
assert -2 % 6 == 4
|
||||
assert -2 // 6 == -1
|
||||
assert -2 % 7 == 5
|
||||
assert -2 // 7 == -1
|
||||
assert -2 % 8 == 6
|
||||
assert -2 // 8 == -1
|
||||
assert -2 % 9 == 7
|
||||
assert -2 // 9 == -1
|
||||
assert -1 % -10 == -1
|
||||
assert -1 // -10 == 0
|
||||
assert -1 % -9 == -1
|
||||
assert -1 // -9 == 0
|
||||
assert -1 % -8 == -1
|
||||
assert -1 // -8 == 0
|
||||
assert -1 % -7 == -1
|
||||
assert -1 // -7 == 0
|
||||
assert -1 % -6 == -1
|
||||
assert -1 // -6 == 0
|
||||
assert -1 % -5 == -1
|
||||
assert -1 // -5 == 0
|
||||
assert -1 % -4 == -1
|
||||
assert -1 // -4 == 0
|
||||
assert -1 % -3 == -1
|
||||
assert -1 // -3 == 0
|
||||
assert -1 % -2 == -1
|
||||
assert -1 // -2 == 0
|
||||
assert -1 % -1 == 0
|
||||
assert -1 // -1 == 1
|
||||
assert -1 % 1 == 0
|
||||
assert -1 // 1 == -1
|
||||
assert -1 % 2 == 1
|
||||
assert -1 // 2 == -1
|
||||
assert -1 % 3 == 2
|
||||
assert -1 // 3 == -1
|
||||
assert -1 % 4 == 3
|
||||
assert -1 // 4 == -1
|
||||
assert -1 % 5 == 4
|
||||
assert -1 // 5 == -1
|
||||
assert -1 % 6 == 5
|
||||
assert -1 // 6 == -1
|
||||
assert -1 % 7 == 6
|
||||
assert -1 // 7 == -1
|
||||
assert -1 % 8 == 7
|
||||
assert -1 // 8 == -1
|
||||
assert -1 % 9 == 8
|
||||
assert -1 // 9 == -1
|
||||
assert 0 % -10 == 0
|
||||
assert 0 // -10 == 0
|
||||
assert 0 % -9 == 0
|
||||
assert 0 // -9 == 0
|
||||
assert 0 % -8 == 0
|
||||
assert 0 // -8 == 0
|
||||
assert 0 % -7 == 0
|
||||
assert 0 // -7 == 0
|
||||
assert 0 % -6 == 0
|
||||
assert 0 // -6 == 0
|
||||
assert 0 % -5 == 0
|
||||
assert 0 // -5 == 0
|
||||
assert 0 % -4 == 0
|
||||
assert 0 // -4 == 0
|
||||
assert 0 % -3 == 0
|
||||
assert 0 // -3 == 0
|
||||
assert 0 % -2 == 0
|
||||
assert 0 // -2 == 0
|
||||
assert 0 % -1 == 0
|
||||
assert 0 // -1 == 0
|
||||
assert 0 % 1 == 0
|
||||
assert 0 // 1 == 0
|
||||
assert 0 % 2 == 0
|
||||
assert 0 // 2 == 0
|
||||
assert 0 % 3 == 0
|
||||
assert 0 // 3 == 0
|
||||
assert 0 % 4 == 0
|
||||
assert 0 // 4 == 0
|
||||
assert 0 % 5 == 0
|
||||
assert 0 // 5 == 0
|
||||
assert 0 % 6 == 0
|
||||
assert 0 // 6 == 0
|
||||
assert 0 % 7 == 0
|
||||
assert 0 // 7 == 0
|
||||
assert 0 % 8 == 0
|
||||
assert 0 // 8 == 0
|
||||
assert 0 % 9 == 0
|
||||
assert 0 // 9 == 0
|
||||
assert 1 % -10 == -9
|
||||
assert 1 // -10 == -1
|
||||
assert 1 % -9 == -8
|
||||
assert 1 // -9 == -1
|
||||
assert 1 % -8 == -7
|
||||
assert 1 // -8 == -1
|
||||
assert 1 % -7 == -6
|
||||
assert 1 // -7 == -1
|
||||
assert 1 % -6 == -5
|
||||
assert 1 // -6 == -1
|
||||
assert 1 % -5 == -4
|
||||
assert 1 // -5 == -1
|
||||
assert 1 % -4 == -3
|
||||
assert 1 // -4 == -1
|
||||
assert 1 % -3 == -2
|
||||
assert 1 // -3 == -1
|
||||
assert 1 % -2 == -1
|
||||
assert 1 // -2 == -1
|
||||
assert 1 % -1 == 0
|
||||
assert 1 // -1 == -1
|
||||
assert 1 % 1 == 0
|
||||
assert 1 // 1 == 1
|
||||
assert 1 % 2 == 1
|
||||
assert 1 // 2 == 0
|
||||
assert 1 % 3 == 1
|
||||
assert 1 // 3 == 0
|
||||
assert 1 % 4 == 1
|
||||
assert 1 // 4 == 0
|
||||
assert 1 % 5 == 1
|
||||
assert 1 // 5 == 0
|
||||
assert 1 % 6 == 1
|
||||
assert 1 // 6 == 0
|
||||
assert 1 % 7 == 1
|
||||
assert 1 // 7 == 0
|
||||
assert 1 % 8 == 1
|
||||
assert 1 // 8 == 0
|
||||
assert 1 % 9 == 1
|
||||
assert 1 // 9 == 0
|
||||
assert 2 % -10 == -8
|
||||
assert 2 // -10 == -1
|
||||
assert 2 % -9 == -7
|
||||
assert 2 // -9 == -1
|
||||
assert 2 % -8 == -6
|
||||
assert 2 // -8 == -1
|
||||
assert 2 % -7 == -5
|
||||
assert 2 // -7 == -1
|
||||
assert 2 % -6 == -4
|
||||
assert 2 // -6 == -1
|
||||
assert 2 % -5 == -3
|
||||
assert 2 // -5 == -1
|
||||
assert 2 % -4 == -2
|
||||
assert 2 // -4 == -1
|
||||
assert 2 % -3 == -1
|
||||
assert 2 // -3 == -1
|
||||
assert 2 % -2 == 0
|
||||
assert 2 // -2 == -1
|
||||
assert 2 % -1 == 0
|
||||
assert 2 // -1 == -2
|
||||
assert 2 % 1 == 0
|
||||
assert 2 // 1 == 2
|
||||
assert 2 % 2 == 0
|
||||
assert 2 // 2 == 1
|
||||
assert 2 % 3 == 2
|
||||
assert 2 // 3 == 0
|
||||
assert 2 % 4 == 2
|
||||
assert 2 // 4 == 0
|
||||
assert 2 % 5 == 2
|
||||
assert 2 // 5 == 0
|
||||
assert 2 % 6 == 2
|
||||
assert 2 // 6 == 0
|
||||
assert 2 % 7 == 2
|
||||
assert 2 // 7 == 0
|
||||
assert 2 % 8 == 2
|
||||
assert 2 // 8 == 0
|
||||
assert 2 % 9 == 2
|
||||
assert 2 // 9 == 0
|
||||
assert 3 % -10 == -7
|
||||
assert 3 // -10 == -1
|
||||
assert 3 % -9 == -6
|
||||
assert 3 // -9 == -1
|
||||
assert 3 % -8 == -5
|
||||
assert 3 // -8 == -1
|
||||
assert 3 % -7 == -4
|
||||
assert 3 // -7 == -1
|
||||
assert 3 % -6 == -3
|
||||
assert 3 // -6 == -1
|
||||
assert 3 % -5 == -2
|
||||
assert 3 // -5 == -1
|
||||
assert 3 % -4 == -1
|
||||
assert 3 // -4 == -1
|
||||
assert 3 % -3 == 0
|
||||
assert 3 // -3 == -1
|
||||
assert 3 % -2 == -1
|
||||
assert 3 // -2 == -2
|
||||
assert 3 % -1 == 0
|
||||
assert 3 // -1 == -3
|
||||
assert 3 % 1 == 0
|
||||
assert 3 // 1 == 3
|
||||
assert 3 % 2 == 1
|
||||
assert 3 // 2 == 1
|
||||
assert 3 % 3 == 0
|
||||
assert 3 // 3 == 1
|
||||
assert 3 % 4 == 3
|
||||
assert 3 // 4 == 0
|
||||
assert 3 % 5 == 3
|
||||
assert 3 // 5 == 0
|
||||
assert 3 % 6 == 3
|
||||
assert 3 // 6 == 0
|
||||
assert 3 % 7 == 3
|
||||
assert 3 // 7 == 0
|
||||
assert 3 % 8 == 3
|
||||
assert 3 // 8 == 0
|
||||
assert 3 % 9 == 3
|
||||
assert 3 // 9 == 0
|
||||
assert 4 % -10 == -6
|
||||
assert 4 // -10 == -1
|
||||
assert 4 % -9 == -5
|
||||
assert 4 // -9 == -1
|
||||
assert 4 % -8 == -4
|
||||
assert 4 // -8 == -1
|
||||
assert 4 % -7 == -3
|
||||
assert 4 // -7 == -1
|
||||
assert 4 % -6 == -2
|
||||
assert 4 // -6 == -1
|
||||
assert 4 % -5 == -1
|
||||
assert 4 // -5 == -1
|
||||
assert 4 % -4 == 0
|
||||
assert 4 // -4 == -1
|
||||
assert 4 % -3 == -2
|
||||
assert 4 // -3 == -2
|
||||
assert 4 % -2 == 0
|
||||
assert 4 // -2 == -2
|
||||
assert 4 % -1 == 0
|
||||
assert 4 // -1 == -4
|
||||
assert 4 % 1 == 0
|
||||
assert 4 // 1 == 4
|
||||
assert 4 % 2 == 0
|
||||
assert 4 // 2 == 2
|
||||
assert 4 % 3 == 1
|
||||
assert 4 // 3 == 1
|
||||
assert 4 % 4 == 0
|
||||
assert 4 // 4 == 1
|
||||
assert 4 % 5 == 4
|
||||
assert 4 // 5 == 0
|
||||
assert 4 % 6 == 4
|
||||
assert 4 // 6 == 0
|
||||
assert 4 % 7 == 4
|
||||
assert 4 // 7 == 0
|
||||
assert 4 % 8 == 4
|
||||
assert 4 // 8 == 0
|
||||
assert 4 % 9 == 4
|
||||
assert 4 // 9 == 0
|
||||
assert 5 % -10 == -5
|
||||
assert 5 // -10 == -1
|
||||
assert 5 % -9 == -4
|
||||
assert 5 // -9 == -1
|
||||
assert 5 % -8 == -3
|
||||
assert 5 // -8 == -1
|
||||
assert 5 % -7 == -2
|
||||
assert 5 // -7 == -1
|
||||
assert 5 % -6 == -1
|
||||
assert 5 // -6 == -1
|
||||
assert 5 % -5 == 0
|
||||
assert 5 // -5 == -1
|
||||
assert 5 % -4 == -3
|
||||
assert 5 // -4 == -2
|
||||
assert 5 % -3 == -1
|
||||
assert 5 // -3 == -2
|
||||
assert 5 % -2 == -1
|
||||
assert 5 // -2 == -3
|
||||
assert 5 % -1 == 0
|
||||
assert 5 // -1 == -5
|
||||
assert 5 % 1 == 0
|
||||
assert 5 // 1 == 5
|
||||
assert 5 % 2 == 1
|
||||
assert 5 // 2 == 2
|
||||
assert 5 % 3 == 2
|
||||
assert 5 // 3 == 1
|
||||
assert 5 % 4 == 1
|
||||
assert 5 // 4 == 1
|
||||
assert 5 % 5 == 0
|
||||
assert 5 // 5 == 1
|
||||
assert 5 % 6 == 5
|
||||
assert 5 // 6 == 0
|
||||
assert 5 % 7 == 5
|
||||
assert 5 // 7 == 0
|
||||
assert 5 % 8 == 5
|
||||
assert 5 // 8 == 0
|
||||
assert 5 % 9 == 5
|
||||
assert 5 // 9 == 0
|
||||
assert 6 % -10 == -4
|
||||
assert 6 // -10 == -1
|
||||
assert 6 % -9 == -3
|
||||
assert 6 // -9 == -1
|
||||
assert 6 % -8 == -2
|
||||
assert 6 // -8 == -1
|
||||
assert 6 % -7 == -1
|
||||
assert 6 // -7 == -1
|
||||
assert 6 % -6 == 0
|
||||
assert 6 // -6 == -1
|
||||
assert 6 % -5 == -4
|
||||
assert 6 // -5 == -2
|
||||
assert 6 % -4 == -2
|
||||
assert 6 // -4 == -2
|
||||
assert 6 % -3 == 0
|
||||
assert 6 // -3 == -2
|
||||
assert 6 % -2 == 0
|
||||
assert 6 // -2 == -3
|
||||
assert 6 % -1 == 0
|
||||
assert 6 // -1 == -6
|
||||
assert 6 % 1 == 0
|
||||
assert 6 // 1 == 6
|
||||
assert 6 % 2 == 0
|
||||
assert 6 // 2 == 3
|
||||
assert 6 % 3 == 0
|
||||
assert 6 // 3 == 2
|
||||
assert 6 % 4 == 2
|
||||
assert 6 // 4 == 1
|
||||
assert 6 % 5 == 1
|
||||
assert 6 // 5 == 1
|
||||
assert 6 % 6 == 0
|
||||
assert 6 // 6 == 1
|
||||
assert 6 % 7 == 6
|
||||
assert 6 // 7 == 0
|
||||
assert 6 % 8 == 6
|
||||
assert 6 // 8 == 0
|
||||
assert 6 % 9 == 6
|
||||
assert 6 // 9 == 0
|
||||
assert 7 % -10 == -3
|
||||
assert 7 // -10 == -1
|
||||
assert 7 % -9 == -2
|
||||
assert 7 // -9 == -1
|
||||
assert 7 % -8 == -1
|
||||
assert 7 // -8 == -1
|
||||
assert 7 % -7 == 0
|
||||
assert 7 // -7 == -1
|
||||
assert 7 % -6 == -5
|
||||
assert 7 // -6 == -2
|
||||
assert 7 % -5 == -3
|
||||
assert 7 // -5 == -2
|
||||
assert 7 % -4 == -1
|
||||
assert 7 // -4 == -2
|
||||
assert 7 % -3 == -2
|
||||
assert 7 // -3 == -3
|
||||
assert 7 % -2 == -1
|
||||
assert 7 // -2 == -4
|
||||
assert 7 % -1 == 0
|
||||
assert 7 // -1 == -7
|
||||
assert 7 % 1 == 0
|
||||
assert 7 // 1 == 7
|
||||
assert 7 % 2 == 1
|
||||
assert 7 // 2 == 3
|
||||
assert 7 % 3 == 1
|
||||
assert 7 // 3 == 2
|
||||
assert 7 % 4 == 3
|
||||
assert 7 // 4 == 1
|
||||
assert 7 % 5 == 2
|
||||
assert 7 // 5 == 1
|
||||
assert 7 % 6 == 1
|
||||
assert 7 // 6 == 1
|
||||
assert 7 % 7 == 0
|
||||
assert 7 // 7 == 1
|
||||
assert 7 % 8 == 7
|
||||
assert 7 // 8 == 0
|
||||
assert 7 % 9 == 7
|
||||
assert 7 // 9 == 0
|
||||
assert 8 % -10 == -2
|
||||
assert 8 // -10 == -1
|
||||
assert 8 % -9 == -1
|
||||
assert 8 // -9 == -1
|
||||
assert 8 % -8 == 0
|
||||
assert 8 // -8 == -1
|
||||
assert 8 % -7 == -6
|
||||
assert 8 // -7 == -2
|
||||
assert 8 % -6 == -4
|
||||
assert 8 // -6 == -2
|
||||
assert 8 % -5 == -2
|
||||
assert 8 // -5 == -2
|
||||
assert 8 % -4 == 0
|
||||
assert 8 // -4 == -2
|
||||
assert 8 % -3 == -1
|
||||
assert 8 // -3 == -3
|
||||
assert 8 % -2 == 0
|
||||
assert 8 // -2 == -4
|
||||
assert 8 % -1 == 0
|
||||
assert 8 // -1 == -8
|
||||
assert 8 % 1 == 0
|
||||
assert 8 // 1 == 8
|
||||
assert 8 % 2 == 0
|
||||
assert 8 // 2 == 4
|
||||
assert 8 % 3 == 2
|
||||
assert 8 // 3 == 2
|
||||
assert 8 % 4 == 0
|
||||
assert 8 // 4 == 2
|
||||
assert 8 % 5 == 3
|
||||
assert 8 // 5 == 1
|
||||
assert 8 % 6 == 2
|
||||
assert 8 // 6 == 1
|
||||
assert 8 % 7 == 1
|
||||
assert 8 // 7 == 1
|
||||
assert 8 % 8 == 0
|
||||
assert 8 // 8 == 1
|
||||
assert 8 % 9 == 8
|
||||
assert 8 // 9 == 0
|
||||
assert 9 % -10 == -1
|
||||
assert 9 // -10 == -1
|
||||
assert 9 % -9 == 0
|
||||
assert 9 // -9 == -1
|
||||
assert 9 % -8 == -7
|
||||
assert 9 // -8 == -2
|
||||
assert 9 % -7 == -5
|
||||
assert 9 // -7 == -2
|
||||
assert 9 % -6 == -3
|
||||
assert 9 // -6 == -2
|
||||
assert 9 % -5 == -1
|
||||
assert 9 // -5 == -2
|
||||
assert 9 % -4 == -3
|
||||
assert 9 // -4 == -3
|
||||
assert 9 % -3 == 0
|
||||
assert 9 // -3 == -3
|
||||
assert 9 % -2 == -1
|
||||
assert 9 // -2 == -5
|
||||
assert 9 % -1 == 0
|
||||
assert 9 // -1 == -9
|
||||
assert 9 % 1 == 0
|
||||
assert 9 // 1 == 9
|
||||
assert 9 % 2 == 1
|
||||
assert 9 // 2 == 4
|
||||
assert 9 % 3 == 0
|
||||
assert 9 // 3 == 3
|
||||
assert 9 % 4 == 1
|
||||
assert 9 // 4 == 2
|
||||
assert 9 % 5 == 4
|
||||
assert 9 // 5 == 1
|
||||
assert 9 % 6 == 3
|
||||
assert 9 // 6 == 1
|
||||
assert 9 % 7 == 2
|
||||
assert 9 // 7 == 1
|
||||
assert 9 % 8 == 1
|
||||
assert 9 // 8 == 1
|
||||
assert 9 % 9 == 0
|
||||
assert 9 // 9 == 1
|
Loading…
x
Reference in New Issue
Block a user