Ajuda em matriz php

09/08/2023

0

PHP

Boa tarde a todos, alguem poderia me dar uma luz em PHP. A parte de bd, guardar na matriz eu consigo.

Estou desenvolvendo um sistema aqui na empresa que trabalho, onde o objetivo é dado um numero de elementos numa matriz fazer a seguinte combinação:
exemplo: tenho um material embalado em big bags numerados de 1 a 10, porem preciso unir os 3 big bags e na media dos 3 verificar se atende a um determinado cliente com uma analise pre estabelecida entre os valores maximos e minimos.
ca: 70-80
ba: 65-75
mg: 80-92

big bag produto ca ba mg
1 xxxxxx 83 65 95
2 xxxxxx 72 65 79
3 xxxxxx 70 65 90
4 xxxxxx 68 65 84
5 xxxxxx 81 65 84
6 xxxxxx 75 65 86
7 xxxxxx 82 65 87
8 xxxxxx 83 65 94
9 xxxxxx 76 65 80
10 xxxxxx 79 65 88

esses valores estarão dentro de uma matriz
preciso que o sistema percorra a matriz iniciando pelos bigbags 1,2 3 tire a media dos 3 elementos se atender essa condição grave os valores 123 como ok e continua percorrendo agora nos bags 1,2 e 4, repita o processo do primeiro e segue 1,2,5 até 8,9,10. depois disso me fale quantas opções verdadeiras que posso misturar pra atender esse cliente.

123,124,125,126,127,128,129,1210
134,135,136,137,138,139,1310
145,146,147,148,149,1410
156,157,158,159,1510
167,168,169,1610
178,179,1710
189,1810
1910

234,235,236,236,238,2310
245,246,247,248,249,2410
256,257,258,259,2510
267,268,269,2610
278,279,2710
289,2810
2910

345,346,347,348,349,3410
356,357,358,359,3510
367,368,369,3610
378,379,3710
389,3810
3910

456,457,458,459,4510
467,468,469,4610
478,479,4710
489,4810
4910

567,568,569,5610
578,579,5710
589,5810
5910

678,679,6710
689,6810
6910

789,7810
7910

8910

nesse caso com 10 bags o sistema fará 120 iterações verificando em cada uma se atende atraves da media dos 3 bags quantas e quais iterações atende o cliente.


Desde já agradeço a ajuda de todos.
Helder Leite

Helder Leite

Responder

Posts

09/08/2023

Arthur Heinrich

Isso é uma combinação (10,3) "dez, três a três". A quantidade de combinações N é dada por 10!/(3!.(10-3)!) = 120.

Para resolver na força bruta, tem que fazer 3 loops, um dentro do outro:

for i = 1 to 8 do
for j = i+1 to 9 do
for k = j+1 to 10 do
Checa se a combinação dos elementos i, j e k atente
Responder

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar