Glosario

Abreviatura para la Notación Polaca Inversa o Reverse Polish Notation.
Esta notación de sufijo es la sintaxis de entrada que casi todas las calculadoras HP usan. Básicamente hay dos tipos de RPN. Una usada en calculadoras más viejas, hace que el ENTER duplique el nivel uno del stack en la línea de edición, y otro, usado en las 28/38G/48/49/50, que hace que el ENTER duplique el nivel uno si la línea de edición no está siendo usada, y que pone el contenido de la línea de edición en el nivel uno si la línea de edición está siendo usada. RPN usa notación de sufijo, así que 1+1 es introducido 1 ENTER 1 + en vez de 1 + 1 =.
Esto puede parecer más confuso al principio, pero es mucho más sencillo con expresiones más complejas. La Notación Polaca Inversa se basa en los trabajos de el polaco Jan Lukasiewicz, quien creó la notación de prefijo ( + 1 1 ) llamada Notación Polaca.

Rompecabezas

4 respuestas [Último envío]
Integró: 13/12/2004
Envíos: 151
MonedasHP: 70
Imagen de Roman
Calc: HP49 | ROM:2.10-7
Rompecabezas
 
Lun, 10/04/2006 - 10:36

Hola a todos, esta es la primera vez que propongo un reto, y creo que no es muy fácil que digamos, se trata de un juego, y voy a tratar de transmitirle lo que tengo en mente. Es un como un rompecabezas, el cual tal vez en alguna ocasión ustedes habrán jugado; consiste en una figura dividida en 16 segmentos y uno de ellos no existe, por lo general el inferior derecho, quedando en total 15 elementos los cuales se pueden desplazar para armar la figura.

Lo que tengo en mente es crear ese juego, el cual va a utilizar un grob del tamaño de la pantalla 131x64 píxeles, de entrada debe contener al menos un grob guardado el cual puede ser uno que lleve los números del 1 al 15, también debe ser capaz de que si existe un grob en la pila lo utilice, lo cual tiene dos problemas que sea menor o mayor a 131x64 por lo que en ambos casos hay que expandir o completar con espacios en blanco en caso de ser menor, y recortar o minimizar en caso de ser mayor.

La idea es que cuando ya se tiene el grob sea capaz de dividirlo en 16 pequeños grobs dejandolos en forma aleatoria, para que siempre se tenga un juego distinto, hay que tomar en cuenta que el último grob (el 16 o inferior izquirdo) debe desaparecer o muy bien ser blanco o negro para no confundir con la el resto de la imagen,el problema se presenta en la manera de como el usuario desplace el grob 16 (ya sea arriba, abajo, derecha, izquierda), considerando por ejemplo que si esta en un borde como el la posición 4 solo puede moverse abajo o a la izquierda. Pienso que se puede colocar un 0 WAIT para esperar una tecla, aun no se me corre cuales teclas asignar, y dependiendo de la que se seleccione mover el cuadro 16, ademas dando un error en caso de intentar dezplazar para el lado de uno de los bordes.

Digamos que se tiene este grob:

Luego se debe ver algo como esto (es solo referencial no tiene que se neccesariamente asi):

Bueno me despido, alli les dejo eso proyecto.

ReMat 2006

Román Barrios
Blog:Roman's Blog
Web: Roman Barrios

Top
Integró: 20/05/2003
Envíos: 209
MonedasHP: 214
Imagen de Edwin
Calc: HP48G/GX
 
#1
Lun, 10/04/2006 - 19:30

Hola Remat, interesante el reto.
Bueno presento la siguiente propuesta, pero por el momento tiene que haber un GROB de 131x64 en la pila.

\<< \->STR 8 "2" REPL OBJ\-> # 21h # 10h BLANK NEG # 63h # 30h 2 \->LIST SWAP REPL { } 0 3
  FOR I 0 3
    FOR J OVER # 21h I * # 10h J * OVER # 20h + OVER # Fh + 2 \->LIST ROT ROT 2 \->LIST SWAP SUB +
    NEXT
  NEXT SWAP DROP DUP EVAL 16 2
  FOR I I RAND * CEIL 1 + ROLL I ROLLD -1
  STEP 16 \->LIST 16 \-> A
  \<<
    DO
      IF KEY
      THEN
        CASE 25 OVER ==
          THEN DROP A 4 MOD
            \<< DUP A GET OVER A 1 + GET ROT A ROT PUT A 1 + ROT PUT A 1 + 'A' STO
            \>>
            \<< 200 .1 BEEP
            \>> IFTE
          END 34 OVER ==
          THEN DROP A 13 <
            \<< DUP A GET OVER A 4 + GET ROT A ROT PUT A 4 + ROT PUT A 4 + 'A' STO
            \>>
            \<< 200 .1 BEEP
            \>> IFTE
          END 35 OVER ==
          THEN DROP A 3 + 4 MOD
            \<< DUP A GET OVER A 1 - GET ROT A ROT PUT A 1 - ROT PUT A 1 - 'A' STO
            \>>
            \<< 200 .1 BEEP
            \>> IFTE
          END 36 OVER ==
          THEN DROP A 4 >
            \<< DUP A GET OVER A 4 - GET ROT A ROT PUT A 4 - ROT PUT A 4 - 'A' STO
            \>>
            \<< 200 .1 BEEP
            \>> IFTE
          END DROP 200 .1 BEEP
        END
      END 0 3
      FOR I 0 3
        FOR J PICT OVER I 4 * J + 1 + GET I # 21h * J # 10h * 2 \->LIST SWAP REPL
        NEXT
      NEXT { # 0h # 0h } PVIEW
    UNTIL DUP2 SAME
    END
  \>> DROP2 "LO LOGRASTE" MSGBOX { } PVIEW
	\>>

Bytes: 1167

La cuestión en la vida no es saber mucho, sino olvidarse de poco.
http://www.edwincordoba.com/

Top
Integró: 13/12/2004
Envíos: 151
MonedasHP: 70
Imagen de Roman
Calc: HP49 | ROM:2.10-7
 
#2
Mié, 12/04/2006 - 09:42

Edwin, muy interesante voy a analizar lo que enviastes y me dejastes asombrado, por que no pense que hiba a encontrar una propuesta tan rápida de este reto, felicitaciones

Román Barrios
Blog:Roman's Blog
Web: Roman Barrios

Top
Integró: 07/02/2010
Envíos: 265
MonedasHP: 362
Imagen de riboflavina
AdictoHP+
Calc: HP50 | ROM:2.09
 
#3
Mié, 17/03/2010 - 08:29

deberian de poner una opcion para seleccionar preguntas interezantes para poder leerlas cuando uno kisiera, algo asi como guardar en favoritos
y como se hace correr ese programa ??

Riboflavina aprendiendo el SYSTEM RPL/Arequipa-Peru

Top
Integró: 05/06/2003
Envíos: 343
MonedasHP: 186
Imagen de GkEnte
Calc: HP50 | ROM:pasé por aquí, pero ya lo pasado pasado.
 
#4
Mié, 17/03/2010 - 08:51

En navegadores como Firefox y otros existe la opción para guardar marcadores, es decir, si esta página le parece un favorito, debería agregarlo como marcador, y agrupar todo en un contenedor HP por ejemplo, opciones si existen.

- Gaak -

n/a
Top

Twitter

Cargando...

CAPTCHA
Esta pregunta es para probar si usted es un visitante humano y así evitar el spam automatizado.
2 + 5 =
Solucione este simple problema matemático e ingrese el resultado. Por ejemplo: para 1+3, ingrese 4.