HonradosHP
¿Quieres reaccionar a este mensaje? Regístrate en el foro con unos pocos clics o inicia sesión para continuar.

Aplicar un programa a los elementos de varios objetos compuestos

Ir abajo

Aplicar un programa a los elementos de varios objetos compuestos Empty Aplicar un programa a los elementos de varios objetos compuestos

Mensaje  CesarV Sáb Oct 01, 2011 11:14 am

Aplicando un programa o comando a los elementos de varios compuestos del mismo tamaño

En User RPL, puedes aplicar un programa o comando a los elementos de varios compuestos del mismo tamaño con el comando DOLIST.

En System RPL, para evaluar un programa o comando a los elemento de varios compuestos, puedes usar el siguiente NULLNAME

Código:
* Evalúa un programa o comando a los elementos de varios compuestos
* Entrada:
* Niveles N+2,...,5,4,3: Compuestos no vacíos, todas del mismo tamaño
* Nivel 2: Un bint (#N) Indica el número de compuestos
* Nivel 1: Programa o comando que tome #N argumentos y devuelva un objeto
* Salida: Un compuesto con el mismo número de elementos que los originales
* Para llamar a la posición del elemento usar INDEX@ #1+
* Para llamar al tamaño de los compuestos usa ISTOP@
NULLNAME ProgNa1Comp ( comp1...compN #N progNa1 -> comp' )
::             ( comp1...compN #N progNa1 )
3PICK          ( comp1...compN #N progNa1 compN )
LENCOMP        ( comp1...compN #N progNa1 #el )
SWAP4PICK      ( comp1...compN #N #el progNa1 compN )
TYPE           ( comp1...compN #N #el progNa1 #tipo )
' NULLLAM BINT4 NDUPN DOBIND
               ( comp1...compN )
* 4LAM: #N    3LAM: #elem    2LAM: PROG    1LAM: #tipo
4GETLAM        ( comp1...compN #N )
ZERO_DO (DO)
               ( ... )
  ISTOP-INDEX  ( ... #N-i )
  ROLL         ( ... compi )
  >R           ( ... )
  RSWAP        ( ... )
LOOP
               ( )
3GETLAM        ( #el )
ZERO_DO (DO)
               ( ... )
  4GETLAM      ( ... #N )
  ZERO_DO (DO)
               ( ... )
    4GETLAM    ( ... #N )
    #2+        ( ... #N+2 )
    RROLL_     ( ... )
    'R         ( ... obij )
    RSWAP      ( ... obij )
  LOOP
               ( ... ob1j...obNj )
  4GETLAM      ( ... ob1j...obNj #N )
  #1+          ( ... ob1j...obNj #N+1 )
  RROLL_       ( ... ob1j...obNj )
  2GETEVAL     ( ... obj' )
LOOP
               ( ob1'...obN' )
3GETLAM        ( ob1'...obN' #N )
1GETABND       ( ob1'...obN' #N #tipo )
COMPN_         ( comp' )
;

**************************************************

Por ejemplo:
Código:
{ 11. 12. 13. }
{ 100. 200. 300. }
BINT2
' %+
ProgNa1Comp
Devuelve:

{ 111. 212. 313. }

**************************************************

Recuerda que esto no sólo funciona para listas. También funciona para todo tipo de objetos compuestos.
CesarV
CesarV
Admin

Masculino Cantidad de envíos : 133
Localización : Perú
Calculadora : HP 50g
ROM : 2.15

https://sites.google.com/view/cesarv1821

Volver arriba Ir abajo

Volver arriba

- Temas similares

 
Permisos de este foro:
No puedes responder a temas en este foro.