<commit_before>using System;
using System.Collections.Generic;
using System.Linq;
using Scacchi.Extensions;

namespace Scacchi.Modello.Pezzi {
    public class Torre : IPezzo
    {
        private readonly Colore colore;
        public Torre(Colore colore)
        {
            this.colore = colore;    
        }
        public Colore Colore {
            get {
                return colore;
            }
        }
        public bool PuòMuovere(
            Colonna colonnaPartenza,
            Traversa traversaPartenza,
            Colonna colonnaArrivo,
            Traversa traversaArrivo,
           IEnumerable<ICasa> listaCase = null)
        {
           
           
           if(colonnaArrivo == colonnaPartenza && traversaPartenza != traversaArrivo
                ||
              traversaPartenza == traversaArrivo && colonnaPartenza != colonnaArrivo)
              {   
                  //Caso input senza listaCase
                  if(listaCase == null){

                  
                      return true;
                  }
                  else{ // Caso con lista in input
                        ICasa casaPartenza = listaCase.SingleOrDefault(casa => casa.Colonna == colonnaPartenza 
                            && casa.Traversa == traversaPartenza 
                            && casa.PezzoPresente == this);
                        
                        ICasa casaArrivo = listaCase.SingleOrDefault( casa => casa.Colonna==colonnaArrivo 
                            && casa.Traversa == traversaArrivo);
                        
                             // Movimento in verticale
                        if(colonnaArrivo == colonnaPartenza){
                            Traversa traversaMaggiore = traversaPartenza > traversaArrivo? 
                                                            traversaPartenza : traversaArrivo;
                            Traversa traversaMinore = traversaPartenza < traversaArrivo? 
                                                            traversaPartenza : traversaArrivo;

                            IEnumerable<ICasa> caseInMezzo = listaCase
                                                                      .Where(casa => casa.Colonna == colonnaPartenza 
                                                                            && casa.Traversa <= traversaMaggiore && casa.Traversa >= traversaMinore)
                                                                      .ConPezzi();
                            if(caseInMezzo.Count() <= 2){ // Nessun pezzo in mezzo
                                if(casaPartenza.PezzoPresente.Colore != casaArrivo.PezzoPresente.Colore || casaArrivo.PezzoPresente == null){
                                    return true; // Mangiato o casella vuota!
                                }
                                else{ // Stesso colore nella casella di arrivo
                                    return false; 
                                }

                            } else { // Pezzi in mezzo
                                return false;
                            }
                            

                        } else { // Movimento in orizzontale
                            //TODO 
                            return true;
                        }
                        
                  }
              }

            return false;



        } 
    }
}<commit_msg>Finito di implementare il punto 10 della specifica. Test Passati e Torre implementata.<commit_after>using System;
using System.Collections.Generic;
using System.Linq;
using Scacchi.Extensions;

namespace Scacchi.Modello.Pezzi {
    public class Torre : IPezzo
    {
        private readonly Colore colore;
        public Torre(Colore colore)
        {
            this.colore = colore;    
        }
        public Colore Colore {
            get {
                return colore;
            }
        }
        public bool PuòMuovere(
            Colonna colonnaPartenza,
            Traversa traversaPartenza,
            Colonna colonnaArrivo,
            Traversa traversaArrivo,
           IEnumerable<ICasa> listaCase = null)
        {
           
           
           if(colonnaArrivo == colonnaPartenza && traversaPartenza != traversaArrivo
                ||
              traversaPartenza == traversaArrivo && colonnaPartenza != colonnaArrivo)
              {   
                  //Caso input senza listaCase
                  if(listaCase == null){

                  
                      return true;
                  }
                  else{ // Caso con lista in input
                        ICasa casaPartenza = listaCase.SingleOrDefault(casa => casa.Colonna == colonnaPartenza 
                            && casa.Traversa == traversaPartenza 
                            && casa.PezzoPresente == this);
                        
                        ICasa casaArrivo = listaCase.SingleOrDefault( casa => casa.Colonna==colonnaArrivo 
                            && casa.Traversa == traversaArrivo);
                        
                        // Movimento in verticale
                        if(colonnaArrivo == colonnaPartenza){
                            Traversa traversaMaggiore = traversaPartenza > traversaArrivo? 
                                                            traversaPartenza : traversaArrivo;
                            Traversa traversaMinore = traversaPartenza < traversaArrivo? 
                                                            traversaPartenza : traversaArrivo;

                            IEnumerable<ICasa> caseInMezzo = listaCase
                                                                      .Where(casa => casa.Colonna == colonnaPartenza 
                                                                            && casa.Traversa < traversaMaggiore && casa.Traversa > traversaMinore)
                                                                      .ConPezzi();
                            if(caseInMezzo.Count() == 0){ // Nessun pezzo in mezzo
                                if(casaArrivo.PezzoPresente == null || casaPartenza.PezzoPresente.Colore != casaArrivo.PezzoPresente.Colore){
                                    return true; // Mangiato o casella vuota!
                                }
                                else{ // Stesso colore nella casella di arrivo
                                    return false; 
                                }

                            } else { // Pezzi in mezzo
                                return false;
                            }
                            

                        } else { // Movimento in orizzontale
                            Colonna colonnaMaggiore = colonnaPartenza > colonnaArrivo ? colonnaPartenza: colonnaArrivo;
                            Colonna colonnaMinore = colonnaPartenza < colonnaArrivo ? colonnaPartenza: colonnaArrivo;
                            
                            IEnumerable<ICasa> caseInMezzo = listaCase
                                                                      .Where(casa => casa.Traversa == traversaPartenza 
                                                                                && casa.Colonna < colonnaMaggiore 
                                                                                && casa.Colonna > colonnaMinore)
                                                                      .ConPezzi();
                            
                            if(caseInMezzo.Count() == 0){ // Nessun pezzo in mezzo
                                if(casaPartenza.PezzoPresente.Colore != casaArrivo.PezzoPresente.Colore || casaArrivo.PezzoPresente == null){
                                    return true; // Mangiato o casella vuota!
                                }
                                else{ // Stesso colore nella casella di arrivo
                                    return false; 
                                }

                            } else { // Pezzi in mezzo
                                return false;
                            }
                                                                            
                            
                        }
                        
                  }
              }

            return false;



        } 
    }
}
{'fraction_non_alphanumeric': 0.055900621118012424, 'fraction_numerical': 0.0005972288580984234, 'mean_word_length': 0.8166630505532654, 'pattern_counts': {'":': 0, '<': 15, '<?xml version=': 0, '>': 21, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 47, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '4587966', 'n_tokens_mistral': 1881, 'n_tokens_neox': 1759, 'n_words': 361}