umt 1.1.7 → 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (72) hide show
  1. package/module/Advance/index.d.ts +1 -0
  2. package/module/Advance/rangeAdvance.d.ts +9 -0
  3. package/module/Array/checkFlagAlignment.d.ts +3 -0
  4. package/module/Array/checkFlagAlignment.js +26 -0
  5. package/module/Array/checkFlagAlignment.js.map +1 -0
  6. package/module/Date/index.d.ts +2 -3
  7. package/module/Math/calculator/convertCurrency.js +4 -4
  8. package/module/Math/calculator/convertCurrency.js.map +1 -1
  9. package/module/Math/calculator/core.js +66 -40
  10. package/module/Math/calculator/core.js.map +1 -1
  11. package/module/Math/calculator/index.d.ts +5 -6
  12. package/module/Math/calculator/literalExpression.d.ts +3 -2
  13. package/module/Math/calculator/literalExpression.js +42 -36
  14. package/module/Math/calculator/literalExpression.js.map +1 -1
  15. package/module/Math/gcd.d.ts +1 -1
  16. package/module/Math/gcd.js +7 -8
  17. package/module/Math/gcd.js.map +1 -1
  18. package/module/Math/index.d.ts +39 -40
  19. package/module/Math/isDouble.d.ts +1 -0
  20. package/module/Math/isDouble.js +3 -4
  21. package/module/Math/isDouble.js.map +1 -1
  22. package/module/Math/mathConverter.d.ts +7 -3
  23. package/module/Math/mathConverter.js +28 -27
  24. package/module/Math/mathConverter.js.map +1 -1
  25. package/module/Math/mathSeparator.d.ts +6 -1
  26. package/module/Math/mathSeparator.js +20 -6
  27. package/module/Math/mathSeparator.js.map +1 -1
  28. package/module/Math/nCr.d.ts +4 -3
  29. package/module/Math/nCr.js +12 -12
  30. package/module/Math/nCr.js.map +1 -1
  31. package/module/Math/nHr.d.ts +4 -3
  32. package/module/Math/nHr.js +8 -10
  33. package/module/Math/nHr.js.map +1 -1
  34. package/module/Math/nPr.d.ts +4 -3
  35. package/module/Math/nPr.js +10 -30
  36. package/module/Math/nPr.js.map +1 -1
  37. package/module/Simple/Date/index.d.ts +1 -2
  38. package/module/Simple/Tool/dayOfWeekSimple.d.ts +2 -2
  39. package/module/Simple/Tool/index.d.ts +3 -4
  40. package/module/Simple/index.d.ts +4 -5
  41. package/module/Tool/dayOfWeek.d.ts +1 -1
  42. package/module/Tool/index.d.ts +10 -11
  43. package/module/index.d.ts +1 -0
  44. package/module/tests/Advance/rangeAdvance.test.d.ts +1 -0
  45. package/module/tests/Array/checkFlagAlignment.test.d.ts +1 -0
  46. package/module/tests/Array/checkFlagAlignment.test.js +130 -0
  47. package/module/tests/Array/checkFlagAlignment.test.js.map +1 -0
  48. package/module/tests/Math/calculator/calculator.test.js +60 -13
  49. package/module/tests/Math/calculator/calculator.test.js.map +1 -1
  50. package/module/tests/Math/calculator/convertCurrency.test.js +21 -13
  51. package/module/tests/Math/calculator/convertCurrency.test.js.map +1 -1
  52. package/module/tests/Math/calculator/literalExpression.test.js +41 -7
  53. package/module/tests/Math/calculator/literalExpression.test.js.map +1 -1
  54. package/module/tests/Math/gcd.test.js +22 -11
  55. package/module/tests/Math/gcd.test.js.map +1 -1
  56. package/module/tests/Math/lcm.test.js +17 -6
  57. package/module/tests/Math/lcm.test.js.map +1 -1
  58. package/module/tests/Math/mathConverter.test.js +23 -4
  59. package/module/tests/Math/mathConverter.test.js.map +1 -1
  60. package/module/tests/Math/mathSeparator.test.js +33 -7
  61. package/module/tests/Math/mathSeparator.test.js.map +1 -1
  62. package/module/tests/Math/nCr.test.js +16 -5
  63. package/module/tests/Math/nCr.test.js.map +1 -1
  64. package/module/tests/Math/nHr.test.js +17 -4
  65. package/module/tests/Math/nHr.test.js.map +1 -1
  66. package/module/tests/Math/nPr.test.js +16 -9
  67. package/module/tests/Math/nPr.test.js.map +1 -1
  68. package/module/tests/Tool/deleteSpace.test.d.ts +1 -0
  69. package/module/tests/Tool/deleteSpace.test.js +34 -0
  70. package/module/tests/Tool/deleteSpace.test.js.map +1 -0
  71. package/module/tsconfig.tsbuildinfo +1 -1
  72. package/package.json +18 -13
@@ -1,44 +1,45 @@
1
1
  import { mathSeparator } from "./mathSeparator";
2
2
  /**
3
- * @param {string} x
4
- * @returns string
3
+ * nの2乗を展開します。
4
+ *
5
+ * 1250*1250 => 1500*1000+400*100+200*100+50*50
6
+ *
7
+ * @param {string} equation - 変換する数学的な式
8
+ * @returns {string} 変換後の式
5
9
  */
6
- export const mathConverter = (x) => {
7
- let returnValue = x;
10
+ export const mathConverter = (equation) => {
11
+ let convertedEquation = equation;
8
12
  while (true) {
9
- if (returnValue.indexOf("^") !== -1 || returnValue.indexOf("*") !== -1) {
10
- //掛け算と割り算の処理
11
- const y = [
12
- returnValue.match(/\d+\.?(\d+)?(\*|\^)\d+\.?(\d+)?/),
13
+ if (convertedEquation.includes("^") || convertedEquation.includes("*")) {
14
+ // 乗算と累乗の処理
15
+ const extractedData = [
16
+ convertedEquation.match(/\d+\.?(\d+)?(\*|\^)\d+\.?(\d+)?/),
13
17
  [""],
14
18
  ];
15
- if (y[0]) {
16
- y[1] = y[0][0].split(/(\d+\.\d+)|(\d+)/g).filter((n) => {
17
- return typeof n !== "undefined" && n !== "";
19
+ if (extractedData[0]) {
20
+ extractedData[1] = extractedData[0][0]
21
+ .split(/(\d+\.\d+)|(\d+)/g)
22
+ .filter((number_) => {
23
+ return number_ !== undefined && number_ !== "";
18
24
  });
19
- if (y[1][0] === y[1][2] || (y[1][2] && y[1][1] === "^")) {
20
- const [n, m] = mathSeparator(y[1][0]);
21
- if (n) {
22
- returnValue = `${Number(y[1][0]) + m}*${n}+`;
23
- if (m <= 100) {
24
- returnValue += `${m}*${m}`;
25
+ if (extractedData[1][0] === extractedData[1][2] ||
26
+ (extractedData[1][2] && extractedData[1][1] === "^")) {
27
+ const [primary, remainder] = mathSeparator(extractedData[1][0]);
28
+ if (primary) {
29
+ convertedEquation = `${Number(extractedData[1][0]) + remainder}*${primary}+`;
30
+ if (remainder <= 100) {
31
+ convertedEquation += `${remainder}*${remainder}`;
25
32
  }
26
33
  else {
27
- returnValue += mathConverter(`${m}*${m}`);
28
- return returnValue;
34
+ convertedEquation += mathConverter(`${remainder}*${remainder}`);
35
+ return convertedEquation;
29
36
  }
30
- return returnValue;
37
+ return convertedEquation;
31
38
  }
32
39
  }
33
- return returnValue;
34
40
  }
35
- else {
36
- return returnValue;
37
- }
38
- }
39
- else {
40
- return returnValue;
41
41
  }
42
+ return convertedEquation;
42
43
  }
43
44
  };
44
45
  //# sourceMappingURL=mathConverter.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"mathConverter.js","sourceRoot":"","sources":["../../src/Math/mathConverter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD;;;GAGG;AAEH,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,CAAS,EAAU,EAAE;IACjD,IAAI,WAAW,GAAG,CAAC,CAAC;IACpB,OAAO,IAAI,EAAE;QACX,IAAI,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE;YACtE,YAAY;YACZ,MAAM,CAAC,GAAwC;gBAC7C,WAAW,CAAC,KAAK,CAAC,iCAAiC,CAAC;gBACpD,CAAC,EAAE,CAAC;aACL,CAAC;YACF,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE;gBACR,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE;oBACrD,OAAO,OAAO,CAAC,KAAK,WAAW,IAAI,CAAC,KAAK,EAAE,CAAC;gBAC9C,CAAC,CAAC,CAAC;gBACH,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,EAAE;oBACvD,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;oBAEtC,IAAI,CAAC,EAAE;wBACL,WAAW,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC;wBAC7C,IAAI,CAAC,IAAI,GAAG,EAAE;4BACZ,WAAW,IAAI,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;yBAC5B;6BAAM;4BACL,WAAW,IAAI,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;4BAC1C,OAAO,WAAW,CAAC;yBACpB;wBACD,OAAO,WAAW,CAAC;qBACpB;iBACF;gBACD,OAAO,WAAW,CAAC;aACpB;iBAAM;gBACL,OAAO,WAAW,CAAC;aACpB;SACF;aAAM;YACL,OAAO,WAAW,CAAC;SACpB;KACF;AACH,CAAC,CAAC"}
1
+ {"version":3,"file":"mathConverter.js","sourceRoot":"","sources":["../../src/Math/mathConverter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,QAAgB,EAAU,EAAE;IACxD,IAAI,iBAAiB,GAAG,QAAQ,CAAC;IAEjC,OAAO,IAAI,EAAE;QACX,IAAI,iBAAiB,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,iBAAiB,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;YACtE,WAAW;YACX,MAAM,aAAa,GAAwC;gBACzD,iBAAiB,CAAC,KAAK,CAAC,iCAAiC,CAAC;gBAC1D,CAAC,EAAE,CAAC;aACL,CAAC;YAEF,IAAI,aAAa,CAAC,CAAC,CAAC,EAAE;gBACpB,aAAa,CAAC,CAAC,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;qBACnC,KAAK,CAAC,mBAAmB,CAAC;qBAC1B,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE;oBAClB,OAAO,OAAO,KAAK,SAAS,IAAI,OAAO,KAAK,EAAE,CAAC;gBACjD,CAAC,CAAC,CAAC;gBAEL,IACE,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;oBAC3C,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,EACpD;oBACA,MAAM,CAAC,OAAO,EAAE,SAAS,CAAC,GAAG,aAAa,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;oBAEhE,IAAI,OAAO,EAAE;wBACX,iBAAiB,GAAG,GAClB,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,SAChC,IAAI,OAAO,GAAG,CAAC;wBAEf,IAAI,SAAS,IAAI,GAAG,EAAE;4BACpB,iBAAiB,IAAI,GAAG,SAAS,IAAI,SAAS,EAAE,CAAC;yBAClD;6BAAM;4BACL,iBAAiB,IAAI,aAAa,CAAC,GAAG,SAAS,IAAI,SAAS,EAAE,CAAC,CAAC;4BAChE,OAAO,iBAAiB,CAAC;yBAC1B;wBACD,OAAO,iBAAiB,CAAC;qBAC1B;iBACF;aACF;SACF;QACD,OAAO,iBAAiB,CAAC;KAC1B;AACH,CAAC,CAAC"}
@@ -1,5 +1,10 @@
1
1
  /**
2
+ * 最大値の位で区切ります。
3
+ *
4
+ * 1250 => [1000, 250]
5
+ *
6
+ * 150 => [100, 50]
2
7
  * @param {string|number} number
3
8
  * @returns string
4
9
  */
5
- export declare const mathSeparator: (number: string | number) => number[];
10
+ export declare const mathSeparator: (number: string | number) => [number, number];
@@ -1,17 +1,31 @@
1
+ import { isDouble } from "./isDouble";
1
2
  import { isNumber } from "./isNumber";
2
3
  /**
4
+ * 最大値の位で区切ります。
5
+ *
6
+ * 1250 => [1000, 250]
7
+ *
8
+ * 150 => [100, 50]
3
9
  * @param {string|number} number
4
10
  * @returns string
5
11
  */
6
12
  export const mathSeparator = (number) => {
7
- if (isNumber(number)) {
8
- const [n, x] = typeof number === "string"
9
- ? [number.length - 1, Number(number)]
10
- : [String(number).length - 1, number];
13
+ let copyNumber = number;
14
+ let decimalPart = 0;
15
+ if (isDouble(copyNumber)) {
16
+ const splitNumber = String(copyNumber).split(".");
17
+ // 小数点部分を取得
18
+ decimalPart = Number(`0.${splitNumber[1]}`);
19
+ copyNumber = splitNumber[0];
20
+ }
21
+ if (isNumber(copyNumber)) {
22
+ const [n, x] = typeof copyNumber === "string"
23
+ ? [copyNumber.length - 1, Number(copyNumber)]
24
+ : [String(copyNumber).length - 1, copyNumber];
11
25
  if (n) {
12
- return [Math.pow(10, n), x - Math.pow(10, n)];
26
+ return [Math.pow(10, n), x - Math.pow(10, n) + decimalPart];
13
27
  }
14
- return [0, 0];
28
+ return [Number(copyNumber), 0];
15
29
  }
16
30
  return [0, 0];
17
31
  };
@@ -1 +1 @@
1
- {"version":3,"file":"mathSeparator.js","sourceRoot":"","sources":["../../src/Math/mathSeparator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC;;;GAGG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,MAAuB,EAAE,EAAE;IACvD,IAAI,QAAQ,CAAC,MAAM,CAAC,EAAE;QACpB,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GACV,OAAO,MAAM,KAAK,QAAQ;YACxB,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;YACrC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,MAAM,CAAC,CAAC;QAC1C,IAAI,CAAC,EAAE;YACL,OAAO,CAAC,SAAA,EAAE,EAAI,CAAC,CAAA,EAAE,CAAC,GAAG,SAAA,EAAE,EAAI,CAAC,CAAA,CAAC,CAAC;SAC/B;QACD,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;KACf;IACD,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAChB,CAAC,CAAC"}
1
+ {"version":3,"file":"mathSeparator.js","sourceRoot":"","sources":["../../src/Math/mathSeparator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,MAAuB,EAAoB,EAAE;IACzE,IAAI,UAAU,GAAG,MAAM,CAAC;IACxB,IAAI,WAAW,GAAG,CAAC,CAAC;IACpB,IAAI,QAAQ,CAAC,UAAU,CAAC,EAAE;QACxB,MAAM,WAAW,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAClD,WAAW;QACX,WAAW,GAAG,MAAM,CAAC,KAAK,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAC5C,UAAU,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;KAC7B;IACD,IAAI,QAAQ,CAAC,UAAU,CAAC,EAAE;QACxB,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GACV,OAAO,UAAU,KAAK,QAAQ;YAC5B,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC;YAC7C,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,UAAU,CAAC,CAAC;QAClD,IAAI,CAAC,EAAE;YACL,OAAO,CAAC,SAAA,EAAE,EAAI,CAAC,CAAA,EAAE,CAAC,GAAG,SAAA,EAAE,EAAI,CAAC,CAAA,GAAG,WAAW,CAAC,CAAC;SAC7C;QACD,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC;KAChC;IACD,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAChB,CAAC,CAAC"}
@@ -1,6 +1,7 @@
1
1
  /**
2
- * nCr
3
- * @param {number} n
4
- * @param {number} r
2
+ * n個からr個を選ぶ組み合わせ(nCr)を計算します。
3
+ * @param n - 選ぶ元となる全体の数
4
+ * @param r - 選ぶ個数
5
+ * @returns 組み合わせの結果、または引数が無効な場合はNaN
5
6
  */
6
7
  export declare const nCr: (n: number, r: number) => number;
@@ -1,20 +1,20 @@
1
1
  import { nPr } from "./nPr";
2
2
  /**
3
- * nCr
4
- * @param {number} n
5
- * @param {number} r
3
+ * n個からr個を選ぶ組み合わせ(nCr)を計算します。
4
+ * @param n - 選ぶ元となる全体の数
5
+ * @param r - 選ぶ個数
6
+ * @returns 組み合わせの結果、または引数が無効な場合はNaN
6
7
  */
7
8
  export const nCr = (n, r) => {
8
- //nCr
9
- let y = nPr(n, r);
10
- let age = 1;
11
- for (let i = 2; i <= r; i++) {
12
- age *= i;
9
+ if (n === 0 || r === 0 || n < r) {
10
+ return Number.NaN;
13
11
  }
14
- y /= age;
15
- if (1 > y) {
16
- return 0;
12
+ const numerator = nPr(n, r);
13
+ let denominator = 1;
14
+ for (let index = 2; index <= r; index++) {
15
+ denominator *= index;
17
16
  }
18
- return y;
17
+ const result = numerator / denominator;
18
+ return result;
19
19
  };
20
20
  //# sourceMappingURL=nCr.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"nCr.js","sourceRoot":"","sources":["../../src/Math/nCr.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAC5B;;;;GAIG;AACH,MAAM,CAAC,MAAM,GAAG,GAAG,CAAC,CAAS,EAAE,CAAS,EAAE,EAAE;IAC1C,KAAK;IACL,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAClB,IAAI,GAAG,GAAG,CAAC,CAAC;IACZ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;QAC3B,GAAG,IAAI,CAAC,CAAC;KACV;IACD,CAAC,IAAI,GAAG,CAAC;IACT,IAAI,CAAC,GAAG,CAAC,EAAE;QACT,OAAO,CAAC,CAAC;KACV;IACD,OAAO,CAAC,CAAC;AACX,CAAC,CAAC"}
1
+ {"version":3,"file":"nCr.js","sourceRoot":"","sources":["../../src/Math/nCr.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAE5B;;;;;GAKG;AACH,MAAM,CAAC,MAAM,GAAG,GAAG,CAAC,CAAS,EAAE,CAAS,EAAU,EAAE;IAClD,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;QAC/B,OAAO,MAAM,CAAC,GAAG,CAAC;KACnB;IAED,MAAM,SAAS,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC5B,IAAI,WAAW,GAAG,CAAC,CAAC;IAEpB,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE;QACvC,WAAW,IAAI,KAAK,CAAC;KACtB;IAED,MAAM,MAAM,GAAG,SAAS,GAAG,WAAW,CAAC;IAEvC,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC"}
@@ -1,6 +1,7 @@
1
1
  /**
2
- * 重複を許して取り出す
3
- * @param {number} n
4
- * @param {number} r
2
+ * n個からr個を重複を許して選ぶ組み合わせ(nHr)を計算します。
3
+ * @param n - 選ぶ元となる全体の数
4
+ * @param r - 選ぶ個数
5
+ * @returns 重複組み合わせの結果、または引数が無効な場合はNaN
5
6
  */
6
7
  export declare const nHr: (n: number, r: number) => number;
@@ -1,17 +1,15 @@
1
1
  import { nCr } from "./nCr";
2
2
  /**
3
- * 重複を許して取り出す
4
- * @param {number} n
5
- * @param {number} r
3
+ * n個からr個を重複を許して選ぶ組み合わせ(nHr)を計算します。
4
+ * @param n - 選ぶ元となる全体の数
5
+ * @param r - 選ぶ個数
6
+ * @returns 重複組み合わせの結果、または引数が無効な場合はNaN
6
7
  */
7
8
  export const nHr = (n, r) => {
8
- if (n === 0 || r === 0) {
9
- return NaN;
9
+ if (n === 0 || r === 0 || n < 0 || r < 0) {
10
+ return Number.NaN;
10
11
  }
11
- const y = nCr(n + r - 1, r);
12
- if (1 > y) {
13
- return 0;
14
- }
15
- return y;
12
+ const result = nCr(n + r - 1, r);
13
+ return result;
16
14
  };
17
15
  //# sourceMappingURL=nHr.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"nHr.js","sourceRoot":"","sources":["../../src/Math/nHr.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAC5B;;;;GAIG;AACH,MAAM,CAAC,MAAM,GAAG,GAAG,CAAC,CAAS,EAAE,CAAS,EAAE,EAAE;IAC1C,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;QACtB,OAAO,GAAG,CAAC;KACZ;IACD,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;IAC5B,IAAI,CAAC,GAAG,CAAC,EAAE;QACT,OAAO,CAAC,CAAC;KACV;IACD,OAAO,CAAC,CAAC;AACX,CAAC,CAAC"}
1
+ {"version":3,"file":"nHr.js","sourceRoot":"","sources":["../../src/Math/nHr.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAE5B;;;;;GAKG;AACH,MAAM,CAAC,MAAM,GAAG,GAAG,CAAC,CAAS,EAAE,CAAS,EAAU,EAAE;IAClD,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;QACxC,OAAO,MAAM,CAAC,GAAG,CAAC;KACnB;IAED,MAAM,MAAM,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;IAEjC,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC"}
@@ -1,6 +1,7 @@
1
1
  /**
2
- * nPr
3
- * @param {number} n
4
- * @param {number} r
2
+ * n個からr個を選ぶ順列(nPr)を計算します。
3
+ * @param n - 選ぶ元となる全体の数
4
+ * @param r - 選ぶ個数
5
+ * @returns 順列の結果、または引数が無効な場合はNaN
5
6
  */
6
7
  export declare const nPr: (n: number, r: number) => number;
@@ -1,37 +1,17 @@
1
1
  /**
2
- * nPr
3
- * @param {number} n
4
- * @param {number} r
2
+ * n個からr個を選ぶ順列(nPr)を計算します。
3
+ * @param n - 選ぶ元となる全体の数
4
+ * @param r - 選ぶ個数
5
+ * @returns 順列の結果、または引数が無効な場合はNaN
5
6
  */
6
7
  export const nPr = (n, r) => {
7
- let copyN = n;
8
- let copyR = r;
9
- // nPr;
10
- if (copyN === 0 || copyR === 0) {
11
- return NaN;
8
+ if (n === 0 || r === 0 || n < r) {
9
+ return Number.NaN;
12
10
  }
13
- let y = copyN;
14
- let x = 0;
15
- while (x === 0) {
16
- if (copyR === 1) {
17
- y *= copyR;
18
- }
19
- copyR--;
20
- if (copyR === 0) {
21
- x++;
22
- }
23
- else {
24
- copyN--;
25
- if (copyN === 0) {
26
- x++;
27
- break;
28
- }
29
- y *= copyN;
30
- }
11
+ let result = 1;
12
+ for (let index = 0; index < r; index++) {
13
+ result *= n - index;
31
14
  }
32
- if (1 > y) {
33
- return 0;
34
- }
35
- return y;
15
+ return result;
36
16
  };
37
17
  //# sourceMappingURL=nPr.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"nPr.js","sourceRoot":"","sources":["../../src/Math/nPr.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,CAAC,MAAM,GAAG,GAAG,CAAC,CAAS,EAAE,CAAS,EAAE,EAAE;IAC1C,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,OAAO;IACP,IAAI,KAAK,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,EAAE;QAC9B,OAAO,GAAG,CAAC;KACZ;IACD,IAAI,CAAC,GAAG,KAAK,CAAC;IACd,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,OAAO,CAAC,KAAK,CAAC,EAAE;QACd,IAAI,KAAK,KAAK,CAAC,EAAE;YACf,CAAC,IAAI,KAAK,CAAC;SACZ;QACD,KAAK,EAAE,CAAC;QACR,IAAI,KAAK,KAAK,CAAC,EAAE;YACf,CAAC,EAAE,CAAC;SACL;aAAM;YACL,KAAK,EAAE,CAAC;YACR,IAAI,KAAK,KAAK,CAAC,EAAE;gBACf,CAAC,EAAE,CAAC;gBACJ,MAAM;aACP;YACD,CAAC,IAAI,KAAK,CAAC;SACZ;KACF;IACD,IAAI,CAAC,GAAG,CAAC,EAAE;QACT,OAAO,CAAC,CAAC;KACV;IACD,OAAO,CAAC,CAAC;AACX,CAAC,CAAC"}
1
+ {"version":3,"file":"nPr.js","sourceRoot":"","sources":["../../src/Math/nPr.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,MAAM,CAAC,MAAM,GAAG,GAAG,CAAC,CAAS,EAAE,CAAS,EAAU,EAAE;IAClD,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;QAC/B,OAAO,MAAM,CAAC,GAAG,CAAC;KACnB;IACD,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,CAAC,EAAE,KAAK,EAAE,EAAE;QACtC,MAAM,IAAI,CAAC,GAAG,KAAK,CAAC;KACrB;IACD,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC"}
@@ -1,2 +1 @@
1
- import { nowSimple } from "./now";
2
- export { nowSimple };
1
+ export * from "./now";
@@ -1,9 +1,9 @@
1
1
  import { hoursTypeInt } from "../../types/clockType";
2
2
  import { MonthsWith31Days, MonthsWith31DaysInt, MonthsWithout31Days, MonthsWithout31DaysInt, convertMonTypeZero, dayType, dayTypeInt } from "../../types/dateType";
3
- declare function dayOfWeekSimple<T extends MonthsWith31DaysInt | MonthsWithout31DaysInt>(props?: {
3
+ declare function dayOfWeekSimple<T extends MonthsWith31DaysInt | MonthsWithout31DaysInt>(properties?: {
4
4
  year?: number;
5
5
  mon?: T;
6
6
  day?: dayTypeInt<T>;
7
7
  }, timeDifference?: hoursTypeInt): number;
8
- declare function dayOfWeekSimple<T extends MonthsWith31Days | MonthsWithout31Days>(props?: `${number}-${convertMonTypeZero<T>}-${dayType<T>}` | `${number}:${convertMonTypeZero<T>}:${dayType<T>}` | `${number}/${convertMonTypeZero<T>}/${dayType<T>}` | Date, timeDifference?: hoursTypeInt): number;
8
+ declare function dayOfWeekSimple<T extends MonthsWith31Days | MonthsWithout31Days>(properties?: `${number}-${convertMonTypeZero<T>}-${dayType<T>}` | `${number}:${convertMonTypeZero<T>}:${dayType<T>}` | `${number}/${convertMonTypeZero<T>}/${dayType<T>}` | Date, timeDifference?: hoursTypeInt): number;
9
9
  export { dayOfWeekSimple };
@@ -1,4 +1,3 @@
1
- import { birthdaySimple } from "./birthday";
2
- import { dayOfWeekSimple } from "./dayOfWeekSimple";
3
- import { deviationValueSimple } from "./deviationValueSimple";
4
- export { birthdaySimple, dayOfWeekSimple, deviationValueSimple };
1
+ export * from "./birthday";
2
+ export * from "./dayOfWeekSimple";
3
+ export * from "./deviationValueSimple";
@@ -1,5 +1,4 @@
1
- import { nowSimple } from "./Date/now";
2
- import { birthdaySimple } from "./Tool/birthday";
3
- import { dayOfWeekSimple } from "./Tool/dayOfWeekSimple";
4
- import { deviationValueSimple } from "./Tool/deviationValueSimple";
5
- export { birthdaySimple, dayOfWeekSimple, deviationValueSimple, nowSimple };
1
+ export * from "./Date/now";
2
+ export * from "./Tool/birthday";
3
+ export * from "./Tool/dayOfWeekSimple";
4
+ export * from "./Tool/deviationValueSimple";
@@ -1,6 +1,6 @@
1
1
  import { hoursTypeInt } from "../types/clockType";
2
2
  import { dayTypeInt, monTypeInt } from "../types/dateType";
3
- export declare const dayOfWeek: <T extends monTypeInt>(props?: {
3
+ export declare const dayOfWeek: <T extends monTypeInt>(properties?: {
4
4
  year?: number | undefined;
5
5
  mon?: T | undefined;
6
6
  day?: dayTypeInt<T> | undefined;
@@ -1,11 +1,10 @@
1
- import { birthday } from "./birthday";
2
- import { createPipeline } from "./createPipeline";
3
- import { dayOfWeek } from "./dayOfWeek";
4
- import { deleteSpace } from "./deleteSpace";
5
- import { isArr } from "./isArr";
6
- import { isBrowser } from "./isBrowser";
7
- import { isNode } from "./isNode";
8
- import { isNodeWebkit } from "./isNodeWebkit";
9
- import { isNotEmpty } from "./isNotEmpty";
10
- import { isObj } from "./isObj";
11
- export { birthday, dayOfWeek, createPipeline, isBrowser, isNode, isNodeWebkit, isObj, isArr, deleteSpace, isNotEmpty, };
1
+ export * from "./birthday";
2
+ export * from "./createPipeline";
3
+ export * from "./dayOfWeek";
4
+ export * from "./deleteSpace";
5
+ export * from "./isArray";
6
+ export * from "./isBrowser";
7
+ export * from "./isNode";
8
+ export * from "./isNodeWebkit";
9
+ export * from "./isNotEmpty";
10
+ export * from "./isObject";
package/module/index.d.ts CHANGED
@@ -4,3 +4,4 @@ export * from "./Simple";
4
4
  export * from "./String";
5
5
  export * from "./Tool";
6
6
  export * from "./Date";
7
+ export * from "./Consts";
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,130 @@
1
+ import { checkFlagAlignment } from "../../Array/checkFlagAlignment";
2
+ describe("checkFlagAlignment", () => {
3
+ it("横", () => {
4
+ const matrix = [
5
+ [
6
+ { value: 10, flag: true },
7
+ { value: 20, flag: true },
8
+ { value: 30, flag: true },
9
+ ],
10
+ [
11
+ { value: 40, flag: false },
12
+ { value: 50, flag: false },
13
+ { value: 60, flag: false },
14
+ ],
15
+ [
16
+ { value: 70, flag: false },
17
+ { value: 80, flag: false },
18
+ { value: 90, flag: false },
19
+ ],
20
+ ];
21
+ expect(checkFlagAlignment(matrix)).toBe(true);
22
+ });
23
+ it("縦", () => {
24
+ const matrix = [
25
+ [
26
+ { value: 10, flag: false },
27
+ { value: 20, flag: true },
28
+ { value: 30, flag: false },
29
+ ],
30
+ [
31
+ { value: 40, flag: false },
32
+ { value: 50, flag: true },
33
+ { value: 60, flag: false },
34
+ ],
35
+ [
36
+ { value: 70, flag: false },
37
+ { value: 80, flag: true },
38
+ { value: 90, flag: false },
39
+ ],
40
+ ];
41
+ expect(checkFlagAlignment(matrix)).toBe(true);
42
+ });
43
+ it("斜め(左上)", () => {
44
+ const matrix = [
45
+ [
46
+ { value: 10, flag: true },
47
+ { value: 20, flag: false },
48
+ { value: 30, flag: false },
49
+ ],
50
+ [
51
+ { value: 40, flag: false },
52
+ { value: 50, flag: true },
53
+ { value: 60, flag: false },
54
+ ],
55
+ [
56
+ { value: 70, flag: false },
57
+ { value: 80, flag: false },
58
+ { value: 90, flag: true },
59
+ ],
60
+ ];
61
+ expect(checkFlagAlignment(matrix)).toBe(true);
62
+ });
63
+ it("斜め(右上)", () => {
64
+ const matrix = [
65
+ [
66
+ { value: 10, flag: false },
67
+ { value: 20, flag: false },
68
+ { value: 30, flag: true },
69
+ ],
70
+ [
71
+ { value: 40, flag: false },
72
+ { value: 50, flag: true },
73
+ { value: 60, flag: false },
74
+ ],
75
+ [
76
+ { value: 70, flag: true },
77
+ { value: 80, flag: false },
78
+ { value: 90, flag: false },
79
+ ],
80
+ ];
81
+ expect(checkFlagAlignment(matrix)).toBe(true);
82
+ });
83
+ it("揃ってない時", () => {
84
+ const matrix = [
85
+ [
86
+ { value: 10, flag: false },
87
+ { value: 20, flag: true },
88
+ { value: 30, flag: false },
89
+ ],
90
+ [
91
+ { value: 40, flag: false },
92
+ { value: 50, flag: true },
93
+ { value: 60, flag: false },
94
+ ],
95
+ [
96
+ { value: 70, flag: false },
97
+ { value: 80, flag: false },
98
+ { value: 90, flag: false },
99
+ ],
100
+ ];
101
+ expect(checkFlagAlignment(matrix)).toBe(false);
102
+ });
103
+ // 以下、大量データのテスト
104
+ it("横(大量)", () => {
105
+ const row = Array(1000).fill({ flag: true, value: 1 });
106
+ const matrix = Array(1000).fill(row);
107
+ expect(checkFlagAlignment(matrix)).toBe(true);
108
+ });
109
+ it("縦(大量)", () => {
110
+ const row = Array(1000).fill({ flag: false, value: 1 });
111
+ let matrix = Array(1000).fill(row);
112
+ for (let i = 0; i < matrix.length; i++) {
113
+ matrix[i][0].flag = true;
114
+ }
115
+ expect(checkFlagAlignment(matrix)).toBe(true);
116
+ });
117
+ it("斜め(大量)", () => {
118
+ let matrix = Array.from({ length: 1000 }, () => Array.from({ length: 1000 }, () => ({ flag: false, value: 1 })));
119
+ for (let i = 0; i < 1000; i++) {
120
+ matrix[i][i].flag = true;
121
+ }
122
+ expect(checkFlagAlignment(matrix)).toBe(true);
123
+ });
124
+ it("揃ってない時(大量)", () => {
125
+ const row = Array(1000).fill({ flag: false, value: 1 });
126
+ const matrix = Array(1000).fill(row);
127
+ expect(checkFlagAlignment(matrix)).toBe(false);
128
+ });
129
+ });
130
+ //# sourceMappingURL=checkFlagAlignment.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"checkFlagAlignment.test.js","sourceRoot":"","sources":["../../../src/tests/Array/checkFlagAlignment.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAEhE,QAAQ,CAAC,oBAAoB,EAAE,GAAG,EAAE;IAClC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE;QACX,MAAM,MAAM,GAAG;YACb;gBACE,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE;gBACzB,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE;gBACzB,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE;aAC1B;YACD;gBACE,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE;gBAC1B,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE;gBAC1B,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE;aAC3B;YACD;gBACE,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE;gBAC1B,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE;gBAC1B,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE;aAC3B;SACF,CAAC;QACF,MAAM,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAChD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE;QACX,MAAM,MAAM,GAAG;YACb;gBACE,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE;gBAC1B,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE;gBACzB,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE;aAC3B;YACD;gBACE,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE;gBAC1B,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE;gBACzB,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE;aAC3B;YACD;gBACE,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE;gBAC1B,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE;gBACzB,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE;aAC3B;SACF,CAAC;QACF,MAAM,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAChD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE;QAChB,MAAM,MAAM,GAAG;YACb;gBACE,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE;gBACzB,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE;gBAC1B,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE;aAC3B;YACD;gBACE,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE;gBAC1B,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE;gBACzB,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE;aAC3B;YACD;gBACE,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE;gBAC1B,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE;gBAC1B,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE;aAC1B;SACF,CAAC;QACF,MAAM,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAChD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE;QAChB,MAAM,MAAM,GAAG;YACb;gBACE,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE;gBAC1B,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE;gBAC1B,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE;aAC1B;YACD;gBACE,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE;gBAC1B,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE;gBACzB,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE;aAC3B;YACD;gBACE,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE;gBACzB,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE;gBAC1B,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE;aAC3B;SACF,CAAC;QACF,MAAM,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAChD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE;QAChB,MAAM,MAAM,GAAG;YACb;gBACE,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE;gBAC1B,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE;gBACzB,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE;aAC3B;YACD;gBACE,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE;gBAC1B,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE;gBACzB,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE;aAC3B;YACD;gBACE,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE;gBAC1B,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE;gBAC1B,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE;aAC3B;SACF,CAAC;QACF,MAAM,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACjD,CAAC,CAAC,CAAC;IACH,eAAe;IACf,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;QACf,MAAM,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;QACvD,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACrC,MAAM,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAChD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;QACf,MAAM,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;QACxD,IAAI,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACnC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACtC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC;SAC1B;QACD,MAAM,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAChD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE;QAChB,IAAI,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,CAC7C,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,CAChE,CAAC;QACF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,EAAE;YAC7B,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC;SAC1B;QACD,MAAM,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAChD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,YAAY,EAAE,GAAG,EAAE;QACpB,MAAM,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;QACxD,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACrC,MAAM,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACjD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -1,16 +1,63 @@
1
1
  import { calculator } from "../../../Math/calculator";
2
- test("calculator", () => {
3
- expect(calculator("1+1")).toBe("2");
4
- expect(calculator("1+1+1")).toBe("3");
5
- expect(calculator("1+1+1+1")).toBe("4");
6
- expect(calculator("1+1+1+1+1")).toBe("5");
7
- expect(calculator("2*2")).toBe("4");
8
- expect(calculator("2*2*2")).toBe("8");
9
- expect(calculator("2*2*2*2")).toBe("16");
10
- expect(calculator("2*2*2*2*2")).toBe("32");
11
- expect(calculator("(1+1)")).toBe("2");
12
- expect(calculator("(1+1)+(1+1)")).toBe("4");
13
- expect(calculator("2x=(1+1)+(1+1)+(1+1)")).toBe("3/1");
14
- expect(calculator("$10*2", { $: 100 })).toBe("2000");
2
+ describe("calculator", () => {
3
+ // 足し算
4
+ test("should handle addition", () => {
5
+ expect(calculator("1+")).toBe("1+");
6
+ expect(calculator("1+1")).toBe("2");
7
+ expect(calculator("1+1+1")).toBe("3");
8
+ expect(calculator("1+1+1+1")).toBe("4");
9
+ expect(calculator("1+1+1+1+1")).toBe("5");
10
+ });
11
+ // 引き算
12
+ test("should handle subtraction", () => {
13
+ expect(calculator("1-")).toBe("1-");
14
+ expect(calculator("1-1")).toBe("0");
15
+ expect(calculator("1-1-1")).toBe("-1");
16
+ expect(calculator("1-1-1-1")).toBe("-2");
17
+ expect(calculator("1-1-1-1-1")).toBe("-3");
18
+ });
19
+ // 掛け算
20
+ test("should handle multiplication", () => {
21
+ expect(calculator("2*")).toBe("2*");
22
+ expect(calculator("2*2")).toBe("4");
23
+ expect(calculator("2*2*2")).toBe("8");
24
+ expect(calculator("2*2*2*2")).toBe("16");
25
+ expect(calculator("2*2*2*2*2")).toBe("32");
26
+ });
27
+ // 割り算
28
+ test("should handle division", () => {
29
+ expect(calculator("2/")).toBe("2/");
30
+ expect(calculator("2/2")).toBe("1");
31
+ expect(calculator("2/2/2")).toBe("0.5");
32
+ expect(calculator("2/2/2/2")).toBe("0.25");
33
+ expect(calculator("2/2/2/2/2")).toBe("0.125");
34
+ });
35
+ // べき乗
36
+ test("should handle exponentiation", () => {
37
+ expect(calculator("2^")).toBe("2^");
38
+ expect(calculator("2^2")).toBe("4");
39
+ expect(calculator("2^2^2")).toBe("16");
40
+ expect(calculator("2^2^2^2")).toBe("65536");
41
+ expect(calculator("2^2^2^2^2")).toBe("Infinity");
42
+ expect(calculator("3^4")).toBe("81");
43
+ expect(calculator("3^4^2")).toBe("43046721");
44
+ });
45
+ // 括弧
46
+ test("should handle parentheses", () => {
47
+ expect(calculator("(1+1)")).toBe("2");
48
+ expect(calculator("(1")).toBe("(1");
49
+ expect(calculator("(1+")).toBe("(1+");
50
+ expect(calculator("1)")).toBe("1)");
51
+ expect(calculator("(1)")).toBe("(1)");
52
+ expect(calculator("(1+1)+(1+1)")).toBe("4");
53
+ });
54
+ // 方程式
55
+ test("should handle equations", () => {
56
+ expect(calculator("2x=(1+1)+(1+1)+(1+1)")).toBe("3");
57
+ });
58
+ // 変数
59
+ test("should handle variables", () => {
60
+ expect(calculator("$10*2", { $: 100 })).toBe("2000");
61
+ });
15
62
  });
16
63
  //# sourceMappingURL=calculator.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"calculator.test.js","sourceRoot":"","sources":["../../../../src/tests/Math/calculator/calculator.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,IAAI,CAAC,YAAY,EAAE,GAAG,EAAE;IACtB,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACpC,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACtC,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACxC,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC1C,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACpC,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACtC,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACzC,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC3C,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACtC,MAAM,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC5C,MAAM,CAAC,UAAU,CAAC,sBAAsB,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACvD,MAAM,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACvD,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"calculator.test.js","sourceRoot":"","sources":["../../../../src/tests/Math/calculator/calculator.test.ts"],"names":[],"mappings":"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"}