//Hacker Rank Input
//1 10 11 9 8 7 6 5 2 8 12, 7 58 2 34 76 88 2 5 3 8 11, 9 65 3 8 98 36 22 87 66 99 0
/* Read and parse input */
$handle = fopen ('php://stdin', 'r');
$string_array = fgets($handle);
$array = explode(', ', $string_array);
array_walk($array, function (&$element) {
$element = explode(' ', $element);
});
// do your job with bidimensional $array
Via de regra, quando estamos no ambiente Hacker Rank, para obtermos um array de um enunciado de um problema em PHP temos que fazer o parsing de uma string dada as características do input pelo STDIN.
As coisas podem se complicar bastante se o parsing não for bem executado, e é claro que com a pressão da competição, é o que geralmente acontece.
O problema não é do problema em si, por que depois que passa a competição e a pressão você olha pra ele e diz… PQP!
Então fica aí a dica, basta observar com calma, e principalmente observar os delimitadores. Neste caso o primeiro delimitador não é simplesmente uma vírgula, mas sim dois caracteres vírgula e espaço combinados.
# wrong delimiter applied on first level
$array = explode(',', $string_array);
// [0]=> string(24) "1 10 11 9 8 7 6 5 2 8 12"
// [1]=> string(26) " 7 58 2 34 76 88 2 5 3 8 11"
// [2]=> string(29) " 9 65 3 8 98 36 22 87 66 99 0
Deste ponto em diante as coisas se complicam, pois apesar de termos um array unidimensional de três elementos, o próximo explode vai gerar o segundo nível com mais elementos do que o esperado por conter um espaço a mais.
# wrong quantity of elements on second level
array_walk($array, function (&$element) {
$element = explode(' ', $element);
});
// [0]=> array(11)
// [1]=> array(12)
// [2]=> array(12)
Agora não tem mais desculpas, essa é pra não esquecer mais.
Dang it!