Avaliação da Implementação

Critérios:

Na especificação do trabalho, eu não mencionava que vocês deveriam ter usado A*, portanto não penalizei quem decidiu por algo mais fácil.

Muitos de vocês dizem que utilizam A*, no entanto não encontravam o caminho ótimo. Não tirei ponto, mas também não tive tempo de procurar o erro do código - isto só seria possível com a ajuda de um monitor.

Com o monitor, a correção do código fonte poderia ser feita com cuidado, penalizando mau estilo de programação e "hacks", e incentivando código limpo e simples.

test1

Exemplo simples.

test2

Outro exemplo simples, que verifica interseção.

test3

Na presença de múltiplos objetos.

test4

Um labirinto formado por um único obstáculo.

test5

Não há solução: teste do loop infinito (este teste valia menos pontos).

Resultados

Grupo 1
015700 016364 951119
  Nota: 8.0  
Doc: A Comp: Sim  
Comentários:
  • Formato de saída incorreto.
  • Falhou test4 (loop infinito).
  • Falhou test5 (loop infinito).
Grupo 2
008328 009191 003269
  Nota: 7.5  
Doc: B Comp: Sim  
Comentários:
  • Falhou test3 (passou por dentro).
  • Falhou test4 (passou por dentro).
  • Falhou test5 (achou caminho inexistente).
Grupo 3
003036 002476 017396
  Nota: 7.0  
Doc: A Comp: Sim  
Comentários:
  • Ordem errada, repete o último (primeiro) elemento.
  • Falhou test2 (passou por dentro).
  • Falhou test4 (loop infinito).
  • Falhou test5 (loop infinito).
  • Grupo 4
    019134 016378 017549
      Nota: 7.0  
    Doc: B Comp: Sim  
    Comentários:
    • Formato de saída incorreto e ordem reversa.
    • Falhou test3 (inventou ponto diferente).
    • Falhou test4 (loop infinito).
    • Falhou test5 (loop infinito).
    Grupo 5
    016002 016377 017214
      Nota: 8.5  
    Doc: A Comp: Sim  
    Comentários:
  • Falhou test4 (loop infinito).
  • Falhou test5 (achou caminho inexistente).
  • Grupo 6
    016081 017447 019157
      Nota: 6.5  
    Doc: A Comp: Sim  
    Comentários:
    • Falhou test1 (passou por dentro).
    • Falhou test3 (passou por dentro).
    • Falhou test4 (passou por dentro).
    • Falhou test5 (achou caminho inexistente).
    Grupo 7
    017355 008973 008690
      Nota: 7.0  
    Doc: A Comp: Sim  
    Comentários:
    • Formato de saída errado.
    • Falhou teste 2 (passou por dentro)
    • Falhou teste 4 (passou por dentro)
    • Falhou teste 5 (achou solução inexistente)
    Grupo 8
    016015 016051 017272
      Nota: 9.0  
    Doc: A Comp: Sim  
    Comentários:
    • Falhou test5 pois encontrou um caminho inexistente.
    • Formato de saida incorreto.
    Grupo 9
    015914 015520 015988
      Nota: 3.0  
    Doc: C Comp: Não  
    Comentários:
    • Mesmo após corrigindo o erro de compilação, o programa congela tanto nas entradas fornecidas pelo grupo como tambem nos exemplos que utilizei.
    • O binário fornecido não funciona.
     > make
    In file included from ia.cpp:10:
    ia.h:27: error: `first_argument_type' has not been declared
    ia.h:28: error: `second_argument_type' has not been declared
    ia.h:29: error: ISO C++ forbids declaration of `a' with no type
    ia.h:29: error: ISO C++ forbids declaration of `b' with no type
    ia.h: In member function `bool no::menor::operator()(int, int) const':
    ia.h:30: error: request for member `soma' in `a', which is of non-class type `int'
    ia.h:30: error: request for member `soma' in `b', which is of non-class type `int'
    /usr/lib/gcc/x86_64-pc-linux-gnu/3.4.3/include/g++-v3/bits/stl_tree.h: In member function 
    `typename std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator 
    std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::insert_equal(const _Val&) 
    [with _Key = no, _Val = no, _KeyOfValue = std::_Identity,
     _Compare = no::menor, _Alloc = std::allocator]':
    /usr/lib/gcc/x86_64-pc-linux-gnu/3.4.3/include/g++-v3/bits/stl_multiset.h:306:   instantiated 
    from typename std::_Rb_tree<_Key, _Key, std::_Identity<_Key>, _Compare, _Alloc>::const_iterator 
    std::multiset<_Key, _Compare, _Alloc>::insert(const _Key&)
     [with _Key = no, _Compare = no::menor, _Alloc = std::allocator]'
    ia.cpp:309:   instantiated from here
    /usr/lib/gcc/x86_64-pc-linux-gnu/3.4.3/include/g++-v3/bits/stl_tree.h:805: error: no match for 
    call to `(no::menor) (const no&, const no&)'
    ia.h:29: note: candidates are: bool no::menor::operator()(int, int) const [with Type = no]
    /usr/lib/gcc/x86_64-pc-linux-gnu/3.4.3/include/g++-v3/bits/stl_tree.h: In member function 
    `typename std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator 
    std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::_M_insert(std::_Rb_tree_node_base*, 
    std::_Rb_tree_node_base*, const _Val&) [with _Key = no, _Val = no, _KeyOfValue = std::_Identity,
     _Compare = no::menor, _Alloc = std::allocator]':
    /usr/lib/gcc/x86_64-pc-linux-gnu/3.4.3/include/g++-v3/bits/stl_tree.h:808:   instantiated from 
    `typename std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator 
    std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::insert_equal(const _Val&) 
    [with _Key = no, _Val = no, _KeyOfValue = std::_Identity, _Compare = no::menor, 
    _Alloc = std::allocator]'
    /usr/lib/gcc/x86_64-pc-linux-gnu/3.4.3/include/g++-v3/bits/stl_multiset.h:306:   instantiated from 
    `typename std::_Rb_tree<_Key, _Key, std::_Identity<_Key>, _Compare, _Alloc>::const_iterator 
    std::multiset<_Key, _Compare, _Alloc>::insert(const _Key&) 
    [with _Key = no, _Compare = no::menor, _Alloc = std::allocator]'
    ia.cpp:309:   instantiated from here
    /usr/lib/gcc/x86_64-pc-linux-gnu/3.4.3/include/g++-v3/bits/stl_tree.h:784: error: no match for 
    call to `(no::menor) (const no&, const no&)'
    ia.h:29: note: candidates are: bool no::menor::operator()(int, int) const [with Type = no]
    make: *** [all] Error 1
    
    Correção:
    Em ia.h:
    
         bool operator( ) ( first_argument_type a,
                            second_argument_type b ) const
    
    deve ser:
         bool operator( ) ( Type a, 
                            Type b ) const
    
    Grupo 10
    015584 015924 017116
      Nota: 8.5  
    Doc: B Comp: Sim  
    Comentários:
    • test3 - cruza obstáculo.
    • test4 - loop infinito.
    • test5 encontra caminho inexistente.
    Grupo 11
    001341 001411 003049
      Nota: 8.5  
    Doc: A Comp: Sim  
    Comentários:
    • Loop infinito no test4.
    • Loop infinito no test5.
    Grupo 12
    008657 039963 017224
      Nota: 4.0  
    Doc: B Comp: Sim  
    Comentários:
    • Resulta em Segfault para todos os testes.
    Grupo 13
    003390 001552 001819
      Nota: 4.0  
    Doc: B Comp: Sim  
    Comentários:
    • Não funciona.
    Grupo 14
    005113 015830 015638
      Nota: 9.5  
    Doc: B Comp: Sim  
    Comentários:
    • Formato de saida incorreto.
    • Funcionou tudo.
    • Entrega um pouco atrasada.