Desafio 1
Enunciado
Resolução em Java
import java.util.Scanner; public class DesafioKuiper { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); String I,F; for(int i = 0; i < n; i++){ I = sc.next(); F = sc.next(); // verifica se tem asteroide em uma ou nas duas coordenadas (OR) if(coordenadasInvalidas(I) || coordenadasInvalidas(F)){ System.out.println("Coordenadas Invalidas."); } // verifica se apenas uma das duas coordenadas é um dos quadrados fechados por asteroides (XOR) else if(quadradoFechado(I) ^ quadradoFechado(F)){ System.out.println("Caminho nao eh possivel."); } else { System.out.println("Caminho eh possivel."); } } } private static boolean coordenadasInvalidas(String coord){ if(coord.equals("0,0") || coord.equals("1,1") || coord.equals("0,4") || coord.equals("1,3") || coord.equals("2,3") || coord.equals("3,1") || coord.equals("3,4")) { return true; } return false; } private static boolean quadradoFechado(String coord){ if(coord.equals("1,4") || coord.equals("2,4")) return true; return false; } }
Resolução em C++
#include "javalib.hpp" #include <iostream> bool coordenadasInvalidas(string coord); bool caminhoFechado(string coord); bool equals(string i, string o); int main () { int n; string I,F; cin >> n; for(int i = 0; i < n; i++){ cin >> I; cin >> F; // verifica se tem asteroide em uma ou nas duas coordenadas (OR) if(coordenadasInvalidas(I) || coordenadasInvalidas(F)){ cout << "Coordenadas Invalidas.\n"; } // verifica se apenas uma das duas coordenadas é um dos quadrados fechados por asteroides (XOR) else if(quadradoFechado(I) ^ quadradoFechado(F)){ cout << "Caminho nao eh possivel.\n"; } else { cout << "Caminho eh possivel.\n"; } } } bool coordenadasInvalidas(string coord){ if(equals(coord, "0,0") || equals(coord, "1,1") || equals(coord, "0,4") || equals(coord, "1,3") || equals(coord, "2,3") || equals(coord, "3,1") || equals(coord, "3,4")) { return true; } return false; } bool quadradoFechado(string coord){ if(equals(coord, "1,4") || equals(coord, "2,4")) return true; return false; } bool equals (string i, string o){ if (i.compare(o) == 0) return true; return false; }
Desafio 2
Enunciado
Resolução em Java
import java.util.Scanner; public class DesafioComunicacao { public static void main(String[] args) { Scanner sc = new Scanner(System.in); //declaração de variaveis String binario, resposta; String[] numerosBinarios; int decimal, anterior, letraNumerica; char letra; //rodar enquanto houver uma linha a mais, sim pode ser um while(true) while(sc.hasNextLine()){ resposta = ""; //toda nova linha, o anterior reseta anterior = 0; numerosBinarios = sc.nextLine().split(" "); if(numerosBinarios[0].equals("-1")) break; int j = 0; //rodar todos os números binarios armazenados no array while(j < numerosBinarios.length){ binario = numerosBinarios[j]; decimal = binToInt(binario); letraNumerica = decimal; letraNumerica -= anterior; if(letraNumerica < 0) letraNumerica += 26; letra = traduzirParaLetra(letraNumerica); resposta += letra; // atualizar o anterior com o simbolo atual anterior = decimal; j++; } System.out.println(resposta); } } static char traduzirParaLetra(int i){ char[] alfabeto = "abcdefghijklmnopqrstuvwxyz".toCharArray(); return alfabeto[i]; } static int binToInt(String text){ char[] textArray = text.toCharArray(); int i = 1, result = 0; for(int n = text.length() - 1; n >= 0; n--){ if(textArray[n] == '1'){ result += i; } i *= 2; } return result; } }
Resolução em C++
#include "javalib.hpp" #include <iostream> int binToInt(std::string text){ int i = 1, result = 0; for(int n = text.length() - 1; n >= 0; n--){ if(text[n] == '1'){ result += i; } i *= 2; } return result; } char traduzirParaLetra(int i){ std::string alfabeto = "abcdefghijklmnopqrstuvwxyz"; return alfabeto[i]; } int main(){ while(true){ //toda nova linha, o anterior reseta int anterior = 0; std::string res = ""; std::string line = jl::nextLine(); if(line == "-1 -1") break; std::vector<std::string> bins = jl::split(line, " "); for(int n = 0; n < bins.size(); n++){ std::string bin = bins[n]; int decimal = binToInt(bin); int letraNumerica = decimal; letraNumerica -= anterior; if(letraNumerica < 0) letraNumerica += 26; res += traduzirParaLetra(letraNumerica); anterior = decimal; } std::cout << res << std::endl; } std::cout << std::endl; }
Desafio 3
Enunciado
Resolução em Java
import java.util.Scanner; public class Distancias { public static void main (String[] args){ //Scanner Scanner sc = new Scanner(System.in); //Pontos de coordenadas float[] p1 = new float[3]; float[] p2 = new float[3]; //Vetores de String auxiliares String[] aux1; String[] aux2; //Comprimento da diagonal no plano e delta Z float diag; float deltaZ; //Distância resposta float dist; //Contador de casos de teste int n = sc.nextInt(); sc.nextLine(); for (int i = 0; i < n; i++){ //Leitura da entrada aux1 = sc.nextLine().split(" "); aux2 = aux1[0].split(","); p1[0] = Float.parseFloat(aux2[0]); p1[1] = Float.parseFloat(aux2[1]); p1[2] = Float.parseFloat(aux2[2]); aux2 = aux1[1].split(","); p2[0] = Float.parseFloat(aux2[0]); p2[1] = Float.parseFloat(aux2[1]); p2[2] = Float.parseFloat(aux2[2]); //Cálculo da diagonal no plano diag = DiagonalNoPlano(p1, p2); //Cálculo da diagonal no espaço deltaZ = p2[2] - p1[2]; dist = DiagonalNoEspaco(diag, deltaZ); //Saída System.out.println("Distancia: " + (int)Math.ceil(dist)); } } /* Função para calcular o tamanho da diagonal no plano entre dois pontos tridimensionais */ public static float DiagonalNoPlano(float[] p1, float[] p2){ float resp; float x = p2[0] - p1[0]; float y = p2[1] - p1[1]; resp = (float)Math.sqrt(Math.pow(x, 2) + Math.pow(y, 2)); return resp; } /* Função para calcular o tamanho da diagonal no espaço usando a diagonal no plano e a variação no eixo Z */ public static float DiagonalNoEspaco(float diag, float deltaZ){ return (float)Math.sqrt(Math.pow(diag, 2) + Math.pow(deltaZ, 2)); } }
Resolução em C++
#include "javalib.hpp" #include <math.h> float diag2D(float x1,float x2,float y1,float y2){ float resp; float x = x2-x1; float y = y2-y1; resp = (float)sqrt(pow(x,2)+pow(y,2)); return resp; } float diag3D(float diag, float z1, float z2){ float resp; float z = z2-z1; resp = (float)sqrt(pow(z,2)+pow(diag,2)); return resp; } int main() { //Quantidade de entradas int n; scanf("%d\n",&n); //Coordenadas float x1,y1,z1,x2,y2,z2; //Diagonais float diagPlano; float diagEspaco; //Resposta int resp; //Loop de execução for (int i = 0; i < n; i++){ //Leitura da entrada scanf("%f,%f,%f %f,%f,%f",&x1,&y1,&z1,&x2,&y2,&z2); //Obtenção da diagonal no plano diagPlano = diag2D(x1,x2,y1,y2); //Obtenção da diagonal no espaço diagEspaco = diag3D(diagPlano,z1,z2); //Saída resp = ceil(diagEspaco); printf("%d\n",resp); } return 0; }
Desafio 4
Enunciado
Resolução em Java
import java.util.Scanner; public class Unsort { public static void main(String[] args){ Scanner sc = new Scanner(System.in); String[] aux; int[] vetor; boolean unsort; while(true){ aux = sc.nextLine().split(" "); vetor = new int[aux.length]; if (vetor.length == 1 && vetor[0] == 0) break; for(int j = 0; j < vetor.length; j++) vetor[j] = Integer.parseInt(aux[j]); unsort = true; for(int j = 1; j < vetor.length -1; j++){ if(vetor[j-1] > vetor[j] && vetor [j] > vetor[j+1]){ unsort = false; } else if(vetor[j-1] == vetor[j] && vetor [j] == vetor[j+1]){ unsort = false; } else if(vetor[j-1] == vetor[j] && vetor [j] < vetor[j+1]){ unsort = false; } else if(vetor[j-1] < vetor[j] && vetor [j] == vetor[j+1]){ unsort = false; } else if(vetor[j-1] < vetor[j] && vetor [j] < vetor[j+1]){ unsort = false; } } if(unsort) System.out.println("O vetor nao esta ordenado! Fracasso: Sucesso!"); else System.out.println("O vetor esta ordenado! Sucesso: Fracasso!"); } } }
import java.util.Scanner; public class Unsort { public static void main(String[] args){ Scanner sc = new Scanner(System.in); String[] aux; int[] vetor; boolean unsort; while(true){ aux = sc.nextLine().split(" "); vetor = new int[aux.length]; if (vetor.length == 1 && vetor[0] == 0) break; for(int j = 0; j < vetor.length; j++) vetor[j] = Integer.parseInt(aux[j]); unsort = true; for(int j = 1; j < vetor.length -1; j++){ if(vetor[j-1] > vetor[j] && vetor [j] > vetor[j+1]){ unsort = false; } else if(vetor[j-1] == vetor[j] && vetor [j] == vetor[j+1]){ unsort = false; } else if(vetor[j-1] == vetor[j] && vetor [j] < vetor[j+1]){ unsort = false; } else if(vetor[j-1] < vetor[j] && vetor [j] == vetor[j+1]){ unsort = false; } else if(vetor[j-1] < vetor[j] && vetor [j] < vetor[j+1]){ unsort = false; } } if(unsort) System.out.println("O vetor nao esta ordenado! Fracasso: Sucesso!"); else System.out.println("O vetor esta ordenado! Sucesso: Fracasso!"); } } }
Resolução em C++
#include "javalib.hpp" int main() { while(true) { std::string line = nextLine(); if(line == "0") break; std::vector<std::string> numbers = split(line, " "); int nlast, ncurr = stoi(numbers[0]), nnext = stoi(numbers[1]); for(int i = 2; i < numbers.size(); i++) { nlast = ncurr; ncurr = nnext; nnext = stoi(numbers[i]); if( (nlast < ncurr && ncurr < nnext) || (nlast < ncurr && ncurr == nnext) || (nlast == ncurr && ncurr < nnext) || (nlast == ncurr && ncurr == nnext) || (nlast > ncurr && ncurr > nnext) ) { std::cout << "O vetor esta ordenado! Sucesso: Fracasso!" << std::endl; break; } } std::cout << "O vetor nao esta ordenado! Fracasso: Sucesso!" << std::endl; } return 0; }