[ [1,1,2,4], [1,1,2,-1], [1,2,3,4], [1,1,2,3] ]
このような2次元配列があった場合として、
1番目、2番目、3番目の値が同じだった場合、4番目だけを足し算して新しい配列を作ることは可能でしょうか?
例
上記の2次元配列の場合、
[1,1,2,4]と [1,1,2,-1]と [1,1,2,3]は1番目、2番目、3番目の値が同じなので、4番目同士を足し算して、
4 + -1 + 3 = 6なので
[[1,1,2,6][1,2,3,4]]と計算することは可能でしょうか?
============追記===========================
自分の場合だと、以下のようにして1番目と2番目と3番目が同じ場合に4番目を計算すると考えましたが、
これだと、隣合わせの配列同士でしか比較できなくて離れている配列同士も計算できるようにしたいと考えています。
//n行与えられる 例として4行 $n = trim(fgets(STDIN)); $array = array(); //n行分入力値を配列に入れる。 //例 // 1,1,2,4 // 1,1,2,-1 // 1,2,3,4 // 1,1,2,3 for($i=0; $i<$n; $i++){ $array[] = explode(" ",trim(fgets(STDIN))); } $sum = 0; for($i=0; $i<$n-1; $i++){ if($array[$i][0] == $array[$i+1][0] && $array[$i][1] == $array[$i+1][1] && $array[$i][2] == $array[$i+1][2]){ $sum += ($array[$i][3] + $array[$i+1][3]); } }
上の例だと足し算の合計値$sumが3になってしまうので$sumを6にしたいです。
============追記=================
1,2,3番目が同じ組み合わせが複数あるときはどうなるのか。(例:1112,1113,2221,2222
この場合は同じ組み合わせ同士で計算させたいと考えています。
[1,1,1,2],[1,1,1,3],[2,2,2,1],[2,2,2,2]の場合
[1,1,1,5],[2,2,2,3]
と計算するようにしたいです。
自分の現状のコードだと同じ組み合わせが複数あった場合,sumの値が変わってしまいますね。。
・考えていること。
配列の1番目2番目3番目の値が小さい順に2次元配列を並びす変える。そうすると隣同士の計算でもできるのではないか
回答2件
あなたの回答
tips
プレビュー