teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

20

テキスト追加

2020/03/22 00:15

投稿

jun68ykt
jun68ykt

スコア9058

answer CHANGED
@@ -34,7 +34,7 @@
34
34
  });
35
35
  ```
36
36
 
37
- (※上記のコードを、[https://jsfiddle.net/jun68ykt/w5ovpba6/5/](https://jsfiddle.net/jun68ykt/w5ovpba6/5/) にも上げました。)
37
+ (※上記のコードを、[https://codepen.io/jun68ykt/pen/gOpdMPQ?editors=0012](https://codepen.io/jun68ykt/pen/gOpdMPQ?editors=0012) にも上げました。)
38
38
 
39
39
 
40
40
  上記を実行すると、以下が表示されます。

19

テキスト修正

2020/03/22 00:15

投稿

jun68ykt
jun68ykt

スコア9058

answer CHANGED
@@ -52,13 +52,13 @@
52
52
    **3桁の整数 __x__ について、__x__ が連続する数字3つで構成されるならば、( __x__ - 12 ) は 111 で割り切れる**
53
53
  ( 例: __x__ = 567 とすると、(567 - 12) ÷ 111 = 555 ÷ 111 = 5 余り 0 )
54
54
 
55
- ことを利用しています。具体的には 4桁の数 `n` から、以下のつ数
55
+ ことを利用しています。具体的には 4桁の数 `n` から、以下の(ともに3桁)
56
56
 
57
57
  - 先頭3文字の数: `Math.floor(n / 10)`
58
58
   
59
59
  - 末尾3文字の数: `n % 1000`
60
60
 
61
- を作り、これら2つ数の
61
+ を作り、これらの
62
62
 
63
63
  - 両方ともに、12引いてから 111で割ると割り切れないならば true を
64
64
   

18

テキスト修正

2018/06/25 23:17

投稿

jun68ykt
jun68ykt

スコア9058

answer CHANGED
@@ -7,7 +7,7 @@
7
7
  を、`1ずつ増えていく、0以上9以下の整数を項とする数列` と解釈しています。以下の回答の文中に
8
8
  出てくる "`連続する数字`" も同様に、1ずつ**増える**、2個以上の整数を意味します。
9
9
 
10
- 上記を前提として、以下のような方法を考えました。
10
+ 上記を前提として、以下のような `checkNum` の実装を考えました。
11
11
 
12
12
 
13
13
  ```javascript
@@ -20,7 +20,7 @@
20
20
  * true : n の中に連続する3個以上の数字が含まれない
21
21
  * false : n の中に連続する3個以上の数字を含む
22
22
  */
23
- const check = n => [Math.floor(n / 10), n % 1000].every(x => (x - 12) % 111);
23
+ const checkNum = n => [Math.floor(n / 10), n % 1000].every(x => (x - 12) % 111);
24
24
 
25
25
  // テスト
26
26
  [

17

テキスト修正

2018/06/24 21:32

投稿

jun68ykt
jun68ykt

スコア9058

answer CHANGED
@@ -12,7 +12,7 @@
12
12
 
13
13
  ```javascript
14
14
  /*
15
- * check(n)
15
+ * checkNum(n)
16
16
  *
17
17
  * 引数 n : 4桁の整数
18
18
  *
@@ -30,11 +30,11 @@
30
30
  2678,
31
31
  4567
32
32
  ].forEach(e => {
33
- console.log(`${check(e) ? 'OK' : 'ERROR'}: ${e}`);
33
+ console.log(`${checkNum(e) ? 'OK' : 'ERROR'}: ${e}`);
34
34
  });
35
35
  ```
36
36
 
37
- (※上記のコードを、[https://jsfiddle.net/jun68ykt/w5ovpba6/4/](https://jsfiddle.net/jun68ykt/w5ovpba6/4/) にも上げました。)
37
+ (※上記のコードを、[https://jsfiddle.net/jun68ykt/w5ovpba6/5/](https://jsfiddle.net/jun68ykt/w5ovpba6/5/) にも上げました。)
38
38
 
39
39
 
40
40
  上記を実行すると、以下が表示されます。
@@ -64,7 +64,7 @@
64
64
   
65
65
  - いずれかが、 12引いてから 111で割ると割り切れるならば false を
66
66
 
67
- 返すように、`check(n)` を作成しました。
67
+ 返すように、`checkNum(n)` を作成しました。
68
68
 
69
69
   
70
70
  以上、参考になれば幸いです。
@@ -74,10 +74,10 @@
74
74
 
75
75
  900 から 12を引くと 888で、888 は 111で割り切れます。
76
76
  従って、たとえば 9001 は連続した3つの数を含んでいなくても、
77
- `check(9001)` は `false`を返しますが、
77
+ 上記回答の `checkNum(9001)` は `false`を返しますが、
78
78
  ご質問の中に
79
79
 
80
80
  > 前提条件としては数字の中には同じ数字は含まれません。
81
81
 
82
82
  とあるので、 9001 のほか、 9008 や 2900 などは0 を2つ含むので、
83
- チェック対象の数(`check(n)` の引数 `n` )としては考慮していません。
83
+ チェック対象の数(`checkNum(n)` の引数 `n` )としては考慮していません。

16

テキスト修正

2018/06/24 21:30

投稿

jun68ykt
jun68ykt

スコア9058

answer CHANGED
@@ -20,7 +20,7 @@
20
20
  * true : n の中に連続する3個以上の数字が含まれない
21
21
  * false : n の中に連続する3個以上の数字を含む
22
22
  */
23
- const check = n => [Math.floor(n / 10), n % 1000].every(e => (e - 12) % 111);
23
+ const check = n => [Math.floor(n / 10), n % 1000].every(x => (x - 12) % 111);
24
24
 
25
25
  // テスト
26
26
  [
@@ -34,7 +34,7 @@
34
34
  });
35
35
  ```
36
36
 
37
- (※上記のコードを、[https://jsfiddle.net/jun68ykt/w5ovpba6/2/](https://jsfiddle.net/jun68ykt/w5ovpba6/2/) にも上げました。)
37
+ (※上記のコードを、[https://jsfiddle.net/jun68ykt/w5ovpba6/4/](https://jsfiddle.net/jun68ykt/w5ovpba6/4/) にも上げました。)
38
38
 
39
39
 
40
40
  上記を実行すると、以下が表示されます。
@@ -52,15 +52,17 @@
52
52
    **3桁の整数 __x__ について、__x__ が連続する数字3つで構成されるならば、( __x__ - 12 ) は 111 で割り切れる**
53
53
  ( 例: __x__ = 567 とすると、(567 - 12) ÷ 111 = 555 ÷ 111 = 5 余り 0 )
54
54
 
55
- ことを利用して4桁の数 `n` から、以下の2つ数
55
+ ことを利用しています。具体的には 4桁の数 `n` から、以下の2つ数
56
56
 
57
57
  - 先頭3文字の数: `Math.floor(n / 10)`
58
+  
58
59
  - 末尾3文字の数: `n % 1000`
59
60
 
60
61
  を作り、これら2つの数の
61
62
 
62
- - 両方ともに、12引いてから 111で割ると割り切れないならば true を
63
+ - 両方ともに、12引いてから 111で割ると割り切れないならば true を
64
+  
63
- - いずれかが、 12引いてから 111で割ると割り切れるならば false を
65
+ - いずれかが、 12引いてから 111で割ると割り切れるならば false を
64
66
 
65
67
  返すように、`check(n)` を作成しました。
66
68
 

15

テキスト追加

2018/06/24 14:50

投稿

jun68ykt
jun68ykt

スコア9058

answer CHANGED
@@ -49,8 +49,8 @@
49
49
  考え方としては、
50
50
 
51
51
 
52
-   **3桁の数 x について、x が連続する数字3つで構成されるならば、(x - 12) は 111 で割り切れる**
52
+   **3桁の__x__ について、__x__ が連続する数字3つで構成されるならば、( __x__ - 12 ) は 111 で割り切れる**
53
- ( 例: x = 567 とすると、(567 - 12) ÷ 111 = 555 ÷ 111 = 5 余り 0 )
53
+ ( 例: __x__ = 567 とすると、(567 - 12) ÷ 111 = 555 ÷ 111 = 5 余り 0 )
54
54
 
55
55
  ことを利用して、4桁の数 `n` から、以下の2つ数
56
56
 

14

テキスト追加

2018/06/21 01:23

投稿

jun68ykt
jun68ykt

スコア9058

answer CHANGED
@@ -5,7 +5,7 @@
5
5
  > 続き数字
6
6
 
7
7
  を、`1ずつ増えていく、0以上9以下の整数を項とする数列` と解釈しています。以下の回答の文中に
8
- 出てくる `連続する数字` も同様に、1ずつ**増える**、2個以上の整数を意味します。
8
+ 出てくる "`連続する数字`" も同様に、1ずつ**増える**、2個以上の整数を意味します。
9
9
 
10
10
  上記を前提として、以下のような方法を考えました。
11
11
 

13

テキスト追加

2018/06/21 01:20

投稿

jun68ykt
jun68ykt

スコア9058

answer CHANGED
@@ -4,7 +4,8 @@
4
4
 
5
5
  > 続き数字
6
6
 
7
- を、`1ずつ増えていく、0以上9以下の整数を項とする数列` と解釈しています。
7
+ を、`1ずつ増えていく、0以上9以下の整数を項とする数列` と解釈しています。以下の回答の文中に
8
+ 出てくる `連続する数字` も同様に、1ずつ**増える**、2個以上の整数を意味します。
8
9
 
9
10
  上記を前提として、以下のような方法を考えました。
10
11
 

12

テキスト追加

2018/06/21 01:18

投稿

jun68ykt
jun68ykt

スコア9058

answer CHANGED
@@ -1,8 +1,14 @@
1
1
  こんにちは。
2
2
 
3
- 以下ような方法を考えまた。
3
+ 回答の前提とて、ご質問にある
4
4
 
5
+ > 続き数字
5
6
 
7
+ を、`1ずつ増えていく、0以上9以下の整数を項とする数列` と解釈しています。
8
+
9
+ 上記を前提として、以下のような方法を考えました。
10
+
11
+
6
12
  ```javascript
7
13
  /*
8
14
  * check(n)

11

テキスト修正

2018/06/21 01:14

投稿

jun68ykt
jun68ykt

スコア9058

answer CHANGED
@@ -43,7 +43,7 @@
43
43
 
44
44
 
45
45
    **3桁の数 x について、x が連続する数字3つで構成されるならば、(x - 12) は 111 で割り切れる**
46
- ( 例: x = 567 とすると、(567-12) / 111 = 555 / 111 = 5 余り 0 )
46
+ ( 例: x = 567 とすると、(567 - 12) ÷ 111 = 555 ÷ 111 = 5 余り 0 )
47
47
 
48
48
  ことを利用して、4桁の数 `n` から、以下の2つ数
49
49
 

10

テキスト修正

2018/06/20 19:37

投稿

jun68ykt
jun68ykt

スコア9058

answer CHANGED
@@ -42,9 +42,8 @@
42
42
  考え方としては、
43
43
 
44
44
 
45
-   **3桁の数 x について、x が ** (たとえば 567のように)
46
- **連続する数字3つで構成されるならば、(x - 12) は 111 で割り切れる**
45
+   **3桁の数 x について、x が連続する数字3つで構成されるならば、(x - 12) は 111 で割り切れる**
47
- ( 例: (567-12) / 111 = 555 / 111 = 5 余り 0 )
46
+ ( 例: x = 567 とすると、(567-12) / 111 = 555 / 111 = 5 余り 0 )
48
47
 
49
48
  ことを利用して、4桁の数 `n` から、以下の2つ数
50
49
 

9

テキスト修正

2018/06/20 19:32

投稿

jun68ykt
jun68ykt

スコア9058

answer CHANGED
@@ -44,6 +44,7 @@
44
44
 
45
45
    **3桁の数 x について、x が ** (たとえば 567のように)
46
46
  **連続する数字3つで構成されるならば、(x - 12) は 111 で割り切れる**
47
+ ( 例: (567-12) / 111 = 555 / 111 = 5 余り 0 )
47
48
 
48
49
  ことを利用して、4桁の数 `n` から、以下の2つ数
49
50
 

8

テキスト修正

2018/06/20 19:31

投稿

jun68ykt
jun68ykt

スコア9058

answer CHANGED
@@ -38,20 +38,25 @@
38
38
  ERROR: 2678
39
39
  ERROR: 4567
40
40
 
41
- 以下、考え方の説明です。
42
41
 
43
- 関数 `check(n)` は、
42
+ 考え方としては、
43
+
44
44
 
45
+   **3桁の数 x について、x が ** (たとえば 567のように)
45
-   **3桁の数 x について、x が連続する数字3つで構成されるならば、(x - 12) は 111 で割り切れる**
46
+ **連続する数字3つで構成されるならば、(x - 12) は 111 で割り切れる**
46
47
 
47
- ことを使って、 引数の4桁の数 `n` を、先頭3文字の数 `Math.floor(n / 10)` と、
48
- 末尾3文字の数 `n % 1000` とに分け、これら2つ
48
+ ことを利用して、4桁の数 `n` 、以下の2つ数
49
49
 
50
- - 両方ともに、 「12引いてから、111で割ると割り切れない」を満たすときに true を、
51
- - いずれかが 「12引いてから、111で割ると割り切れる」を満たすときに false を、
50
+ - 先頭3文字の数: `Math.floor(n / 10)`
51
+ - 末尾3文字の数: `n % 1000`
52
52
 
53
- 返すようにしています。
53
+ を作り、これら2つの数の
54
54
 
55
+ - 両方ともに、12引いてから 111で割ると割り切れないならば true を、
56
+ - いずれかが、 12引いてから 111で割ると割り切れるならば false を、
57
+
58
+ 返すように、`check(n)` を作成しました。
59
+
55
60
   
56
61
  以上、参考になれば幸いです。
57
62
 

7

テキスト修正

2018/06/20 19:25

投稿

jun68ykt
jun68ykt

スコア9058

answer CHANGED
@@ -38,8 +38,9 @@
38
38
  ERROR: 2678
39
39
  ERROR: 4567
40
40
 
41
+ 以下、考え方の説明です。
41
42
 
42
- 考え方としては、関数 `check(n)` は、
43
+ 関数 `check(n)` は、
43
44
 
44
45
    **3桁の数 x について、x が連続する数字3つで構成されるならば、(x - 12) は 111 で割り切れる**
45
46
 

6

テキスト修正

2018/06/20 18:48

投稿

jun68ykt
jun68ykt

スコア9058

answer CHANGED
@@ -57,7 +57,7 @@
57
57
  ---
58
58
  **補足**
59
59
 
60
- 900 は、12を引くと888で、888 は 111で割り切れます。
60
+ 900 から 12を引くと 888で、888 は 111で割り切れます。
61
61
  従って、たとえば 9001 は連続した3つの数を含んでいなくても、
62
62
  `check(9001)` は `false`を返しますが、
63
63
  ご質問の中に

5

テキスト修正

2018/06/20 18:39

投稿

jun68ykt
jun68ykt

スコア9058

answer CHANGED
@@ -57,7 +57,7 @@
57
57
  ---
58
58
  **補足**
59
59
 
60
- 900 は、12を引くと888なので、111で割り切れます。
60
+ 900 は、12を引くと888で、888 は 111で割り切れます。
61
61
  従って、たとえば 9001 は連続した3つの数を含んでいなくても、
62
62
  `check(9001)` は `false`を返しますが、
63
63
  ご質問の中に

4

テキスト修正

2018/06/20 18:38

投稿

jun68ykt
jun68ykt

スコア9058

answer CHANGED
@@ -46,8 +46,8 @@
46
46
  ことを使って、 引数の4桁の数 `n` を、先頭3文字の数 `Math.floor(n / 10)` と、
47
47
  末尾3文字の数 `n % 1000` とに分け、これら2つの数の
48
48
 
49
- - 両方ともに、 「12引いてから、111で割ると割り切れない」を満たすときに trueを、
49
+ - 両方ともに、 「12引いてから、111で割ると割り切れない」を満たすときに true を、
50
- - いずれかが 「12引いてから、111で割ると割り切れる」を満たすときに false を、
50
+ - いずれかが 「12引いてから、111で割ると割り切れる」を満たすときに false を、
51
51
 
52
52
  返すようにしています。
53
53
 

3

テキスト修正

2018/06/20 18:31

投稿

jun68ykt
jun68ykt

スコア9058

answer CHANGED
@@ -58,12 +58,11 @@
58
58
  **補足**
59
59
 
60
60
  900 は、12を引くと888なので、111で割り切れます。
61
- 従って、 たとえば、check(9001) は、
61
+ 従って、たとえば 9001 は連続した3つの数を含んでいなくても
62
- 連続した3つの数を含まなくても、falseを返しますが、
62
+ `check(9001)` は `false`を返しますが、
63
- 質問の中に
63
+ 質問の中に
64
64
 
65
65
  > 前提条件としては数字の中には同じ数字は含まれません。
66
66
 
67
- とあるので、 9001 のほか、 9008 や 2900 などは、
67
+ とあるので、 9001 のほか、 9008 や 2900 などは0 を2つ含むので
68
- 0 を2つ含むので、チェック対象の数としては考慮して
68
+ チェック対象の数(`check(n)` の引数 `n` )としては考慮していません。
69
- いません。

2

テキスト修正

2018/06/20 18:29

投稿

jun68ykt
jun68ykt

スコア9058

answer CHANGED
@@ -52,4 +52,18 @@
52
52
  返すようにしています。
53
53
 
54
54
   
55
- 以上、参考になれば幸いです。
55
+ 以上、参考になれば幸いです。
56
+
57
+ ---
58
+ **補足**
59
+
60
+ 900 は、12を引くと888なので、111で割り切れます。
61
+ 従って、 たとえば、check(9001) は、
62
+ 連続した3つの数を含まなくても、falseを返しますが、
63
+ 質問の中に
64
+
65
+ > 前提条件としては数字の中には同じ数字は含まれません。
66
+
67
+ とあるので、 9001 のほか、 9008 や 2900 などは、
68
+ 0 を2つ含むので、チェック対象の数字としては考慮して
69
+ いません。

1

テキスト修正

2018/06/20 18:24

投稿

jun68ykt
jun68ykt

スコア9058

answer CHANGED
@@ -43,7 +43,7 @@
43
43
 
44
44
    **3桁の数 x について、x が連続する数字3つで構成されるならば、(x - 12) は 111 で割り切れる**
45
45
 
46
- こと使って、 引数の4桁の数 `n` を、先頭3文字の数 `Math.floor(n / 10)` と、
46
+ こと使って、 引数の4桁の数 `n` を、先頭3文字の数 `Math.floor(n / 10)` と、
47
47
  末尾3文字の数 `n % 1000` とに分け、これら2つの数の
48
48
 
49
49
  - 両方ともに、 「12引いてから、111で割ると割り切れない」を満たすときに trueを、