Proposta: Desafios!

Olá,

sou estudante de Java (por conta própria) e estava pensando aqui que podemos propor desafios aqui no fórum para os outros participantes. Entrei em contato com o [color=blue]ViniGodoy[/color] e ele disse que não tem problema, exceto quando é aquele pessoal que vem aqui esperando que outros façam a lição de casa deles.

Então penso assim, podemos nos focar nos algoritmos. Não fazer desafios (nada impede também) que o indivíduo tenha que conhecer bibliotecas de ponta a ponta. E sim, usar apenas métodos e classes prontas quando for para exibição de informações. Como JOptionPane, System.out.println, JTextArea, etc. Até porque estamos na seção Java Básico. Então os iniciantes (como eu) tem que poder participar dos desafios…

Pensei inicialmente assim: alguém propõe um desafio e qualquer interessado vem e posta o código para resolução do problema. O prazo é de 24 horas. Depois de um dia, o proponente volta e avalia quem apresentou primeiro a resposta certa. Aquele que acertou primeiro, cria o próximo desafio. Se o proponente não voltar ao fórum em 24h, o pessoal que participou ou até mesmo algum moderador, decide quem acertou primeiro e vai lançar o próximo desafio. Simples assim.

Alguém tem alguma outra ideia? Podemos inclusive criar algum sistema de ranking, avaliando quem escreveu o código mais reutilizável (bônus) e assim por diante.

Quem mais se interessa? Tem alguma ideia? Opine.

:slight_smile:

1 curtida

Gostei!

*assim seria legal algo que ajudasse os iniciantes naquelas provinhas chatas de algoritmo quando se procura estagio.

Desafio:

1- criar uma classe Carro que contem cor, placa, e velocidade maxima
2-criar uma classe estacionamento que possua varios carros
3-criar 7 carros
4-coloca-los no estacionamento
5-imprimir uma lista com todos os carros estacionados contendo(cor, placa e velocidade maxima)

2 curtidas

Não estou querendo jogar um balde de água fria na sua proposta Alberto, mas esses tipos de desafios que você está propondo podem ser encontrados aos montes no link http://uva.onlinejudge.org/

Além de poder consultar os problemas, vc pode tbm enviar sua solução para ser verificada.

[]´s

Sim David, eu sei. Tem outros sites, como estes aqui:

http://www.coderanch.com/forums/f-71/Programming

http://codingbat.com/java

https://br.spoj.pl/problems/seletivas/all/lang=JAVA

http://projecteuler.net/

Ou para quem for bom de verdade e quiser ganhar alguma coisa programando, pode ir no [color=red]TopCoder[/color]:

Mas a ideia aqui é muito simples; duas, em realidade:

[b][color=darkblue]1) Aprendizado

  1. Interação[/color][/b]

O GUJ é uma comunidade enorme de programadores em Java de todos os níveis. Os únicos dois motivos de eu ter entrado aqui é porque sei que tem muita gente melhor do que eu, disposta a trocar informação, e também porque eu estou disposto a ajudar quem sabe menos do que eu. Uma comunidade que fala a mesma língua inclusive, nem todos são tão bons em inglês ainda para se aventurar em comunidades internacionais.

E depois, se alguém achar um desafio muito fácil ou muito básico, basta não participar. Participa quem quer, naquilo que quer. E vamos aprendendo juntos. Bastam alguns interessados e já podemos começar a nos divertir… Existem até livros de puzzles de programação e outros que podemos usar ou então criar os nossos próprios desafios… :wink:

Que tal esse mega desafio?

Crie um programa que imprima o próprio código fonte que foi usado para gera-lo.
Ele deve fazer isso sem usar o arquivo .java ou qualquer outro arquivo externo.

vc ja tem solução para isto? existe isto? se o programa for pequeno até quem sabe, mas é para qualquer um ?

[quote=ViniGodoy]Que tal esse mega desafio?

Crie um programa que imprima o próprio código fonte que foi usado para gera-lo.
Ele deve fazer isso sem usar o arquivo .java ou qualquer outro arquivo externo.[/quote]

Interessante o desafio Vini, mas não acha muito pra quem tá começando?

E mesmo que isso seja feito, o código deve ser fiel ao .java? Todos os decompilers que ví até hoje perdem os comentários ao transformar o .class em .java e o compilador faz uns “ajustes no código” na compilação.

Tem que ser fiel sim. E a solução não é fazendo um decompiler do .class.
Como eu falei, o programa não deve processar arquivos para gerar a saída, exceto os que ele mesmo gere.

E sim, é um mega-desafio. Eu mesmo não tenho nem noção de como fazer.

[quote=ViniGodoy]…

E sim, é um mega-desafio. Eu mesmo não tenho nem noção de como fazer.[/quote]

idem… eu até imaginaria como seria isso se pudesse encontrar o arquivo java e le-lo para imprimir (ai beleza). mas sem poder ler do próprio arquivo ai não tenho a menor idéia…

Tem que ser fiel sim. E a solução não é fazendo um decompiler do .class.
Como eu falei, o programa não deve processar arquivos para gerar a saída, exceto os que ele mesmo gere.

E sim, é um mega-desafio. Eu mesmo não tenho nem noção de como fazer.[/quote]

Achei que vc estava falando sério…

Sem ler nenhum arquivo… nem mesmo o .class!. Seria realmente um prodígio fazer isso.

vini, vale uma coisa como essa? huahuah, ri muito com essa ideia “de gênio”(leia-se ridícula) que eu tive

public class MostraCodigo {

	public static String code = 
"public class MostraCodigo {\n"+

"	public static String code = \"{valor}\";\n"+
"	public static String retornarCodigo(int index){\n"+
"		\n"+
"		return (index<2)?code.replace(\"{valor}\", retornarCodigo(index++)):\"\";\n"+
"	}\n"+
"	\n"+
"	public static void main(String[] args) {\n"+
"		System.out.println(retornarCodigo(0));\n"+

"	}\n"+

"}\n";
	public static String retornarCodigo(int index){
		
		return (index<2)?code.replace("{valor}", retornarCodigo(1+index)):"";
	}
	
	public static void main(String[] args) {
		System.out.println(retornarCodigo(0));

	}

}

(obs, ainda não funciona, teria que mexer um pouco para funcionar corretamente, mas foi só a ideia aqui.

pensei também que poderias jogar isso num Blog extra GUJ e só anuncia aqui o novo desafio… a Galera posta as soluções e o(s) moderador(es) votam pela melhor ou a mais rápida, ou a mais elegante, sei lá…

Em um Blog extra fica mais fácil controlar o Ranking…

Abs []

Opa, vale sim. Se funcionar, tá valendo.

[quote=adriano_si]pensei também que poderias jogar isso num Blog extra GUJ e só anuncia aqui o novo desafio… a Galera posta as soluções e o(s) moderador(es) votam pela melhor ou a mais rápida, ou a mais elegante, sei lá…

Em um Blog extra fica mais fácil controlar o Ranking…

Abs [][/quote]

Grande ideia, Adriano!

Quanto mais gente se interessar, mais podemos desenvolver a proposta. Agora como saber se os desafios são “básicos” e ao mesmo tempo [color=blue]desafiantes[/color]? Por exemplo, tem coisa que é fácil demais, que são os exercícios geralmente passados nos livros, como a série de Fibonacci, números primos e encontre o maior e o menor nos valores de um array, etc. O que precisamos é de algo divertido, interessante e que possa ser feito por iniciantes… alguma ideia?

Pow mto fera esse desafio então, deve ser mto #$@%# de fazer isso, ainda mais sem ler os aquivos.

tipo eu posso dar CTRL + C, copiar o código e CTRL +V, colar num System out

Um desafio, dado qualquer vetor de numeros inteiros, inverte-lo sem usar APIs especificas.

Bonus para quem fazer isso sem variaveis auxiliares.

(Se não me engano eu mesmo já escrevi um código desse aqui no fórum)

[quote=Marky.Vasconcelos]Um desafio, dado qualquer vetor de numeros inteiros, inverte-lo sem usar APIs especificas.

Bonus para quem fazer isso sem variaveis auxiliares.

(Se não me engano eu mesmo já escrevi um código desse aqui no fórum)[/quote]

mas, precisa retornar esse vetor ? ou somente imprimilos na tela ?
porem, penssando bem, se for para retornalo invertido sem usar nem uma variavel auxiliar fica dificil.(ja me disseram que impossivel na computação não existe, hehehehe…)

mas enfim:

public class Desafio{
    public void inverterVetor(int vetor[]){
    	for(int i = vetor.length();i >=0;i--){
  	        System.out.print(vetor[i]+" ");
        }
    }
}

caso o codigo esteja correto, la vai o proximo desafio:

fazer um metodo que imprima na tela todos os numeros primos de 1 a 1000.

[quote=leofaka][quote=Marky.Vasconcelos]Um desafio, dado qualquer vetor de numeros inteiros, inverte-lo sem usar APIs especificas.

Bonus para quem fazer isso sem variaveis auxiliares.

(Se não me engano eu mesmo já escrevi um código desse aqui no fórum)[/quote]

mas, precisa retornar esse vetor ? ou somente imprimilos na tela ?
porem, penssando bem, se for para retornalo invertido sem usar nem uma variavel auxiliar fica dificil.(ja me disseram que impossivel na computação não existe, hehehehe…)

mas enfim:

public class Desafio{
    public void inverterVetor(int vetor[]){
    	for(int i = vetor.length();i >=0;i--){
  	        System.out.print(vetor[i]+" ");
        }
    }
}

caso o codigo esteja correto, la vai o proximo desafio:

fazer um metodo que imprima na tela todos os numeros primos de 1 a 1000.[/quote]

Vou melhorar esse seu desafio…

Dado um número N, achar todos os números primos até N no menor tempo possível.

Já que só tem rato no tópico, rsrs.

dá uma olhada ai rapaziada, fazendo favor, tenho que implementar um exemplo pro professor pra ganhar uns pontos.

http://www.guj.com.br/posts/list/224200.java#1148358

Desculpa atropelar ai!!!

[quote=leofaka][quote=Marky.Vasconcelos]Um desafio, dado qualquer vetor de numeros inteiros, inverte-lo sem usar APIs especificas.

Bonus para quem fazer isso sem variaveis auxiliares.

(Se não me engano eu mesmo já escrevi um código desse aqui no fórum)[/quote]

mas, precisa retornar esse vetor ? ou somente imprimilos na tela ?
porem, penssando bem, se for para retornalo invertido sem usar nem uma variavel auxiliar fica dificil.(ja me disseram que impossivel na computação não existe, hehehehe…)

mas enfim:

public class Desafio{
    public void inverterVetor(int vetor[]){
    	for(int i = vetor.length();i >=0;i--){
  	        System.out.print(vetor[i]+" ");
        }
    }
}

caso o codigo esteja correto, la vai o proximo desafio:

fazer um metodo que imprima na tela todos os numeros primos de 1 a 1000.[/quote]

Voce não tem nem que imprimir, voce só precisa inverter todas as posições do vetor.

E é possivel sem auxiliares sim.