Resoluções da Etapa 5

Desafio 1

Enunciado
Resolução em Java
import java.util.Scanner;

class DesafioMedio
{
    static int[] counter(String[] eventos)
    {
        int[] aux = {0, 0, 0};

        for(int i = 0; i < eventos.length; i++)
            aux[Integer.parseInt(eventos[i])]++;

        return aux;
    }

    static int[] probabilizador(String str)
    {
        int[] probs = {0, 0, 0, 0};
        int[] evento = counter(str.split(" "));
        int total = evento[0] + evento[1] + evento[2];

        double i = (double)(evento[1] + evento[2]) / total;
        double iv = (double)(evento[2]) / total;
        double f = (double)(evento[0]) / total;
        double sv = (double)(evento[2]) / (evento[1] + evento[2]);

        probs[0] = (int)Math.floor(i*100); 
        probs[1] = (int)Math.floor(iv*100);
        probs[2] = (int)Math.floor(f*100);
        probs[3] = (int)Math.floor(sv*100);

        return probs;
    }

    static String respostador(int[] aux)
    {
        String temp = "";

        temp = (aux[0] + "% " + aux[1] + "% " + aux[2] + "% " + aux[3] + "%");
        if(aux[1] < 60)
            temp += "\nNao vamo nao mano";
        else
            temp += "\nEh nois em Andromeda";

        return temp;
    }

    public static void main(String[] args) 
    {
        Scanner sc = new Scanner(System.in);
        
        int input_size = Integer.parseInt(sc.nextLine());
        String[] input = new String[input_size];

        for(int i = 0; i < input_size; i++)
            input[i] = sc.nextLine();

        for(int i = 0; i < input_size; i++)
        {
            System.out.println(probabilizador(input[i]));
        }
        System.out.println();
    }
}
Resolução em C++

Desafio 2

Enunciado
Resolução em Java
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);

        int n = scan.nextInt();
        scan.nextLine(); //limpando a quebra de linha pois em algumas versoes do java o nextInt nao pega o \n, assim, apos o nextInt ele persiste na string de entrada
        
        String resposta = "";

        for(int m = 0; m < n; m++){

            int tamanho = scan.nextInt();
            scan.nextLine(); //limpando quebra de linha da entrada
            
            int[][] campo = new int[tamanho][tamanho];
            
            //preenchendo campo
            for(int i = 0; i < campo.length; i++) {
                for(int j = 0; j < campo[0].length; j++) {
                    campo[i][j] = scan.nextInt();
                }
            }

            //verificando todas as possibilidades
            if (combinacoes(campo)){
                resposta += "Dizimados!\n";
            }
            else{
                resposta += "Recuar!\n";
            }
        }

        System.out.print(resposta);
    }

    public static int[][] copy(int[][] m) {
        int[][] copy = new int[m.length][m[0].length];
        for(int i = 0; i < m.length; i++) {
            for(int j = 0; j < m[<
/span>0].length; j++) {
                copy[i][j] = m[i][j];
            }
        }
        return copy;
    }

    public static int bomba(int i, int j, int[][] campo) {
        int dano = 0;
        if((j-1) >= 0 && campo[i][j-1] != 0){ //esquerda
            campo[i][j-1]--;
            dano++;
        } 
        if((j+1) < campo.length && campo[i][j+1] != 0) { //direita
            campo[i][j+1]--;
            dano++;
        }
        if((i+1) < campo.length && campo[i+1][j] != 0) { //cima
            campo[i+1][j]--;
            dano++;
        }
        if((i-1) >= 0 && campo[i-1][j] != 0) { //baixo
            campo[i-1][j]--;
            dano++;
        }
        if(campo[i][j] != 0) { //centro
            campo[i][j]--;
            dano++;
        }
        return dano;
    }

    public static boolean combinacoes(int[][] campo) {

        //contando a quantidade de dano que deve ser causada
        int danoTotal = 0;
        for(int i = 0; i <
campo.length; i++) {
            for(int j = 0; j < campo[0].length; j++) {
                danoTotal += campo[i][j];
            }
        }

        //verificando toda combinacao possivel de jogar as bombas
        for(int i = 0; i < campo.length; i++) //linha da 1 bomba
            for(int j = 0; j < campo[0].length; j++) //coluna da 1 bomba
                for(int k = 0; k < campo.length; k++) //linha da 2 bomba
                    for(int l = 0; l < campo[0].length; l++) //coluna da 2 bomba
                        for(int p = 0; p < campo.leng
th; p++) //linha da 3 bomba
                            for(int q = 0; q < campo[0].length; q++) { //coluna da 3 bomba
                                int[][] aux = copy(campo); //copia a matriz original pois vamos alterar
                                if(bomba(i,j,aux) + bomba(k,l,aux) + bomba(p,q,aux) == danoTotal) //se jogar as 3 bombas nesses locais causa um dano igual ao total de dano que eu deveria causar nas naves eu dizimei
                                    return true;
                            }
        return false;
    }
}
Resolução em C++

Desafio 3

Enunciado
Resolução em Java
import java.util.*;

public class Codinome {
  public static void main(String[] args) {
    
    Scanner sc = new Scanner(System.in);
    
    String entrada = "";
    
    while(true) {
      
      entrada = sc.nextLine();
      
      String[] nomes = entrada.split(" ");
      
      if(nomes.length != 2) break;
      
      char[] nome = nomes[0].toCharArray();
      char[] sobr = nomes[1].toCharArray();
      
      int menorNome = 0;
      
      if(nome.length <= sobr.length) {
        menorNome = nome.length;
      } else {
        menorNome = sobr.length;
      }
      
      for(int i = 0; i < menorNome; i++) {
        if(nome[i] != sobr[i]) {
          char aux = nome[i];
          nome[i] = sobr[i];
          sobr[i] = aux;
          break;
        }
      }
      
      String novoNome = new String(nome);
      String novoSobr = new String(sobr);
      
      String resp = novoNome + " " + novoSobr;
      
      if(resp.equals(entrada)) System.out.println("Eita, vamos ter que te chamar de Roberto");
      else System.out.println(resp);
      
    }
    
  }
}
Resolução em C++

Desafio 4

Enunciado
Resolução em Java
import java.util.*;

class BuracoNegro {

 public static void main(String[] args){
  Scanner sc = new Scanner(System.in);

  String linha = sc.nextLine();

  while(!linha.equals("0")){
   String vetor[] = linha.split(" ");
   int soma = 0;
   for(int i = 0; i < vetor.length; i += 2){
    soma += Integer.parseInt(vetor[i]);
   }
   System.out.println(soma);
   linha = sc.nextLine();
  }
 }
}
Resolução em C++

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *