Rigel en Inglaterra

lunes, enero 16, 2006

Algunas preguntas del test

En el test te decían que tenías una máquina con un conjunto de registros. Además tienes cuatro instrucciones posibles:
  1. ADD x, y, z. Esto suma el valor del registro x con el valor del registro y, almacenando el resultado en el registro z.
  2. SUB x, y, z. Resta el valor de y en el valor del registro x y almacena el resultado en el registro z.
  3. MUL x, y, z. Multiplica x por y, guardando el resultado en z.
  4. DIV x, y, z. Divide x entre y, guardando el resultado en z. Si y es cero, se almacena cero en z.
Dos de las preguntas interesantes fueron:
  1. Tienes dos registros (A,B). El registro A contiene un 0 ó un 1. El registro B contiene un 1. Almacena en el registro A un 1 si antes contenía un 0 ó almacena un 0 si antes contenía un 1. Insisto en que a priori no sabes qué valor almacena.
  2. Tienes tres registros (A,B,C). Uno de ellos contiene un 1, otro un 2 y el otro un 3, pero no sabes qué registro contiene qué valor. Almacena un 7 en el registro A.
¿Te animas a resolver el problema? Pon un comentario sugiriendo tu solución a cualquiera de las dos preguntas. Quien lo resuelva en menos instrucciones, gana.

11 Comments:

  • Bueno el primer problema creo que lo voy a resolver de forma directa y sin comodines, aunque me da miedo que sea así, seguro que hay truco.

    Sub B,A,A

    Ya pensaré el otro que parece que tiene más miga y si me voy a viciar si me pongo ahora :P

    Un saludo y enhorabuena por la entrevista :D

    By Anonymous Kom, at 11:57 a. m.  

  • Pues creo que no es una solución correcta. Si restas 1 a A, consigues tener -1 ó 0 en A. Quizás debería haber aclarado que los registros siempre almacenan enteros con signo. Si fueran bits sueltos, entonces tu respuesta sería correcta.

    Pero me alegra que alguien se anime. Suerte :)

    By Blogger Rigel, at 12:07 p. m.  

  • eh... qué? 1-0=1, 1-1=0... no veo el -1 por ningures.

    By Anonymous Kom, at 12:21 p. m.  

  • ¿¿Alguien me quiere decir por qué la hora que aparece en estos comentarios son las 4 de la mañana??

    By Blogger _luara_, at 12:23 p. m.  

  • Creo que lo que quería decir con "eh...qué?" es que la resta que hago es B-A no A-B, pero bueno ya me has metido miedo en el cuerpo xD

    By Anonymous Kom, at 12:23 p. m.  

  • bueno y antes de largarme a comer he resuelto el segundo (o éso creo :P), ahí va la locura:

    Mul A, B, A
    Mul A, C, A
    DIV B, B, B (lol)
    ADD A, B, A

    Basicamente en A almaceno el producto de los 3 registros (6), en B obtengo 1 diviendo por sí mismo y sumo ambos. A ver si alguien aporta una solución un poco más elegante :P. Un saludo.

    By Anonymous Kom, at 1:42 p. m.  

  • Si alguien se siente herido por la ineficiencia de usar Mul (como yo me siento) debería utilizar Add que pal caso hace lo mismo :P y el procesador lo agradecerá jeje.

    By Anonymous kom, at 1:51 p. m.  

  • Y el trabajo es para... Kom!
    Bien, bien. Gran trabajo, Kom. Has resuelto el segundo problema igual que hice yo (usando ADD) y has resuelto el primero de una forma ultra-simple que no sé cómo no se me ocurrió. Me quito el sombrero (o me lo como).

    Para que el ambiente no decaiga, pongo otro de los problemas: Hay dos registros (A,B). Uno de ellos almacena un 8 y el otro almacena un 9, pero no sabes cual es cual. Consigue que el registro A almacene un 9.

    By Blogger Rigel, at 1:59 p. m.  

  • Jaja, estoy empezando a pensar que en esa empresa nunca saben qué registro almacena cada cosa, tienen un estilo de programación realmente emocionante ;).

    Si la operación DIV se comporta como todos queremos (es decir, división entera) la solución es muy bonita:

    DIV B,A,B (0 si A==9, 1 si A==8)
    ADD A,B,A

    Dios, y deja de poner rollos de éstos que me vicio xD.

    By Anonymous Kom, at 2:19 p. m.  

  • ¡Muy bien, Kom! Menos mal que no te presentaste a la entrevista tú también, que si no me quitabas el trabajo ;-)

    By Blogger Rigel, at 2:50 p. m.  

  • Hola locos!!!
    Hacía unos días que no entraba y de repente me encuentro con esta pedazo fiesta algorítmica!! Tienen su gracia los problemillas.
    La leche, y yo sin enterarme. Bueno Rigel, ¿conseguiste el trabajo? (apuesto a que sí).
    Ah, y también me pregunto que qué horas son esas de estar delante de un ordeñador, que son horas de dormir!!! XD.

    Hala, saludines a toda la parroquia.

    By Anonymous Gulín, at 2:56 p. m.  

Publicar un comentario

<< Home