Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Mortalzera

Desafios de programação

Recommended Posts

Bom galera, eu perguntei se alguem sabia de um site que tinha desafios de programação, a Isis(java import.isis) me respondeu e me indicou um site dai fui la dar uma olhada e acabei gostando. Eles possuem correção on-line judge robot se bem que eu já fiz 2 problemas e estava certo os cara deram como errado, mas tudo bem o que vale mesmo é o treinamento;

 

Aqui vai o site : www.programming-challenges.com os exercícios são encontrados no site em inglês, espanhol e alguns em português. Tem os exercícios no livro, num sei se eu posso passar link mas se eu puder eu edito e coloco de novo = ]

 

Bom galera, gostaria que todos que se interessam por programar desse uma olhada e quem sabe a gente até fazia um desafio aqui no forum, seria legal pra movimentar a galera. Abraços aew galera.

 

P.S. : tem que fazer cadastro no site.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Quais eram os problemas?

Eles costumam ser chatos p/ correcao.No spoj tem os limites do codigo. Essas coisas valem mais como exercício sobre a API do que brain teaser de início.

 

 

Perguntei ontem dos desafios pro quit.Nao tem mais pq o povo n se interessou.Falta de tempo eh um saco...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Quais eram os problemas?

Eles costumam ser chatos p/ correcao.No spoj tem os limites do codigo. Essas coisas valem mais como exercício sobre a API do que brain teaser de início.

 

 

Perguntei ontem dos desafios pro quit.Nao tem mais pq o povo n se interessou.Falta de tempo eh um saco...

Então eles são meio chatos mesmo sabe aquele problema (3n + 1) intaum eu fiz esse e o da viagem "Trip"

agora to vo tenta fazer mais alguns.

Podiamos montar uma espécie de desafio no forum, tipo pega um exercício de la e da pra galera tenta faze aqui seria uma boua

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então kandrade pq você num cria um tópico tipo assim inscrições ou até mesmo já joga o exercício lá, começa com os primeiros, que são um pouco mais fácil. Depois vai dificultando mais e mais.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Preciso conversar com o Quit para definir as regras antes de postar algum desafio.

Se alguém estiver interessado em participar pode responder nesse tópico mesmo.

 

Então kandrade pq você num cria um tópico tipo assim inscrições ou até mesmo já joga o exercício lá, começa com os primeiros, que são um pouco mais fácil. Depois vai dificultando mais e mais.

Compartilhar este post


Link para o post
Compartilhar em outros sites

entaum referente aos desafios galera, lógica q é legal, soh q igual os desafios de Linguagem C, em kd desafio tinha no maximo 3 participantes...

e olha q naum foi pedido coisas num grau dificil, nem médio e sim facil!

 

Se o pessoal c interessar com ctz terá novos desafios tanto na area de C/C++ como Lógica de Programação e Algoritmos!

 

Oq podemos fazer é pendurar um tópico para ver oq o pessoal acha, se os usuarios se mostrarem ativos não havera problemas em iniciarmos um desafio!

 

Sugestões seram bem vindas!!

 

http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

Acho que o que pega mesmo é que a galera tem um certo receio de faze os exercícios achando que são impossíveis, eu vo começar a postar alguns exercícios aqui no forum junto com a resolução. LEMBRANDO QUE SÃO TRÊS LINGUAGENS :

 

ANSI C

C++

JAVA

PASCAL

 

Os exercícios poderão ser feitos nessas três linguagens.

Compartilhar este post


Link para o post
Compartilhar em outros sites

O primeiro problema seguem pdf :

http://w14.easy-share.com/1701259793.html CORRIGIDO O LINK

 

a solução minha é essa :

CODE
#include <stdio.h>

 

int main(){

long int i,bigger,x,y,temp = 0;

long int j[1000001];

scanf("%ld %ld", &x, &y);

if ((x>0) && (y>0)){

for(i=0;i<1000001;i++){ //inicializa o vetor q conta os ciclos

j=0;

}

for (i = x;i<=y+1;i++){

j= 1;

temp = i;

while(temp!=1){ //calcula o ciclo de cada numero e passa o valor pro vetor j

if(temp%2==0) temp = temp/2;

else temp = temp*3 +1;

j++;

}

}

bigger = j[x]; //define o maior ciclo como o primeiro depois percorre o vetor procurando o maior

for(i=x+1;i<=y;i++){

if (bigger < j) bigger = j;

}

printf("%ld %ld %ld", x, y, bigger);

}

 

return 0;

}

Minha solução não funciona para o caso do intervalo ser I = [1...1000000]

Compartilhar este post


Link para o post
Compartilhar em outros sites

Acho que realizar um desafio seria bom aqui no forum... Poderiamos aprender bastante, era so escolhermos os capitulos em que os exercicios deviam se basear e ali comecar com as pessoas que tiverem interessadas..

Compartilhar este post


Link para o post
Compartilhar em outros sites

O do pdf que você mandou antes saiu assim:

 

#include <iostream>
#include <string>
using namespace std;
int linhas = 0,colunas = 0;

void ler() {
 do {
cout << "\nLinhas:";
cin >> linhas;
 } while(linhas < 0);

 do {
cout << "\nColunas;";
cin >> colunas;
 } while (colunas < 0 || colunas > 99);
}


void lerTabuleiro(string mines[]) {

 for(int i=0;i<linhas;i++) {
 mines[i].reserve(colunas);
 cin >> mines[i];
 }
}

void somarHorizontal(string mines[]) {
 int i,j;
 int pos;
 for(j=0;j<linhas;j++) {
pos = 0;
for(i=0;i<colunas;i++) {
   pos = mines[j].find('*',pos);
   if(pos > -1) {
	   if (pos > 0 && mines[j].data()[pos-1] != '*')
		  mines[j][pos-1] = (char)((int)mines[j][pos-1] + 1);

	   if (pos < colunas-1 && mines[j].data()[pos+1] != '*')
		  mines[j][pos+1] = (char)((int)mines[j][pos+1] +1);
	   pos++;
   }
}
 }
}

void somarVertical(string mines[]) {
 int i,j;
 int pos;
 for(i=0;i<colunas;i++) {
j = 0;

  do {
  /* Encontra * nas linhas */
  while (j < linhas && mines[j].data()[i] != '*') j++;
  if (j == linhas) break;

  if (j > 0 && mines[j-1].data()[i] != '*')
	 mines[j-1][i] = (char)((int)mines[j-1][i] + 1);
  if (j < linhas - 1 && mines[j+1].data()[i] != '*')
	 mines[j+1][i] = (char)((int)mines[j+1][i] + 1);
  j++;
} while (j < linhas -1);
 }
}

void somarDiagonal(string mines[]) {
 int i,j;
 int Dl,Dc;
 for(i=0;i<linhas;i++) {
 for(j=0;j<colunas;j++) {
	if (mines[i].data()[j] != '*') {
		 if (i == 0 || i < linhas-1) {
			 if (j-1 >=0 && mines[i+1].data()[j-1] == '*')
				mines[i][j] = (char)((int)mines[i][j]+1);
			 if (j+1 < colunas && mines[i+1].data()[j+1] == '*')
				mines[i][j] = (char)((int)mines[i][j] +1);
	   }
	   if (i > 0 && i < linhas) {
			 if (j-1 >= 0  && mines[i-1].data()[j-1] == '*')
				 mines[i][j] = (char)((int)mines[i][j] + 1);
			 if (j+1 < colunas && mines[i-1].data()[j+1] == '*')
				mines[i][j] = (char)((int)mines[i][j] + 1);
	   }
	}
 }
 }
}

void converter(string mines[]) {
 int pos = 0;
 int i,j;
 for(i=0;i<linhas;i++) {
 for(j=0;j<colunas;j++) {
	pos = mines[i].find('.');
	if (pos > -1) mines[i].replace(pos++,1,1,'0');
 }
 }

 somarHorizontal(mines);
 somarVertical(mines);
 somarDiagonal(mines);
}


int main() {
 while(true) {
ler();
if (linhas == 0 || colunas == 0) break;
string mines[linhas];
lerTabuleiro(mines);
converter(mines);

cout << "\n\n\n";
for(int i=0;i<linhas;i++)
   cout << mines[i] << endl;
 }
}

 

 

Minha solução não funciona para o caso do intervalo ser I = [1...1000000]

 

Se funcionasse estaria errado: the input will consist of a series of pairs of integers i and j,one pair per line. All integers will be less than 1000000 and greater than 0.

 

#include <iostream>
#include <vector>
using namespace std;

void  geraSeq(int N,vector<int> &T) {
  if (N > 1){
  if (N%2) {
	T.push_back(N*3+1);
	geraSeq(N*3+1,T);
  } else {
	T.push_back(N/2);
	geraSeq(N/2,T);
  }
  }
}


int main() {
  int inicio,final;
  cin >> inicio >> final;
  if (inicio < 0 || inicio >= 1000000 || final < 0 || final >= 1000000)
	return (1);

  int maxcicleLength = 1;
  vector<int> T;
  cout << inicio << " " << final << " ";

  for(;inicio<=final;inicio++) {
	T.clear();
	T.push_back(inicio);
	geraSeq(inicio,T);
	if (T.size() > maxcicleLength)
	   maxcicleLength = T.size();
  }
  cout << maxcicleLength << endl;
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então esse do minesweeper achei meio chato de faze = [, entaum nem tentei = ], mas vo subimter o do 3n +1.

 

vlw's vo manda mais uns pra galera fazer = ]

Compartilhar este post


Link para o post
Compartilhar em outros sites

Isis deu erro de compilação :

CODE
code.c:1:20: error: iostream: No such file or directory

code.c:2:18: error: vector: No such file or directory

code.c:3: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'namespace'

code.c:5: error: expected declaration specifiers or '...' before 'vector'

code.c: In function 'geraSeq':

code.c:8: error: 'T' undeclared (first use in this function)

code.c:8: error: (Each undeclared identifier is reported only once

code.c:8: error: for each function it appears in.)

code.c:9: error: too many arguments to function 'geraSeq'

code.c:12: error: too many arguments to function 'geraSeq'

code.c: In function 'main':

code.c:20: error: 'cin' undeclared (first use in this function)

code.c:25: error: 'vector' undeclared (first use in this function)

code.c:25: error: expected expression before 'int'

code.c:26: error: 'cout' undeclared (first use in this function)

code.c:29: error: 'T' undeclared (first use in this function)

code.c:31: error: too many arguments to function 'geraSeq'

code.c:35: error: 'endl' undeclared (first use in this function)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Deu erro pq provavelmente você está compilando um codigo em C++ com um compilador de C...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Deu erro pq provavelmente você está compilando um codigo em C++ com um compilador de C...

Pronto mudei o compilador, só que agora ta dando " wrong answer"

 

Eles são meio chatos pra correção mesmo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

bom galera, c surgir msm o interesse, podemos montar um sub-forum de desafios de programação ow até msm

um "grupo de estudos" ow seja uma galerinha pra tentar resolver os exercicios, é legal pensar em equipe,

se a maioria aprovar conversarei com o Kandrade sobre isso e tentaremos implementar o sub-forum.

Aiiii c alguem quizesse se tornar mod. desse sub-forum e se dedicasse realmente seria legal.!

Aguardo respostas ;D!

 

http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se eles esperam uma forma determinada de programa,podem esperar sentados.

Aqui na faculdade acontece direto.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Intão Isis eu concordo com você esses kra são meio lokos, mas o que tem que ser feito é um while

 

tipo

 

while(scanf(" %ld %ld", &x, &y) != EOF){

....

 

}

 

dai você pode usar o comando vamo supor que você queira a entrada

10 99

25 515

100 200

900 1000

 

e a saída respectiva, você cria um arquivo no linux de texto que contenha a entrada e quando for rodar você usa o arquivo como entrada

tipo

 

./programa.c < nomedoarquivocomoentrada

 

dai a entrada acima vai ser posta no programa.

ele vai retornar igualzinho a saída imposta pelo desafio.

 

Intão Quit vamo lá cara, apesar de eu achar que os desafios serão para poucos, devido a dificuldade de fazê-los. É preciso conhecer bastante coisa de C/C++.

 

Mas a idéia so por si mesma já é mto interessante, pq ficar respondendo esses tópicos tipo : " Como mudar de variável", "Ordenar vetor em portugol"

É meio tenso, desanima a galera que ta um poco pra frente. Não querendo desdenhar de ninguem, mas um problema do programming-challenges é uma coisa mais sofisticada.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.