Un codigo en User-RPL (Dado)

Como a mi me gusta el rol, necesito dados de varias caras, y bue tenia una HP48-GII y me decidí hacer un programucho en User-RPL, que tome un numero de la pila y devuelva un entero aleatorio entre 1 y el numero ingresado. Acá pongo el codigo… pero por problemas de codificacion se va a ver para el orto… asi que adjunto el el codigo en un archivito zip. Les recomiendo para abrirlo usar el programa UP-USEREdit

Para la Conectividad de la HP a la PC en Linux usen HPTALX

Descargar Dado.ZIP

A Diferencia del Zip Acá reemplace los símbolos nativos de la HP por “->” “!=”, “<=” y “>=”.

%%HP: T(0)A(D)F(.);
@ /***********************************************************
@ * Author: Juan B Cabral *
@ * E-mail: jbc.develop<arroba>gmail.com *
@ * Calc: hp48gII *
@ * Version: 1.0 *
@ * Licence: GPL V.3 *
@ * Created using HPUserEdit 5 [http://www.gaak.org/hpuser] *
@ ***********************************************************/

«
DUP @ Duplica el numero para verificar si el numero en la pila es Real
TYPE 28 == IF THEN @ verifica que el numero en pila sea tipo 28 (Real)
DUP 0 <= IF THEN
-> F
«
F
->STR @Convierte al numero en una cadena de caracteres
SIZE 1 SWAP @ en la pila queda desde 1 hasta la cantidad de digitos que tiene F
FOR I
0 ->STR @ Coloca en la pila un 0 por cada digito que tenga F
IF ‘I‹1′ THEN + END @ si hay mas de un 0, los concatena
NEXT
1 SWAP + @ agrega el 1 adelante de los ceros dejando la potencia de 10 inmediata superior a F
OBJ-> @ Convierte la cadena en un Entero
-> M @ Crea la variable multiplicadora
«
DO
RAND FP M * IP @ Genera un numero aleatorio, desprecia su parte Entera corre la coma M lugares y desprecia su parte decimal.
DUP
F >= IF THEN DROP 1 ELSE 0 END @ coloca en la pila un 1 si el valor obtenido es superior al buscado
UNTIL 0 == END
DUP
0 == IF THEN DROP F END @ Si el numero obtenido es 0, lo reemplaza por el valor maximo ingresado F
»
»
ELSE DROP “BAD ARGUMENT TYPE” MSGBOX
END
ELSE DROP “BAD ARGUMENT TYPE” MSGBOX @ mensaje de error de argumento no valido
END
»

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos necesarios están marcados *

Puedes usar las siguientes etiquetas y atributos HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>