Glosario

Un programa que, usando un ROM, simula (o más correctamente, emula) una computadora en otra computadora. Emu48 emula casi completamente una HP4X bajo Windows, permitiendo a uno usar la calculadora en la pantalla de la computadora.

El Comando DESCAD

5 respuestas [Último envío]
Integró: 10/03/2004
Envíos: 41
MonedasHP: 8
Imagen de Orly
Calc: HP49 | ROM:1.19-6
El Comando DESCAD
 
Jue, 18/03/2010 - 16:28

Hola mis estimados Amigos AdictosHP!!!

En primer lugar saludos a todos Uds. y decirles que Dios los bendiga siempre...

Dicho esto, ahora les propongo un nuevo desafío:

Realizar el código UserRPL más rápido y más pequeño para implementar el Comando DESCAD. Este comando lleva su nombre por la acción que realiza, esto es, DESordenar CADena.

El programa debe aceptar como argumento de entrada 1 solo objeto String (cadena de caracteres) de cualquier longitud y a cada ejecución del comando debe devolver como salida 1 solo objeto String (cadena de caracteres) que sea la desordenación aleatoria de todos y cada uno de los caracteres que conformaron el objeto String (cadena de caracteres) ingresado como argumento de entrada el comando.

Bueno, para que todo quede claro, les dejo un ejemplo de ejecución del Comando DESCAD:

Ejemplo de Ejecución del Comando DESCAD

--------------------------------------------
Pila antes de ejecutar el comando DESCAD
--------------------------------------------
2:
1: "ESTA LINEA DE TEXTO SE AUTODESTRUIRA EN UN MOMENTO..."

--------------------------------------------
Pila después de ejecutar el comando DESCAD
--------------------------------------------
2:
1: "X. IATNS . ETU AL DTEUIRR NSSEAA MNOUE.TEEOTETOM"

Obviamente, como el resultado del desordenamiento de caracteres producido por el Comando DESCAD es absolutamente aleatorio, Uds. seguramente no tendrán de primera instancia la misma salida que les presenté en el Ejemplo de Ejecución del Comando DESCAD. Pero estoy seguro que si ejecutan varias veces el Comando DESCAD con el mismo objeto String (cadena de caracteres) "ESTA LINEA DE TEXTO SE AUTODESTRUIRA EN UN MOMENTO..." podrán obtener como salida el objeto String (cadena de caracteres) "X. IATNS . ETU AL DTEUIRR NSSEAA MNOUE.TEEOTETOM".

Bueno, eso es todo mis queridos Amigos AdictosHP...

Ahora a pensar y proponer nuestras soluciones más creativas e ingeniosas...

Orly Wink

"Cuando el entendimiento se enturbia, la fe es el filtro que potabiliza nuestra mente."

Top
Integró: 17/09/2007
Envíos: 101
MonedasHP: 91
Imagen de LuisBeas
 
#1
Jue, 18/03/2010 - 19:04

Holas yo propongo:

«
DUP TYPE 2. == IF
               THEN
                   DUP SIZE 1 - SWAP
                   1 PICK3 START
                            DUP HEAD SWAP TAIL
                            PICK3 RAND * CEIL
                            DUP2 6 PICK SUB UNROT
                            1 - 1 SWAP SUB ROT + +
                           NEXT
                   NIP
               ELSE
               END
»

Top
Integró: 23/03/2009
Envíos: 91
MonedasHP: 160
Imagen de yder
Calc: HP50
 
#2
Sáb, 20/03/2010 - 00:21

Un saludo.
Aqui otro codigo.

«   DUP TAIL
    SWAP HEAD
    SWAP 
    RAND    
    SWAP 
    DUP  SIZE 1 SWAP 
    START
      
        DUP TAIL SWAP HEAD
        4 ROLL SWAP 4 ROLL 
        RAND DUP ROT 
           <
           « UNROT +  » 
           «  UNROT SWAP  + »
         IFTE     
   SWAP ROT
    NEXT
  DROP2
»

Top
Integró: 09/03/2010
Envíos: 204
MonedasHP: 406
Imagen de zuaritx
AdictoHP+
Calc: HP50 | ROM:Version HP50-C Revision #2.15 (2009)
 
#3
Jue, 25/03/2010 - 14:53

Esta es mi solución con variables locales, se puede hacer con comandos de pila
[->] = [Cambio derecho] + [0-cero]. Programa sin depurar el tipo de elemento en la posición 1 de la pila.

«   -> j
  « {} {} 1 j SIZE
    FOR h RAND + SWAP j h h SUB SWAP + SWAP
    NEXT DUP SORT -> m n p
    « "" 1 j SIZE
      FOR h m n p h GET POS GET +
      NEXT
    »
  »
»

José Manuel Ruiz Muñoz
zuaritx@yahoo.es # +34 654 31 60 86 # Valencia - España - Europa
www.zuaritx.loquegustes.com

calculadoras graficas hp (en facebook - e:lessons...):
http://www.facebook.com/profile.php?v=info&ref=profile&id=651972412#!/group.ph

Top
Integró: 09/03/2010
Envíos: 204
MonedasHP: 406
Imagen de zuaritx
AdictoHP+
Calc: HP50 | ROM:Version HP50-C Revision #2.15 (2009)
 
#4
Jue, 25/03/2010 - 15:16

Esta es mi solución con variables locales, se puede hacer con comandos de pila
[->] = [Cambio derecho] + [0-cero]. Programa optimizado por completo.

« « -105 IF 105 FS? THEN SF ELSE CF END » -> k
 « 105
 IF -105 FS?
 THEN SF
 ELSE CF
 END
 IF DEPTH 0 >
 THEN 
  IF DUP TYPE 2 SAME
  THEN
  « -> j
   « {} {} 1 j SIZE
    FOR h RAND + SWAP j h h SUB SWAP + SWAP
    NEXT DUP SORT -> m n p
    « "" 1 j SIZE
      FOR h m n p h GET POS GET +
      NEXT
    »
   »
  » k EVAL
  END
 ELSE k EVAL
"Error:
No hay encomillado en posición 1
Ejemplo
1: casa ---> 1: scaa"DOERR
 END
 »
»

La depuración exige tener en cuenta:
1) Si hay elementos en la pila
2) El elemento en la posición 1 de la pila es un encomillado o cadena de caracteres.
3) Adicionalmente hay que tratar la cuestión de ética del programa que hay en otro post de dejar los indicadores tal cual los tenía el usuario antes de ejecutar el programa.
4) Dar un mensaje de error indicando qué sucede y de paso una breve ayuda.
5) Incluir una vez resueltas todas las cuestiones anteriores la rutina que da la solución aleatoria a la cadena de caracteres.
6) Si se quiere, para darle un poco más de comodidad se le puede incluir una plantilla con el comando INFORM.

José Manuel Ruiz Muñoz
zuaritx@yahoo.es # +34 654 31 60 86 # Valencia - España - Europa
www.zuaritx.loquegustes.com

calculadoras graficas hp (en facebook - e:lessons...):
http://www.facebook.com/profile.php?v=info&ref=profile&id=651972412#!/group.ph

Top
Integró: 09/03/2010
Envíos: 204
MonedasHP: 406
Imagen de zuaritx
AdictoHP+
Calc: HP50 | ROM:Version HP50-C Revision #2.15 (2009)
 
#5
Sáb, 27/03/2010 - 08:45

¿Quién se supone que ha ganado? ¿Cuándo finaliza el minicampeonato?

José Manuel Ruiz Muñoz
zuaritx@yahoo.es # +34 654 31 60 86 # Valencia - España - Europa
www.zuaritx.loquegustes.com

calculadoras graficas hp (en facebook - e:lessons...):
http://www.facebook.com/profile.php?v=info&ref=profile&id=651972412#!/group.ph

Top

Twitter

Cargando...