Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

André Severino

Exercícios sobre Arrays

Recommended Posts

E aí João!

 

O que você acha de aumentar o nível de dificuldade?

 

O pessoal está resolvendo muito rápido :lol:

 

A minha resposta ficou praticamente idêntica a do Matias Rezende <_<

Compartilhar este post


Link para o post
Compartilhar em outros sites

O que você acha de aumentar o nível de dificuldade?

 

O pessoal está resolvendo muito rápido

 

O pessoal está "afiado" !!!

 

Se ninguém se incomodar em exercícios mais difíceis, posso aumentar sem problemas.

 

A minha resposta ficou praticamente idêntica a do Matias Rezende

 

Então está correta também.

 

Estou escrevendo esses exercícios pensando em casos específicos onde uma determinada função pode ser utilizada. Funções que muitas vezes, o pessoal esquece que existem, mas que podem ser a diferença entre muito trabalho, ou apenas o uso da função correta.

 

Como é o caso das funções array_filter() e da família filter_var() que são esquecidas, mas que se bem utilizadas podem ajudar bastante.

 

Enfim, se ninguém se incomodar, eu escrevo os exercícios com problemas mais complexos.

 

;)

Compartilhar este post


Link para o post
Compartilhar em outros sites

João, trabalhe mais a parte lógica e deixe a galera ter liberdade pra usar a tecnologia da maneira que achar mais conveniente.

 

Depois podemos discutir a otimização, no escopo da própria linguagem.

 

É a minha sugestão!

 

Tem problemas clássicos, como o da Torre de Hanoi, que podem render grandes discussões...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Minha contribuição:

 

Muito grande, Bruno.

 

Que tal dar uma olhada em array_filter()

Sei disso mas, antes do comment, você percebeu que a função vai um pouco além do proposto pelo exercício né?

 

Ela não apenas computa a probabilidade de sucesso, como também a possibilidade fracasso da campanha.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ela não apenas computa a probabilidade de sucesso, como também a possibilidade fracasso da campanha.

 

Mas não precisa de nada disto para calcular a probabilidade de falha, certo? Se uma coisa não dá certo, ela dá errado. Então, se X é o percentual de sucesso, o percentual de falha é de 100 - X. Adaptando a minha solução:

 

 

<?php
$campanhas = array(
       'radio' => array(
               true  , false , false , true  , false,
               false , false , false , true  , false,
               false , false , false , false , false,
               false , false , false , false , false,
               false , false , false , false , false,
               false , false , false , false , false,
               false , false , false , false , false,
               true  , false , false , false , false,
               false , false , false , false , false,
               false , false , false , false , false,
               false , false , false , false , false,
               false , false , false , false , false,
               false , false , false , false , false,
               false , false , false , false , false,
               false , false , true  , false , false,
               false , false , false , false , false
       ),
       'tv' => array(
               false , false , false , false , false,
               true  , true  , false , true  , false,
               false , false , false , false , false,
               false , false , false , false , false,
               true  , false , false , false , false,
               false , false , false , false , true,
               false , false , false , false , false,
               false , false , false , false , false,
               false , false , false , false , false,
               false , false , false , false , true,
               true  , false , false , false , false,
               false , false , false , false , false,
               false , false , false , false , false,
               false , false , false , false , false,
               false , false , false , false , false,
               true  , false , false , false , false,
               false , false , false , false , false,
               false , false , false , false , false,
               false , false , true  , false , false,
               false , false , false , false , false
       ),
       'radio+tv' => array(
               false , false , false , false , false,
               false , false , false , true  , false,
               false , false , false , false , false,
               false , false , false , false , false,
               false , true  , false , false , true,
               false , false , false , true  , false,
               false , false , false , false , false,
               false , false , false , true  , false,
               false , false , false , false , false,
               false , false , false , false , false,
               false , false , false , false , false,
               false , false , true  , false , false,
               false , true  , false , false , false,
               true  , false , false , false , false,
               false , true  , false , false , false,
               false , false , true  , false , false,
               false , false , false , false , false,
               false , false , false , false , false,
               false , false , false , false , false,
               false , false , false , true  , false,
               false , false , false , false , false,
               false , false , false , false , false,
               false , false , false , true  , false,
               false , false , false , false , false,
       )
);

array_walk ( $campanhas, function ($campanha, $nome) {
$sucesso = ((100 * count ( array_filter ( $campanha ) )) / count ( $campanha ));
$falha = 100 - $sucesso;
echo 'O percentual de sucesso da campanha ', $nome, ' é de ', $sucesso, ' e o percentual de falha é de ', $falha, '<br/>';
} );

 

 

Ainda utilizando array_filter.

 

Carlos Eduardo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ah! Isso é verdade.

 

Mas dá um desconto eu tinha acabado de acordar :P

 

Apesar de o horário da postagem estar 09:44, eu postei era 8:30, e fiz o código lá pelas 15 pras oito, oito horas... (não, não demorei tudo isso não :P )

Compartilhar este post


Link para o post
Compartilhar em outros sites

Procurei mas não achei(talvez exista) uma função nativa do php que faça o seguinte:

 

Adicionar um valor em uma determinada posição do array. Só podemos adicionar um valor em alguma posição que já estava ocupada.

 

80aea35278.png

 

 

A princípio apenas para indices numéricos.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Adicionar um valor em uma determinada posição do array. Só podemos adicionar um valor em alguma posição que já estava ocupada.

A princípio apenas para indices numéricos.

 

Para fazer isso, você pode utilizar o conjunto array_merge() com array_slice():

 

<?php
$items = array( 0 , 1 , 2 , 4 , 5 , 6 , 7 , 8 , 9 );

$offset = 3;

print_r( array_merge( array_slice( $items , 0 , $offset ) , array( 3 ) , array_slice( $items , $offset ) ) );

 

A saída:

 

Array
(
[0] => 0
[1] => 1
[2] => 2
[3] => 3
[4] => 4
[5] => 5
[6] => 6
[7] => 7
[8] => 8
[9] => 9
)

 

Ou então, uma solução mais direta (preferível) com array_splice():

 

<?php
$items = array( 0 , 1 , 2 , 4 , 5 , 6 , 7 , 8 , 9 );

$offset = 3;

array_splice( $items , $offset , 1 , array( 3 , $items[ $offset ] ) );

print_r( $items );

 

Saída:

 

Array
(
[0] => 0
[1] => 1
[2] => 2
[3] => 3
[4] => 4
[5] => 5
[6] => 6
[7] => 7
[8] => 8
[9] => 9
)

 

Vamos tentar fazer diferente,

 

Em vez de eu criar problemas para postar aqui, vamos tentar resolver problemas que o pessoal já passou. Vocês postam situações que já passaram e tiveram alguma dificuldade, ou que não sabem como resolver ou, talvez, que resolveram de alguma forma e acham que pode ter uma forma diferente.

 

Acho que assim adequamos o tópico à realidade,

 

Que tal ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

tive um problema com arrays, por causa de um trabalho da faculdade..

 

mas acredito que não vai 'dar' para resolvermos aqui.

 

-> considerar uma imagem como uma matriz de pixels.

-> calcular 3 tipos de suavização apartir dos pixels vizinhos desta imagem, e aplicar os filtros Gausian, Blur (e mais um que esqueci).

 

 

a grande dificuldade aqui, é fazer o calculo corretamente, e percorrer os pixels certos.

Se a galera tiver disposta (nem sei se da para alterar o rgb de 1 pixel de imagem com php), eu posto o problema completo formalmente. (resolvi em Java para a facul)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Acredito que dê sim William, através de imagesetpixel(). O maior problema calcular a suavização para aplicar o efeito, já que o mesmo nada mais faz do que alterar a cor de um pixel para algo que dê a sensação visual do proposto por ele.

 

Quanto a idéia proposta pelo João, seria uma boa, já que, pelo menos eu, não vejo como aprender a resolver a Torre de Hanoi com arrays, iria ser útil no dia a dia.

 

Quem sabe aquele tópico que eu tive um mega problema não seja ressucitado, já que parou no meio :assobiando:

Compartilhar este post


Link para o post
Compartilhar em outros sites

Nossa, confesso que até agora to 'boiano' no primeiro exercicio, imagine essa torre de hanoi :o

A dificuldade foi em entender o exercício proposto ou na solução encontrada pelo Periscuelo?

 

Carlos Eduardo

Compartilhar este post


Link para o post
Compartilhar em outros sites

tive um problema com arrays, por causa de um trabalho da faculdade..mas acredito que não vai 'dar' para resolvermos aqui.-> considerar uma imagem como uma matriz de pixels.-> calcular 3 tipos de suavização apartir dos pixels vizinhos desta imagem, e aplicar os filtros Gausian, Blur (e mais um que esqueci).a grande dificuldade aqui, é fazer o calculo corretamente, e percorrer os pixels certos.Se a galera tiver disposta (nem sei se da para alterar o rgb de 1 pixel de imagem com php), eu posto o problema completo formalmente. (resolvi em Java para a facul)

 

 

Posta o exercício, se não der em PHP vou tentar fazer em JAVA mesmo :D

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Matias, então o que aconteceu foi o seguinte, eu vi um exercicio na net que aparentemente pareceu mt fácil, mas qnd fui fazer me enrolei todo e até agora não consegui resolver ele, foi neste momento que descobri que preciso estudar mais arrays.

 

O exercicio era para criar um relógio digital que tinha os valores de 1 até 24 com base em 1 valor dinamico.

 

 

Por exemplo:

 

Eu tenho 2 horas distintas - 20h e 6h, então eu teria que criar um array de 20 até 24 e depois continuar nesse array de 1 até as 6 horas. sem aumentar.

 

A resolução do exercicio teria que se assim:

// variaveis usadas
$hora1 = 20;
$hora2 = 6;

// saida: array(20, 21, 22, 23, 24, 1, 2, 3, 4, 5, 6);

 

Bom eu fiz de uma forma, usando for, mas por exemplo: se o valor de entrada for maior que o de saida ferra tudo

 

Abaixo a forma que tentei e não consegui:

$hora1 = 1;
$hora2 = 9;

for($i = $entrada1; $i <= $saida1; $i++) {
  $str[] = $i;
}

// saida: array(1,2,3,4,5,6,7,8,9);

 

Alguem sabe se tem como criar uma forma de limitar até 24 para depois resetar? Pensei em usar um if para verificar se o valor passou de 24, caso passase usaria um comando para add a partir do número 1 e o array-push para add no final. Mas não sei se vai dar certo.

 

Gostaria da ajuda de vocês. :thumbsup:

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não entendi muito bem o exercício amigo André.

Pela lógica a hora começa em 0 e vai até 23.

não em 1 indo até 24.

 

Mas independente disto ....

 

A hora tem que começar com o valor de $hora1 e terminar

com o valor de $hora 2 seguindo a ordem de um relógio é isso?

 

E se hora1 for 10 e hora2 for 12, ele tem que mostrar 3 valores

(10,11,12)

ou tem que mostrar a hora das 10 da manha ate as 12 do outro dia

(10,11,12,13,14,15,16,17,18,19,20,21,22,23,0,1,2,3,4,5,6,7,8,9,10,11,12) ??

 

Para mim a segunta opção (horas até o dia seguinte) me pareceu ser mais coerente

e se for esta a intenção do exercício a solução esta abaixo:

 

$array = array(0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23);
$hora1 = 20;
$hora2 = 6;
$r = ($array[23]-$hora2);

$arr1 = array_slice($array, $hora1);
$arr2 = array_slice($array, 0, -$r);
$res = array_merge($arr1,$arr2);

print_r($res);

 

Abraços.

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Kratos

Então eu não lembro onde eu vi, foi de relance, mas explicando navamente com base no que o nosso amigo Periscuelo fez, bom é examente a opção número 1.

 

Se eu tiver os valores $hora1 = 10 e $hora2 = 12, ele tem que montar o array, assim ele teria um limite apenas para percorrer.

 

Seria +- igual os exemplos abaixo, no momento não estou em casa para testar o exemplo do Periscuelo, mas de qualquer forma depois eu vejo se consigo implementar, ou se você's conseguir fazer, também é uma boa.

Mas percebi que ele criou um array com as horas fixas para dps ir comparando :thumbsup:

$hora1 = 10;
$hora2 = 12;
// Saida: array(10, 11, 12);

$hora1 = 20;
$hora2 = 1;
// Saida: array(20, 21, 22, 23, 0, 1);

$hora1 = 22;
$hora2 = 14;
// Saida: array(22, 23, 24, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14);

Compartilhar este post


Link para o post
Compartilhar em outros sites

Nada que um if não resolva amigo André ;)

Abaixo vai o código para o caso da primeira opção:

 

$array = array(0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23);
$hora1 = 20;
$hora2 = 6;

if ($hora2<$hora1) {
   $r = ($array[23]-$hora2);
   $arr1 = array_slice($array, $hora1);
   $arr2 = array_slice($array, 0, -$r);
   $res = array_merge($arr1,$arr2);
} else {
   $r = (($hora2-$hora1)+1);
   $res = array_slice($array, $hora1, $r);
}

print_r($res);

 

Abraços.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu que agradeço, vou estudar um pouco sobre esse array_slice e array_merge, e esse final de semana, vou tentar criar uma solução para todos os exercicios do João que ele postou aqui.

 

Nada como as necessidades do dia-a-dia para fazer com que aprendemos coisas novas e muito uteis. :thumbsup:

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

Posta o exercício, se não der em PHP vou tentar fazer em JAVA mesmo :D

http://forum.imasters.com.br/topic/427101-desafio-suavizacao-de-imagem/

 

assim que der, eu vou fazer a versão php disso..

por enqnto vai lendo e pensando sobre o filtro 1.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.