From 52227188a5555f49dff13ec0f1153e17d9c2a6d2 Mon Sep 17 00:00:00 2001 From: Vasily Guzov Date: Sun, 13 Oct 2024 21:22:39 +0300 Subject: [PATCH] [math][fundamental rulese to devide nume to 11 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Функция находит числа в массиве чисел, которые деляться на 11 --- lib/isDevided11/index.ts | 3 +++ lib/isDevided11/isDevided11.test.ts | 17 +++++++++++++ lib/isDevided11/isDevided11.ts | 39 +++++++++++++++++++++++++++++ 3 files changed, 59 insertions(+) create mode 100644 lib/isDevided11/index.ts create mode 100644 lib/isDevided11/isDevided11.test.ts create mode 100644 lib/isDevided11/isDevided11.ts diff --git a/lib/isDevided11/index.ts b/lib/isDevided11/index.ts new file mode 100644 index 0000000..b1e41ed --- /dev/null +++ b/lib/isDevided11/index.ts @@ -0,0 +1,3 @@ +import { isDevided11 } from "./isDevided11"; + +export default isDevided11; diff --git a/lib/isDevided11/isDevided11.test.ts b/lib/isDevided11/isDevided11.test.ts new file mode 100644 index 0000000..43c5767 --- /dev/null +++ b/lib/isDevided11/isDevided11.test.ts @@ -0,0 +1,17 @@ +import { describe, it, expect } from "vitest"; +import { isDevided11 } from "./isDevided11.ts"; + +describe("isDevided11", () => { + + const res = [264, 462]; + + + it("isDevided11 [1, 2, 4, 6 ]", () => { + expect(isDevided11([1, 2, 4, 6]).length).toEqual(2); + }); + + it("isDevided11 [1, 2, 4, 6 ] result is equale [264, 462]", () => { + expect(isDevided11([1, 2, 4, 6])).toEqual(res); + }); + +}); diff --git a/lib/isDevided11/isDevided11.ts b/lib/isDevided11/isDevided11.ts new file mode 100644 index 0000000..2f78d32 --- /dev/null +++ b/lib/isDevided11/isDevided11.ts @@ -0,0 +1,39 @@ +export function isDevided11(numbers: number[]): number[] { + const res: number[] = []; + let L = 1; + let R = numbers.length - 1 + let M = 0; + + while (L <= numbers.length - 1 || R >= 0) { + const L_NUM = numbers[L]; + const R_NUM = numbers[R]; + + while (M <= numbers.length - 1) { + const M_NUM = numbers[M]; + + if (((L_NUM + R_NUM) - M_NUM) % 11 === 0) { + res.push(+`${L_NUM}${M_NUM}${R_NUM}`) + res.push(+`${R_NUM}${M_NUM}${L_NUM}`) + } + + if (((L_NUM + M_NUM) - R_NUM) % 11 === 0) { + res.push(+`${L_NUM}${R_NUM}${M_NUM}`) + res.push(+`${M_NUM}${R_NUM}${L_NUM}`) + } + + if (((R_NUM + M_NUM) - L_NUM) % 11 === 0) { + res.push(+`${R_NUM}${L_NUM}${M_NUM}`) + res.push(+`${M_NUM}${L_NUM}${R_NUM}`) + } + + M++ + } + + L++ + R-- + + } + + + return res; +};