umt 1.1.7 → 1.2.1

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 +17 -12
@@ -0,0 +1 @@
1
+ export * from "./rangeAdvance";
@@ -0,0 +1,9 @@
1
+ /**
2
+ * 条件式を満たす数値の配列を返す
3
+ * @param start 開始数値
4
+ * @param end 終了数値
5
+ * @param conditionalExpression 条件式
6
+ * @returns
7
+ */
8
+ declare function rangeAdvance(start: number, end?: number, conditionalExpression?: (number_: number) => boolean): number[];
9
+ export { rangeAdvance };
@@ -0,0 +1,3 @@
1
+ export declare const checkFlagAlignment: <T extends {
2
+ flag: boolean;
3
+ }>(matrix: T[][]) => boolean;
@@ -0,0 +1,26 @@
1
+ export const checkFlagAlignment = (matrix) => {
2
+ const rows = matrix.length;
3
+ const cols = matrix[0].length;
4
+ // 横方向のチェック
5
+ for (let index = 0; index < rows; index++) {
6
+ if (matrix[index].every((cell) => cell.flag)) {
7
+ return true;
8
+ }
9
+ }
10
+ // 縦方向のチェック
11
+ for (let index = 0; index < cols; index++) {
12
+ if (matrix.every((row) => row[index].flag)) {
13
+ return true;
14
+ }
15
+ }
16
+ // 斜め方向のチェック (左上から右下へ)
17
+ if (matrix.every((row, index) => row[index].flag)) {
18
+ return true;
19
+ }
20
+ // 斜め方向のチェック (左下から右上へ)
21
+ if (matrix.every((row, index) => row[cols - index - 1].flag)) {
22
+ return true;
23
+ }
24
+ return false;
25
+ };
26
+ //# sourceMappingURL=checkFlagAlignment.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"checkFlagAlignment.js","sourceRoot":"","sources":["../../src/Array/checkFlagAlignment.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAChC,MAAa,EACJ,EAAE;IACX,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC;IAC3B,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;IAE9B,WAAW;IACX,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,IAAI,EAAE,KAAK,EAAE,EAAE;QACzC,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;YAC5C,OAAO,IAAI,CAAC;SACb;KACF;IAED,WAAW;IACX,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,IAAI,EAAE,KAAK,EAAE,EAAE;QACzC,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,EAAE;YAC1C,OAAO,IAAI,CAAC;SACb;KACF;IAED,sBAAsB;IACtB,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,EAAE;QACjD,OAAO,IAAI,CAAC;KACb;IAED,sBAAsB;IACtB,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE;QAC5D,OAAO,IAAI,CAAC;KACb;IAED,OAAO,KAAK,CAAC;AACf,CAAC,CAAC"}
@@ -1,3 +1,2 @@
1
- import { newDateInt, newDateStr } from "./new";
2
- import { now } from "./now";
3
- export { now, newDateInt, newDateStr };
1
+ export * from "./new";
2
+ export * from "./now";
@@ -8,15 +8,15 @@ import { multiplication } from "../multiplication";
8
8
  * @returns 換算後の通貨額を文字列で返す。換算できない場合は元の文字列を返す。
9
9
  */
10
10
  export const convertCurrency = (inputString, conversionRates) => {
11
- // biome-ignore lint/style/useBlockStatements: <explanation>
12
- if (!conversionRates)
11
+ if (!conversionRates) {
13
12
  return inputString;
13
+ }
14
14
  for (const currencySymbol in conversionRates) {
15
15
  if (inputString.startsWith(currencySymbol)) {
16
- const amountStr = inputString.slice(currencySymbol.length);
16
+ const amountString = inputString.slice(currencySymbol.length);
17
17
  const rate = conversionRates[currencySymbol];
18
18
  if (isNumber(rate)) {
19
- const amount = Number(amountStr);
19
+ const amount = Number(amountString);
20
20
  const convertedAmount = multiplication(amount, Number(rate));
21
21
  return Number.isNaN(convertedAmount)
22
22
  ? inputString
@@ -1 +1 @@
1
- {"version":3,"file":"convertCurrency.js","sourceRoot":"","sources":["../../../src/Math/calculator/convertCurrency.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEnD;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,CAK7B,WAAmB,EACnB,eAAmB,EACnB,EAAE;IACF,4DAA4D;IAC5D,IAAI,CAAC,eAAe;QAAE,OAAO,WAAW,CAAC;IAEzC,KAAK,MAAM,cAAc,IAAI,eAAe,EAAE;QAC5C,IAAI,WAAW,CAAC,UAAU,CAAC,cAAc,CAAC,EAAE;YAC1C,MAAM,SAAS,GAAG,WAAW,CAAC,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;YAC3D,MAAM,IAAI,GAAG,eAAe,CAAC,cAAc,CAAC,CAAC;YAE7C,IAAI,QAAQ,CAAC,IAAI,CAAC,EAAE;gBAClB,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC;gBACjC,MAAM,eAAe,GAAG,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;gBAE7D,OAAO,MAAM,CAAC,KAAK,CAAC,eAAe,CAAC;oBAClC,CAAC,CAAC,WAAW;oBACb,CAAC,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;aAC7B;SACF;KACF;IACD,OAAO,WAAW,CAAC;AACrB,CAAC,CAAC"}
1
+ {"version":3,"file":"convertCurrency.js","sourceRoot":"","sources":["../../../src/Math/calculator/convertCurrency.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEnD;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,CAK7B,WAAmB,EACnB,eAAmB,EACnB,EAAE;IACF,IAAI,CAAC,eAAe,EAAE;QACpB,OAAO,WAAW,CAAC;KACpB;IAED,KAAK,MAAM,cAAc,IAAI,eAAe,EAAE;QAC5C,IAAI,WAAW,CAAC,UAAU,CAAC,cAAc,CAAC,EAAE;YAC1C,MAAM,YAAY,GAAG,WAAW,CAAC,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;YAC9D,MAAM,IAAI,GAAG,eAAe,CAAC,cAAc,CAAC,CAAC;YAE7C,IAAI,QAAQ,CAAC,IAAI,CAAC,EAAE;gBAClB,MAAM,MAAM,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC;gBACpC,MAAM,eAAe,GAAG,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;gBAC7D,OAAO,MAAM,CAAC,KAAK,CAAC,eAAe,CAAC;oBAClC,CAAC,CAAC,WAAW;oBACb,CAAC,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;aAC7B;SACF;KACF;IACD,OAAO,WAAW,CAAC;AACrB,CAAC,CAAC"}
@@ -2,6 +2,7 @@ import { addition } from "../../Math/addition";
2
2
  import { division } from "../../Math/division";
3
3
  import { multiplication } from "../../Math/multiplication";
4
4
  import { subtract } from "../../Math/subtract";
5
+ import { isNumber } from "../isNumber";
5
6
  import { convertCurrency } from "./convertCurrency";
6
7
  export const calculatorCore = (expression, currencyExchange) => {
7
8
  let sanitizedExpression = expression;
@@ -15,15 +16,36 @@ export const calculatorCore = (expression, currencyExchange) => {
15
16
  }
16
17
  // 括弧の処理
17
18
  if (containsParentheses(sanitizedExpression)) {
18
- sanitizedExpression = resolveParentheses(sanitizedExpression);
19
+ const temporary = resolveParentheses(sanitizedExpression);
20
+ if (temporary === NaN.toString()) {
21
+ return sanitizedExpression;
22
+ }
23
+ sanitizedExpression = temporary;
19
24
  }
20
- // 乗算、除算、べき乗の処理
21
- else if (containsMulDivExp(sanitizedExpression)) {
22
- sanitizedExpression = resolveMulDivExp(sanitizedExpression);
25
+ // 乗算、べき乗の処理
26
+ else if (containsMulExp(sanitizedExpression)) {
27
+ const temporary = resolveMulExp(sanitizedExpression);
28
+ if (temporary === NaN.toString()) {
29
+ return sanitizedExpression;
30
+ }
31
+ sanitizedExpression = temporary;
32
+ }
33
+ // 除算の処理
34
+ else if (containsDiv(sanitizedExpression)) {
35
+ const temporary = resolveDiv(sanitizedExpression);
36
+ if (temporary === NaN.toString()) {
37
+ return sanitizedExpression;
38
+ }
39
+ sanitizedExpression = temporary;
23
40
  }
24
41
  // 加算と減算の処理
25
- else if (containsAddSub(sanitizedExpression)) {
26
- sanitizedExpression = resolveAddSub(sanitizedExpression);
42
+ else if (containsAddSub(sanitizedExpression) &&
43
+ !isNumber(sanitizedExpression)) {
44
+ const temporary = resolveAddSub(sanitizedExpression);
45
+ if (temporary === NaN.toString()) {
46
+ return sanitizedExpression;
47
+ }
48
+ sanitizedExpression = temporary;
27
49
  }
28
50
  // もう計算するものがなければ結果を返す
29
51
  else {
@@ -33,17 +55,17 @@ export const calculatorCore = (expression, currencyExchange) => {
33
55
  };
34
56
  const sanitizeSigns = (expr) => {
35
57
  return expr
36
- .replace(/--/g, "+")
37
- .replace(/\+\+/g, "+")
38
- .replace(/\+-/g, "+0-")
39
- .replace(/\-\+/g, "+0-");
58
+ .replaceAll("--", "+")
59
+ .replaceAll("++", "+")
60
+ .replaceAll("+-", "+0-")
61
+ .replaceAll("-+", "+0-");
40
62
  };
41
63
  const applyCurrencyExchange = (expr, rates) => {
42
64
  let returnExpr = expr;
43
65
  // 通貨の交換ロジック
44
- for (const i in rates) {
45
- if (returnExpr.indexOf(i) !== -1) {
46
- const $ = returnExpr.match(new RegExp(`\\${i}([0-9]+)`));
66
+ for (const index in rates) {
67
+ if (returnExpr.includes(index)) {
68
+ const $ = returnExpr.match(new RegExp(`\\${index}([0-9]+)`));
47
69
  if ($) {
48
70
  returnExpr = returnExpr.replace($[0], convertCurrency($[0], rates));
49
71
  }
@@ -52,52 +74,56 @@ const applyCurrencyExchange = (expr, rates) => {
52
74
  return returnExpr;
53
75
  };
54
76
  const containsParentheses = (expr) => {
55
- return expr.indexOf("(") !== -1 || expr.indexOf(")") !== -1;
77
+ return expr.includes("(") || expr.includes(")");
56
78
  };
57
79
  const resolveParentheses = (expr) => {
58
80
  // 括弧内の計算ロジック
59
- const match = expr.match(/\(\d+\.?(\d+)?(\*|\/|\+|\-)\d+\.?(\d+)?\)/);
81
+ const match = expr.match(/\(\d+\.?(\d+)?([*+/-])\d+\.?(\d+)?\)/);
60
82
  if (match) {
61
- return expr.replace(match[0], calculatorCore(match[0].replace(/\(|\)/g, "")));
83
+ return expr.replace(match[0], calculatorCore(match[0].replaceAll(/\(|\)/g, "")));
62
84
  }
63
- return expr;
85
+ return NaN.toString();
64
86
  };
65
- const containsMulDivExp = (expr) => {
66
- return (expr.indexOf("^") !== -1 ||
67
- expr.indexOf("*") !== -1 ||
68
- expr.indexOf("/") !== -1);
87
+ const containsMulExp = (expr) => {
88
+ return expr.includes("^") || expr.includes("*");
69
89
  };
70
- const resolveMulDivExp = (expr) => {
71
- // 乗算、除算、べき乗の計算ロジック
72
- const match = expr.match(/\d+\.?(\d+)?(\*|\/|\^)\d+\.?(\d+)?/);
90
+ const containsDiv = (expr) => {
91
+ return expr.includes("/");
92
+ };
93
+ const resolveMulExp = (expr) => {
94
+ // 乗算、べき乗の計算ロジック
95
+ const match = expr.match(/(.*?)(\d+\.?(\d+)?([*^])\d+\.?(\d+)?$)/);
73
96
  if (match) {
74
- const operands = match[0].split(/(\*|\/|\^)/);
97
+ const operands = match[2].split(/([*/^])/);
75
98
  const result = operands[1] === "^"
76
99
  ? Math.pow(Number(operands[0]), Number(operands[2]))
77
- : operands[1] === "*"
78
- ? multiplication(Number(operands[0]), Number(operands[2]))
79
- : operands[1] === "/"
80
- ? division(Number(operands[0]), Number(operands[2]))
81
- : 0;
100
+ : multiplication(Number(operands[0]), Number(operands[2]));
101
+ return `${match[1]}${result}`;
102
+ }
103
+ return NaN.toString();
104
+ };
105
+ const resolveDiv = (expr) => {
106
+ // 除算の計算ロジック
107
+ const match = expr.match(/\d+\.?(\d+)?(\/)\d+\.?(\d+)?/);
108
+ if (match) {
109
+ const operands = match[0].split(/(\/)/);
110
+ const result = division(Number(operands[0]), Number(operands[2]));
82
111
  return expr.replace(match[0], String(result));
83
112
  }
84
- return expr;
113
+ return NaN.toString();
85
114
  };
86
115
  const containsAddSub = (expr) => {
87
- return expr.indexOf("+") !== -1 || expr.indexOf("-") !== -1;
116
+ return expr.includes("+") || expr.includes("-");
88
117
  };
89
118
  const resolveAddSub = (expr) => {
90
119
  // 加算、減算の計算ロジック
91
- const match = expr.match(/\d+\.?(\d+)?(\+|\-)\d+\.?(\d+)?/);
120
+ const match = expr.match(/(-?\d+)\.?(\d+)?(\+|-)(-?\d+)\.?(\d+)?/);
92
121
  if (match) {
93
- const operands = match[0].split(/(\+|\-)/);
94
- const result = operands[1] === "+"
95
- ? addition(Number(operands[0]), Number(operands[2]))
96
- : operands[1] === "-"
97
- ? subtract(Number(operands[0]), Number(operands[2]))
98
- : 0;
122
+ const result = match[3] === "+"
123
+ ? addition(Number(match[1]), Number(match[4]))
124
+ : subtract(Number(match[1]), Number(match[4]));
99
125
  return expr.replace(match[0], String(result));
100
126
  }
101
- return expr;
127
+ return NaN.toString();
102
128
  };
103
129
  //# sourceMappingURL=core.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"core.js","sourceRoot":"","sources":["../../../src/Math/calculator/core.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"core.js","sourceRoot":"","sources":["../../../src/Math/calculator/core.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,5 @@
1
- import { calculator } from "./calculator";
2
- import { calculatorInitialization } from "./calculatorInitialization";
3
- import { convertCurrency } from "./convertCurrency";
4
- import { calculatorCore } from "./core";
5
- import { literalExpression } from "./literalExpression";
6
- export { calculator, calculatorInitialization, calculatorCore, convertCurrency, literalExpression, };
1
+ export * from "./calculator";
2
+ export * from "./calculatorInitialization";
3
+ export * from "./convertCurrency";
4
+ export * from "./core";
5
+ export * from "./literalExpression";
@@ -1,5 +1,6 @@
1
1
  /**
2
- * 方程式計算
3
- * @param {string} x
2
+ * 文字式の方程式を計算する
3
+ * @param x 方程式の文字列
4
+ * @returns 計算結果
4
5
  */
5
6
  export declare const literalExpression: (x: string) => string;
@@ -2,51 +2,57 @@ import { division } from "../division";
2
2
  import { gcd } from "../gcd";
3
3
  import { calculatorCore } from "./core";
4
4
  /**
5
- * 方程式計算
6
- * @param {string} x
5
+ * 文字式の方程式を計算する
6
+ * @param x 方程式の文字列
7
+ * @returns 計算結果
7
8
  */
8
9
  export const literalExpression = (x) => {
9
- const cache = [[], ""];
10
- for (const i of x.split("=")) {
11
- if (/[a-zA-Z]+/.test(i) === false) {
12
- cache[1] = i;
10
+ // 方程式の数値と変数部分を格納
11
+ let numericalPart = "";
12
+ let variablePart = [];
13
+ // 等号で分割し、数値と変数部分を識別
14
+ for (const part of x.split("=")) {
15
+ if (/[A-Za-z]+/.test(part)) {
16
+ variablePart = part
17
+ .split(/(\d+[A-Za-z]+)|([^A-Za-z]+)/)
18
+ .filter((n) => n && n !== undefined);
13
19
  }
14
20
  else {
15
- cache[0] = i
16
- .split(/([0-9]+[a-zA-Z]+)|([^a-zA-Z]+)/)
17
- .filter((n) => n !== "" && typeof n !== "undefined");
21
+ numericalPart = part;
18
22
  }
19
23
  }
20
- if (cache[0][1]) {
21
- cache[0][1] = calculatorCore(cache[0][1]);
22
- if (cache[0][1].indexOf("+") !== -1) {
23
- cache[0][1] = cache[0][1].replace(/\+/g, "plus");
24
- }
25
- if (cache[0][1].indexOf("-") !== -1) {
26
- cache[0][1] = cache[0][1].replace(/\-/g, "minus");
27
- }
28
- if (cache[0][1].indexOf("plus") !== 1) {
29
- cache[0][1] = cache[0][1].replace(/plus/g, "-");
30
- }
31
- if (cache[0][1].indexOf("minus") !== 1) {
32
- cache[0][1] = cache[0][1].replace(/minus/g, "+");
33
- }
24
+ // 変数部分の計算
25
+ if (variablePart[1]) {
26
+ variablePart[1] = calculatorCore(variablePart[1])
27
+ .replaceAll("+", "plus")
28
+ .replaceAll("-", "minus")
29
+ .replaceAll("plus", "-")
30
+ .replaceAll("minus", "+");
34
31
  }
35
- cache[1] = cache[0][1]
36
- ? calculatorCore(`${cache[1]}${cache[0][1]}`)
37
- : calculatorCore(cache[1]);
38
- cache[0] = cache[0][0]
39
- .split(/([0-9]+)|([a-zA-Z]+)/)
40
- .filter((n) => n !== "" && typeof n !== "undefined");
41
- if (Number.isNaN(Number(cache[0][0]))) {
42
- return cache[1];
32
+ // 数値部分の計算
33
+ numericalPart = variablePart[1]
34
+ ? calculatorCore(`${numericalPart}${variablePart[1]}`)
35
+ : calculatorCore(numericalPart);
36
+ // 変数部分を再分割
37
+ variablePart = variablePart[0]
38
+ .split(/(\d+)|([A-Za-z]+)/)
39
+ .filter((n) => n && n !== undefined);
40
+ // 数値がない場合は計算結果を返す
41
+ if (Number.isNaN(Number(variablePart[0]))) {
42
+ return numericalPart;
43
43
  }
44
- else {
45
- const cacheGcd = gcd(Number(cache[0][0]), Number(cache[1]));
46
- if (cacheGcd !== 1) {
47
- return `${division(Number(cache[1]), cacheGcd)}/${division(Number(cache[0][0]), cacheGcd)}`;
44
+ // 最大公約数で簡約
45
+ const commonGcd = gcd(Number(variablePart[0]), Number(numericalPart));
46
+ console.log("====================================");
47
+ console.log(commonGcd, variablePart[0], numericalPart);
48
+ console.log("====================================");
49
+ if (commonGcd !== 1) {
50
+ numericalPart = `${division(Number(numericalPart), commonGcd)}/${division(Number(variablePart[0]), commonGcd)}`;
51
+ if (/(-?)\d+\/1/.test(numericalPart)) {
52
+ return numericalPart.replace(/\/1/, "");
48
53
  }
49
- return cache[0][0] === "1" ? `${cache[1]}/${cache[0][0]}` : cache[1];
54
+ return numericalPart;
50
55
  }
56
+ return numericalPart;
51
57
  };
52
58
  //# sourceMappingURL=literalExpression.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"literalExpression.js","sourceRoot":"","sources":["../../../src/Math/calculator/literalExpression.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,GAAG,EAAE,MAAM,QAAQ,CAAC;AAC7B,OAAO,EAAE,cAAc,EAAE,MAAM,QAAQ,CAAC;AACxC;;;GAGG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAS,EAAE,EAAE;IAC7C,MAAM,KAAK,GAAuB,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;IAC3C,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;QAC5B,IAAI,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,KAAK,EAAE;YACjC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;SACd;aAAM;YACL,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC;iBACT,KAAK,CAAC,gCAAgC,CAAC;iBACvC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,EAAE,IAAI,OAAO,CAAC,KAAK,WAAW,CAAC,CAAC;SACxD;KACF;IACD,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;QACf,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1C,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE;YACnC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;SAClD;QACD,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE;YACnC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;SACnD;QACD,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;YACrC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;SACjD;QACD,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;YACtC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;SAClD;KACF;IACD,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACpB,CAAC,CAAC,cAAc,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC7C,CAAC,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7B,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;SACnB,KAAK,CAAC,sBAAsB,CAAC;SAC7B,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,EAAE,IAAI,OAAO,CAAC,KAAK,WAAW,CAAC,CAAC;IACvD,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;QACrC,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC;KACjB;SAAM;QACL,MAAM,QAAQ,GAAG,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC5D,IAAI,QAAQ,KAAK,CAAC,EAAE;YAClB,OAAO,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,IAAI,QAAQ,CACxD,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EACnB,QAAQ,CACT,EAAE,CAAC;SACL;QACD,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;KACtE;AACH,CAAC,CAAC"}
1
+ {"version":3,"file":"literalExpression.js","sourceRoot":"","sources":["../../../src/Math/calculator/literalExpression.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,GAAG,EAAE,MAAM,QAAQ,CAAC;AAC7B,OAAO,EAAE,cAAc,EAAE,MAAM,QAAQ,CAAC;AACxC;;;;GAIG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAS,EAAU,EAAE;IACrD,iBAAiB;IACjB,IAAI,aAAa,GAAG,EAAE,CAAC;IACvB,IAAI,YAAY,GAAa,EAAE,CAAC;IAEhC,oBAAoB;IACpB,KAAK,MAAM,IAAI,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;QAC/B,IAAI,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;YAC1B,YAAY,GAAG,IAAI;iBAChB,KAAK,CAAC,6BAA6B,CAAC;iBACpC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,SAAS,CAAC,CAAC;SACxC;aAAM;YACL,aAAa,GAAG,IAAI,CAAC;SACtB;KACF;IAED,UAAU;IACV,IAAI,YAAY,CAAC,CAAC,CAAC,EAAE;QACnB,YAAY,CAAC,CAAC,CAAC,GAAG,cAAc,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;aAC9C,UAAU,CAAC,GAAG,EAAE,MAAM,CAAC;aACvB,UAAU,CAAC,GAAG,EAAE,OAAO,CAAC;aACxB,UAAU,CAAC,MAAM,EAAE,GAAG,CAAC;aACvB,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;KAC7B;IAED,UAAU;IACV,aAAa,GAAG,YAAY,CAAC,CAAC,CAAC;QAC7B,CAAC,CAAC,cAAc,CAAC,GAAG,aAAa,GAAG,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC;QACtD,CAAC,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC;IAElC,WAAW;IACX,YAAY,GAAG,YAAY,CAAC,CAAC,CAAC;SAC3B,KAAK,CAAC,mBAAmB,CAAC;SAC1B,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,SAAS,CAAC,CAAC;IAEvC,kBAAkB;IAClB,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;QACzC,OAAO,aAAa,CAAC;KACtB;IAED,WAAW;IACX,MAAM,SAAS,GAAG,GAAG,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC;IACtE,OAAO,CAAC,GAAG,CAAC,sCAAsC,CAAC,CAAC;IACpD,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC;IACvD,OAAO,CAAC,GAAG,CAAC,sCAAsC,CAAC,CAAC;IACpD,IAAI,SAAS,KAAK,CAAC,EAAE;QACnB,aAAa,GAAG,GAAG,QAAQ,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,SAAS,CAAC,IAAI,QAAQ,CACvE,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,EACvB,SAAS,CACV,EAAE,CAAC;QACJ,IAAI,YAAY,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE;YACpC,OAAO,aAAa,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;SACzC;QACD,OAAO,aAAa,CAAC;KACtB;IAED,OAAO,aAAa,CAAC;AACvB,CAAC,CAAC"}
@@ -1,5 +1,5 @@
1
1
  /**
2
- * 自然数の最大公約数
2
+ * 最大公約数
3
3
  * @param {number} x
4
4
  * @param {number} y
5
5
  * @param {number} ...z
@@ -1,19 +1,18 @@
1
- import { valueSwap } from "./valueSwap";
2
1
  /**
3
- * 自然数の最大公約数
2
+ * 最大公約数
4
3
  * @param {number} x
5
4
  * @param {number} y
6
5
  * @param {number} ...z
7
6
  * @returns number
8
7
  */
9
8
  export const gcd = (x, y, ...z) => {
10
- let copyX = x;
11
- let copyY = y;
12
- const copyZ = z;
9
+ let copyX = Math.abs(x);
10
+ let copyY = Math.abs(y);
11
+ const copyZ = z.map((element) => Math.abs(element));
13
12
  if (copyX === 0 || copyY === 0) {
14
13
  return 0;
15
14
  }
16
- [copyX, copyY] = valueSwap(copyX, copyY);
15
+ [copyX, copyY] = [Math.max(copyX, copyY), Math.min(copyX, copyY)];
17
16
  /* ユークリッドの互除法 */
18
17
  let r = copyY % copyX;
19
18
  while (r !== 0) {
@@ -22,8 +21,8 @@ export const gcd = (x, y, ...z) => {
22
21
  r = copyY % copyX;
23
22
  }
24
23
  if (copyZ.length > 0) {
25
- for (let i = 0; i < copyZ.length; i++) {
26
- copyX = gcd(copyX, copyZ[i]);
24
+ for (const element of copyZ) {
25
+ copyX = gcd(copyX, element);
27
26
  }
28
27
  }
29
28
  return copyX;
@@ -1 +1 @@
1
- {"version":3,"file":"gcd.js","sourceRoot":"","sources":["../../src/Math/gcd.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,GAAG,GAAG,CAAC,CAAS,EAAE,CAAS,EAAE,GAAG,CAAW,EAAE,EAAE;IAC1D,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,MAAM,KAAK,GAAG,CAAC,CAAC;IAChB,IAAI,KAAK,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,EAAE;QAC9B,OAAO,CAAC,CAAC;KACV;IACD,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,SAAS,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IACzC,gBAAgB;IAChB,IAAI,CAAC,GAAG,KAAK,GAAG,KAAK,CAAC;IACtB,OAAO,CAAC,KAAK,CAAC,EAAE;QACd,KAAK,GAAG,KAAK,CAAC;QACd,KAAK,GAAG,CAAC,CAAC;QACV,CAAC,GAAG,KAAK,GAAG,KAAK,CAAC;KACnB;IACD,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;QACpB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACrC,KAAK,GAAG,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;SAC9B;KACF;IACD,OAAO,KAAK,CAAC;AACf,CAAC,CAAC"}
1
+ {"version":3,"file":"gcd.js","sourceRoot":"","sources":["../../src/Math/gcd.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,GAAG,GAAG,CAAC,CAAS,EAAE,CAAS,EAAE,GAAG,CAAW,EAAE,EAAE;IAC1D,IAAI,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACxB,IAAI,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACxB,MAAM,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;IACpD,IAAI,KAAK,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,EAAE;QAC9B,OAAO,CAAC,CAAC;KACV;IACD,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;IAElE,gBAAgB;IAChB,IAAI,CAAC,GAAG,KAAK,GAAG,KAAK,CAAC;IACtB,OAAO,CAAC,KAAK,CAAC,EAAE;QACd,KAAK,GAAG,KAAK,CAAC;QACd,KAAK,GAAG,CAAC,CAAC;QACV,CAAC,GAAG,KAAK,GAAG,KAAK,CAAC;KACnB;IACD,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;QACpB,KAAK,MAAM,OAAO,IAAI,KAAK,EAAE;YAC3B,KAAK,GAAG,GAAG,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;SAC7B;KACF;IACD,OAAO,KAAK,CAAC;AACf,CAAC,CAAC"}
@@ -1,40 +1,39 @@
1
- import { addition } from "./addition";
2
- import { average } from "./average";
3
- import { calculator } from "./calculator";
4
- import { calculatorInitialization } from "./calculator/calculatorInitialization";
5
- import { degToRad } from "./degToRad";
6
- import { deviationValue } from "./deviationValue";
7
- import { division } from "./division";
8
- import { factorial } from "./factorial";
9
- import { factorize } from "./factorize";
10
- import { gcd } from "./gcd";
11
- import { getDecimalLength } from "./getDecimalLength";
12
- import { isDouble } from "./isDouble";
13
- import { isNumber } from "./isNumber";
14
- import { isPrimeNumber } from "./isPrimeNumber";
15
- import { isValueNaN } from "./isValueNaN";
16
- import { lcm } from "./lcm";
17
- import { mathConverter } from "./mathConverter";
18
- import { mathSeparator } from "./mathSeparator";
19
- import { max } from "./max";
20
- import { min } from "./min";
21
- import { multiples } from "./multiples";
22
- import { multiplication } from "./multiplication";
23
- import { nCr } from "./nCr";
24
- import { nHr } from "./nHr";
25
- import { nPr } from "./nPr";
26
- import { primeFactorization } from "./primeFactorization";
27
- import { quotient } from "./quotient";
28
- import { radToDeg } from "./radToDeg";
29
- import { random } from "./random";
30
- import { reduce } from "./reduce";
31
- import { repeatedTrial } from "./repeatedTrial";
32
- import { roundOf } from "./roundOf";
33
- import { solveEquation } from "./solveEquation";
34
- import { standardDeviation } from "./standardDeviation";
35
- import { subtract } from "./subtract";
36
- import { toBinary } from "./toBinary";
37
- import { toCelsius } from "./toCelsius";
38
- import { toKelvin } from "./toKelvin";
39
- import { valueSwap } from "./valueSwap";
40
- export { addition, average, calculator, calculatorInitialization, degToRad, deviationValue, division, factorial, factorize, gcd, getDecimalLength, isDouble, isNumber, isPrimeNumber, lcm, mathConverter, mathSeparator, max, min, multiples, multiplication, nCr, nHr, nPr, primeFactorization, quotient, radToDeg, random, reduce, repeatedTrial, roundOf, solveEquation, standardDeviation, subtract, toBinary, toCelsius, toKelvin, isValueNaN, valueSwap, };
1
+ export * from "./addition";
2
+ export * from "./average";
3
+ export * from "./calculator";
4
+ export * from "./calculator/calculatorInitialization";
5
+ export * from "./degToRad";
6
+ export * from "./deviationValue";
7
+ export * from "./division";
8
+ export * from "./factorial";
9
+ export * from "./factorize";
10
+ export * from "./gcd";
11
+ export * from "./getDecimalLength";
12
+ export * from "./isDouble";
13
+ export * from "./isNumber";
14
+ export * from "./isPrimeNumber";
15
+ export * from "./isValueNaN";
16
+ export * from "./lcm";
17
+ export * from "./mathConverter";
18
+ export * from "./mathSeparator";
19
+ export * from "./max";
20
+ export * from "./min";
21
+ export * from "./multiples";
22
+ export * from "./multiplication";
23
+ export * from "./nCr";
24
+ export * from "./nHr";
25
+ export * from "./nPr";
26
+ export * from "./primeFactorization";
27
+ export * from "./quotient";
28
+ export * from "./radToDeg";
29
+ export * from "./random";
30
+ export * from "./reduce";
31
+ export * from "./repeatedTrial";
32
+ export * from "./roundOf";
33
+ export * from "./solveEquation";
34
+ export * from "./standardDeviation";
35
+ export * from "./subtract";
36
+ export * from "./toBinary";
37
+ export * from "./toCelsius";
38
+ export * from "./toKelvin";
39
+ export * from "./valueSwap";
@@ -1,4 +1,5 @@
1
1
  /**
2
+ * 小数かどうかを判定する
2
3
  * @param {unknown} x
3
4
  * @param {boolean} [loose=true] - 文字列も対象にするかどうか
4
5
  * @returns boolean
@@ -1,4 +1,5 @@
1
1
  /**
2
+ * 小数かどうかを判定する
2
3
  * @param {unknown} x
3
4
  * @param {boolean} [loose=true] - 文字列も対象にするかどうか
4
5
  * @returns boolean
@@ -6,15 +7,13 @@
6
7
  function isDouble(x, loose = true) {
7
8
  if (loose) {
8
9
  return (
9
- // biome-ignore lint/nursery/noGlobalIsFinite: <explanation>
10
+ // biome-ignore lint/suspicious/noGlobalIsFinite: <explanation>
10
11
  isFinite(x) &&
11
12
  !Number.isNaN(x) &&
12
13
  Number.isFinite(Number(x)) &&
13
14
  !Number.isInteger(Number(x)));
14
15
  }
15
- else {
16
- return Number.isFinite(x) && !Number.isInteger(x);
17
- }
16
+ return Number.isFinite(x) && !Number.isInteger(x);
18
17
  }
19
18
  export { isDouble };
20
19
  //# sourceMappingURL=isDouble.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"isDouble.js","sourceRoot":"","sources":["../../src/Math/isDouble.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,SAAS,QAAQ,CAAC,CAAU,EAAE,KAAK,GAAG,IAAI;IACxC,IAAI,KAAK,EAAE;QACT,OAAO;QACL,4DAA4D;QAC5D,QAAQ,CAAC,CAAW,CAAC;YACrB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;YAChB,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YAC1B,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAC7B,CAAC;KACH;SAAM;QACL,OAAO,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;KACnD;AACH,CAAC;AAED,OAAO,EAAE,QAAQ,EAAE,CAAC"}
1
+ {"version":3,"file":"isDouble.js","sourceRoot":"","sources":["../../src/Math/isDouble.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,SAAS,QAAQ,CAAC,CAAU,EAAE,KAAK,GAAG,IAAI;IACxC,IAAI,KAAK,EAAE;QACT,OAAO;QACL,+DAA+D;QAC/D,QAAQ,CAAC,CAAW,CAAC;YACrB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;YAChB,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YAC1B,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAC7B,CAAC;KACH;IACD,OAAO,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AACpD,CAAC;AAED,OAAO,EAAE,QAAQ,EAAE,CAAC"}
@@ -1,5 +1,9 @@
1
1
  /**
2
- * @param {string} x
3
- * @returns string
2
+ * nの2乗を展開します。
3
+ *
4
+ * 1250*1250 => 1500*1000+400*100+200*100+50*50
5
+ *
6
+ * @param {string} equation - 変換する数学的な式
7
+ * @returns {string} 変換後の式
4
8
  */
5
- export declare const mathConverter: (x: string) => string;
9
+ export declare const mathConverter: (equation: string) => string;