Desafio

36 respostas
rodrigousp

Qual o próximo número da seqüência:

0 , 12 , 23 , 29 , 34 , 46 , 49

36 Respostas

sfing

53

rodrigousp

Não.

:wink:

Mas acho que foi uma boa tentativa… o que te levou a pensar nesse número?

sfing

Para dizer a verdade não sei, chutei ! Estou aqui sem fazer nada com sono e fome e o tempo não passa, então tentei pensar e nada, minha cabeça não pensa direito quando estou com fome e ainda mais com sono … Rsss ! Depois que voltar do almoço que é as 13:00 ai faço novamente !!

K_F

56

rodrigousp

Isso foi um outro chute?

L

51

Sim! Foi um Chute!

K_F

Não,a diferença entre os números pares é 22, eles aparecem a cada duas posições.

Adriano_Almeida

61

rodrigousp

:wink:

Ué… a diferença entre 0 e 12 é 12.

K_F

Não respondeu se está certo ou errado!

K_F

Não considerei o zero!

K_F

Acabou a hora do almoço!! Abraço!

rodrigousp

Dica: os números devem estar dentro do intervalo [0,63]. Então se vocês chutarem exaustivamente, alguém vai acabar acertando.

(mmm… o que será que tem 64 por ai ???)

sfing

49 + 12 = 61

rodrigousp

Pergunta aos participantes: como eu devo responder as respostas:
_ Eu devo responder que a lógica está certa ou errada e só falar que o número está certo quanto a lógica estiver correta? ou …
_ Devo falar sim ou não para qualquer chute?

ramilani12

60!

E

olha só o meu raciocínio:

0 , 12 , 23 , 29 , 34 , 46 , 49

0 - 12= 12
23 - 29 = 6
34 - 46 = 12
49 - x = 6 logo,

x = 55

errei feio ? …r.s…rs

rodrigousp

Interessante seu raciocínio, mas ainda está errado. Insisto que vocês devem considerar a informação que o contra-domínio é o intervalo [0,63].

E

rodrigousp:
Pergunta aos participantes: como eu devo responder as respostas:
_ Eu devo responder que a lógica está certa ou errada e só falar que o número está certo quanto a lógica estiver correta? ou …
_ Devo falar sim ou não para qualquer chute?

quando o chute estiver certo, você pergunta qual foi a lógica ?
se estiver errada, acrescente uma dica…rs

Luiz_Aguiar

acho que a sequencia correta é essa:
4 8 15 16 23 42

rs

ramilani12

Ops

56 ?

rodrigousp

Pelo menos o 56 é o mais popular por enquanto… mas esse não é o critério da seqüência… :wink:

L

Como o próximo número deve ser ímpar, creio que será 57 !

rodrigousp

De fato o próximo número é ímpar (e isso não é mera coincidência!). Mas o que isso tem a ver com o intervalo 0-63?

ramilani12

rodrigousp:
Pelo menos o 56 é o mais popular por enquanto… mas esse não é o critério da seqüência… :wink:

Hum?!

Segui essa logica:

0 , 12 , 23 , 29 , 34 , 46 , 49 , 56

De 12 a 34 a diferena eh = 22 para provar isso pegamos os numeros no intervalo:

12 - 23 = 11
23 - 29 = 6
29 - 34 = 5
Total = 11 + 6 + 5 = 22

Então

34 + 22 = 56 Provando:

34 - 46 = 12
46 - 49 = 3
Total 15 - 22 = 7 restam 7

O ultimo numero 49 + 7 = 56

L

Olhando o conjunto, percebi que realmente não era mera coincidencia o número ser ímpar, qto ao número 57, eu chutei pq observei que outros números ímpares já haviam sido colocados aqui…rsrs

Proteu_Alcebidiano

rodrigousp:
Qual o próximo número da seqüência:

0 , 12 , 23 , 29 , 34 , 46 , 49

Dá pra pensar um monte de coisa sobre essa sequencia. Um artíficio bom de responder a pergunta é mudando a pergunta sem alterar a resposta.

Uma das que veio na minha cabeça foi a seguinte:

Colocando a sequencia na vertical, temos:

00 + 12
12 + 11
23 + 6
29 + 5
34 + 12
46 + 3
49 + ?

Então podemos perguntar: quem vem depois da sequência: 12, 11, 6, 5, 12, 3, ?

Aí fica uma sequência mais regular. Colocando em termos de expressões:

0 - 00 + (12/1 + 0)
1 - 12 + (12/1 - 1)
2 - 23 + (12/2 + 0)
3 - 29 + (12/2 - 1)
4 - 34 + (12/1 + 0)
5 - 46 + (12/4 + 0)
6 - 49 + (12/4 - 1)
7 - 51

Daí o número seria 51. A logica da sequencia ficaria assim:

an+1 = an + (12/1 + 0) se n mod 4 = 0; ou

sendo x = floor(n / 4) + 1,

an+1 = an + (12/2^x + 0) se x for impar

an+1 = an + (12/2^x - 1) se x for par

Daí minha resposta é 51.

T+

oliveirarenan

A resposta correta é 59

:lol: :lol: :lol: :lol: :lol: :lol: :lol:

rodrigousp

:stuck_out_tongue:
A resposta correta é mesmo 59.

Proteu_Alcebidiano

A resposta correta é mesmo 59.
[/quote]

Sobre ser correta, com uma sequencia pequena voce pode tomar várias premissas.

Daí fica a critério de quem perguntou quem vai adivinhar o seu raciocínio =)

T+

ramilani12

A resposta correta é mesmo 59.
[/quote]

Prq?

rodrigousp

Então, eu posso dar a resposta completa mais antes disso vou dar mais uma dica. Os números representam posições em um tabuleiro de xadrez (enumerado de 0 a 63).

jingle

se desenhar um tabuleiro e marcar as cordenadas vai perceber que é a única linha e coluna que ainda não foi marcada.

oliveirarenan
import java.awt.Graphics;

public class Desafio {
    private short lin;
    private short col;
    private Desafio des;

    public Desafio (short c, Desafio q)
    {
      col = c;
      lin = 1;
      des = q;
    }

    public boolean achaSolucao()
    {
      while (des!=null && des.podeAtacar(lin, col))
        if (!avanca())
	      return false;
	return true;
    }

    public boolean avanca()
    {
      if ( lin<8 ) {
	    lin++;
	    return achaSolucao();
      }
      if (des!= null) {
        if (!des.avanca())
	      return false;
        if (!des.achaSolucao())
	      return false;
      }
      else 
        return false;
      lin = 1;
      return achaSolucao();
    }

    private boolean podeAtacar(int tlin, int tcol) {
      int colDif = tcol - col;
      if ( (lin == tlin) || (lin + colDif == tlin) ||//
	     (lin - colDif == tlin))
        return true;
      if (des!= null)
	return des.podeAtacar(tlin, tcol);
      return false;
    }

    public String toString()
    {
      return("("+col + ", "+lin+")");
    }

    public void imprime()
    {
      if(des!= null)
	des.imprime();
      System.out.println(this);
    }

    public void paint(Graphics g) {
	if (des!= null) 
          des.paint(g);
	int x = (lin-1)*50;
	int y = (col-1)*50;
        g.drawOval(x+20, y+20, 10,10);
    }

}

testar...

/*
 * soluciona o problema
 */

public class Principal{

  public static void main (String[] xyz) {
    Desafio desafio;
    desafio= null;
    for (short i=1; i<=8; i++)
    {
	  desafio= new Desafio(i, desafio);
	  desafio.achaSolucao();
    }
    desafio.imprime();
  }
}

:wink: :wink: :wink: :wink: :wink: :wink: :wink: :wink: :wink:

thegoergen

Essa classe de resposta não ajudou muita coisa… porque 59???

rodrigousp

:smiley:

Eu considero que vocês já acharam a resposta certa…

public class AgentTable {
	public final static int size = 8;
	byte[][] table;
	
	public AgentTable(){
		table = new byte[size][size];
		for (int i=0 ; i < size; i++) {
			table[i] = new byte[size]; 
		}
		for (int i=0 ; i < size; i++) {
			for (int j=0 ; j < size; j++) {
				table[i][j] = 0;
			}
		}
	}
	
	public void putQueen(int row, int col) {		
		for (int i =0; i < size; i++) {
			table[row][i]++;
		}
		for (int i =0; i < size; i++) {
			table[i][col]++;
		}
		
		for (int i = row, j = col; i >= 0 && j >= 0; i--,j--) {			
			table[i][j]++;
		}
		for (int i = row, j = col; i >= 0 && j < 8; i--,j++) {			
			table[i][j]++;
		}		
		for (int i = row, j = col; i < 8 && j < 8 ; i++,j++) {			
			table[i][j]++;
		}
		
		for (int i = row, j = col; i < 8 && j >= 0; i++,j--) {			
			table[i][j]++;
		}
		table[row][col] = 88;
	}
	
	public void removeQueen(int row, int col) {
		for (int i =0; i < size; i++) {
			table[row][i]--;
		}
		for (int i =0; i < size; i++) {
			table[i][col]--;
		}
		
		for (int i = row, j = col; i >= 0 && j >= 0; i--,j--) {			
			table[i][j]--;
		}
		for (int i = row, j = col; i >= 0 && j < 8 ; i--,j++) {			
			table[i][j]--;
		}
		for (int i = row, j = col; i < 8 && j < 8 ; i++,j++) {			
			table[i][j]--;
		}		
		
		for (int i = row, j = col; i < 8 && j >= 0; i++,j--) {			
			table[i][j]--;
		}
		table[row][col] = 0;
		
		
	}
	NumberFormat decimalFormat = new DecimalFormat("00");
	@Override
	public String toString() {
		StringBuffer buffer = new StringBuffer(); 		
		for (int i=0 ; i < size; i++) {
		buffer.append('-');
			for (int j=0 ; j < size; j++) {
				buffer.append(decimalFormat.format(table[i][j]));
				buffer.append('-');
			}
			buffer.append('\n');
		}
		return buffer.toString();		
	}
	
	public String getSequence(){
		StringBuffer buffer = new StringBuffer();
		for (int i=0 ; i < size; i++) {
			buffer.append('-');
				for (int j=0 ; j < size; j++) {
					if (table[i][j] > 80) {
						buffer.append(i*8 +j);
						buffer.append('-');						
					}
				}
			}
		return buffer.toString();
	}

}
public class Agent {
	
	public static void main(String[] args) {
		Agent agent = new Agent();
		agent.execute();
	}

	private AgentTable agentTable;

	private void execute() {
		agentTable = new AgentTable();
		colocaPecas(8, 0);
		System.out.println(agentTable);
		System.out.println(agentTable.getSequence());
		
	}
	int count = 0; 
	private boolean colocaPecas(int i, int j) {		 
		boolean move = false;
		 
		while (!move) {
			j = posicaoPossivel(j);
			if (j == -1) return false;
			agentTable.putQueen(j/8, j%8);
			if (count < 8) {
				count++;
			}
			if (i > 1){
				move = colocaPecas(i - 1, j + 1);	
			} else {
				move = true;
			}
			if (!move) agentTable.removeQueen(j/8, j%8);
			j++;
		}
		return move;
		
		
	}

	private int posicaoPossivel(int j) {
		for(int i  = j ; i < 64 ; i++)
			if (agentTable.table[i/8][i%8] ==0 ) return i; 
		return -1;
	}

}
Criado 19 de março de 2008
Ultima resposta 19 de mar. de 2008
Respostas 36
Participantes 13