5 votos

programación de rompecabezas

Dado un lenguaje de programación en el que podría hacer tantas variables como sea posible y solo podría realizar estos tres operadores, encuentre b-1.

 a=0;
b++;
loop(c){  // This loop will loop exactly c times

}
 

un ejemplo para encontrar el número 2.

 a = 0;
a ++;
a ++; // 2
 

¿Cómo encontrarías b-1, donde b es un entero positivo? No hay números firmados en este idioma.

17voto

DanteAlighieri Puntos 16

Parece que el truco de esta pregunta es que para c = 0 , loop(c){} loops es cero, es decir, no hace nada. Por lo tanto, el siguiente programa funcionará:

 a=0;
c=0;
loop(b){
  loop(c){
    a++;
  }
  c=0;
  c++;
}
 

Terminamos con b-1 en a .

2voto

eumiro Puntos 638
a = 0;    
b = 5;   //Random number
c = 0;

loop(b){
  a = c;    
  c ++;    
}

//c holds value 5    
//a holds value 4

0voto

Ne Mo Puntos 48

Similar a la respuesta de aws, pero me resultó más fácil razonar sobre:

 c=0;
loop(b){
  a=0;
  // at the beginning of the loop, c lags the counter by 1
  loop(c){
    a++;
  }
  // at the end of the loop, c == counter
  // in the last loop, c is set to b but 'a' still lags by 1
  c++;
}
 

Esta respuesta es obviamente menos eficiente, haciendo un bucle de algo así como (b-2) + (b-3) + ... + (b-b) más veces.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X