回答編集履歴

5

加筆修正

2018/05/23 11:06

投稿

退会済みユーザー
test CHANGED
@@ -55,3 +55,7 @@
55
55
  ```
56
56
 
57
57
  (roundやめてintdivにしたら、気持ち処理時間も速まった。)
58
+
59
+ intdiv()はphp7以降の関数なので、
60
+
61
+ それ以前の処理系では `floor($zaikoA / 2)` などとすること。

4

見直し

2018/05/23 11:06

投稿

退会済みユーザー
test CHANGED
@@ -8,13 +8,13 @@
8
8
 
9
9
  $zaikoB = 2000;
10
10
 
11
- if (round($zaikoA / 2, 0, PHP_ROUND_HALF_DOWN) > $zaikoB) {
11
+ if (intdiv($zaikoA, 2) > $zaikoB) {
12
12
 
13
13
  $zaikoC = $zaikoB;
14
14
 
15
15
  } else {
16
16
 
17
- $zaikoC = round($zaikoA / 2, 0, PHP_ROUND_HALF_DOWN);
17
+ $zaikoC = intdiv($zaikoA, 2);
18
18
 
19
19
  }
20
20
 

3

見直し

2018/05/23 10:18

投稿

退会済みユーザー
test CHANGED
@@ -48,8 +48,10 @@
48
48
 
49
49
  echo min(array_map(function($arr) {
50
50
 
51
- return round($arr['stock'] / $arr['requirement'], 0, PHP_ROUND_HALF_DOWN);
51
+ return intdiv($arr['stock'], $arr['requirement']);
52
52
 
53
53
  }, $goods));
54
54
 
55
55
  ```
56
+
57
+ (roundやめてintdivにしたら、気持ち処理時間も速まった。)

2

typo修正

2018/05/23 10:18

投稿

退会済みユーザー
test CHANGED
@@ -38,11 +38,11 @@
38
38
 
39
39
  $goods = [
40
40
 
41
- ['item' >= 'A', 'stock' => 1000, 'requirement' => 2 ],
41
+ ['item' => 'A', 'stock' => 1000, 'requirement' => 2 ],
42
42
 
43
- ['item' >= 'B', 'stock' => 300, 'requirement' => 1 ],
43
+ ['item' => 'B', 'stock' => 300, 'requirement' => 1 ],
44
44
 
45
- ['item' >= 'C', 'stock' => 5000, 'requirement' => 4 ],
45
+ ['item' => 'C', 'stock' => 5000, 'requirement' => 4 ],
46
46
 
47
47
  ];
48
48
 

1

加筆修正

2018/05/23 10:09

投稿

退会済みユーザー
test CHANGED
@@ -25,3 +25,31 @@
25
25
  で、とりあえず500が求まりますね。
26
26
 
27
27
  構成する他の商品をそれぞれセット売り用にまとめる個数で割って、一番少ない数字を採用します。
28
+
29
+
30
+
31
+ ってことで、少し汎用性を広げてみると:
32
+
33
+ ```php
34
+
35
+ <?php
36
+
37
+
38
+
39
+ $goods = [
40
+
41
+ ['item' >= 'A', 'stock' => 1000, 'requirement' => 2 ],
42
+
43
+ ['item' >= 'B', 'stock' => 300, 'requirement' => 1 ],
44
+
45
+ ['item' >= 'C', 'stock' => 5000, 'requirement' => 4 ],
46
+
47
+ ];
48
+
49
+ echo min(array_map(function($arr) {
50
+
51
+ return round($arr['stock'] / $arr['requirement'], 0, PHP_ROUND_HALF_DOWN);
52
+
53
+ }, $goods));
54
+
55
+ ```