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

Aplicar un programa o comando a todos los elementos de un compuesto hasta agotar el compuesto

Ir abajo

Aplicar un programa o comando a todos los elementos de un compuesto hasta agotar el compuesto Empty Aplicar un programa o comando a todos los elementos de un compuesto hasta agotar el compuesto

Mensaje  CesarV Sáb Ago 26, 2023 10:44 am

Aplicando un programa o comando (de dos argumentos) a todos los elementos de un compuesto hasta agotar el compuesto y retornar un solo objeto como resultado.

En User RPL, puedes aplicar un programa o comando (de dos argumentos) a todos los elementos de un compuesto hasta agotar el compuesto con el comando STREAM.

En System RPL, para evaluar un programa o comando (de dos argumentos) a todos los elementos de un compuesto hasta agotar el compuesto y retornar un solo objeto como resultado, puedes usar el siguiente NULLNAME

Ejecuta un programa o comando de la forma ( ob ob' -> ob'' ) repetidamente en los dos primeros elementos en una lista hasta que ésta queda agotada.
Código:
* Ejecuta un programa o comando de la forma ( ob ob' -> ob'' ) repetidamente
* en los dos primeros elementos en una lista hasta que ésta queda agotada.
* Indica el resultado final.
NULLNAME StreamComp ( comp prog2a1 -> ob )
::                ( comp prog2a1 )
OVER              ( comp prog2a1 comp )
LENCOMP           ( comp prog2a1 #n )
DUP#1=            ( comp prog2a1 #n flag )
case2drop
CARCOMP
                  ( comp prog2a1 #n )
FLASHPTR 2LAMBIND
                  ( comp )
>R                ( )
'R                ( ob1 )
1GETLAM           ( ob1 #n )
ONE_DO (DO)
                  ( ob )
  RSWAP
  'R              ( ob obi+1 )
  RSWAP
  2GETEVAL        ( ob' )
LOOP
                  ( ob' )
ABND              ( ob' )
;
*************************************
Por ejemplo:
Código:
{ 2. 5. 7. 3. }
' %*
StreamComp
Devuelve:
210.
*************************************

Ejecuta un programa o comando de la forma ( ob ob' -> ob'' ) repetidamente en los dos últimos elementos en una lista hasta que ésta queda agotada.
Código:
* Ejecuta un programa o comando de la forma ( ob ob' -> ob'' ) repetidamente
* en los dos últimos elementos en una lista hasta que ésta queda agotada.
* Indica el resultado final.
NULLNAME StreamRevComp ( comp prog2a1 -> ob )
::           ( comp prog2a1 )
1LAMBIND     ( comp )

:: INNERCOMP ( ob1...obn #n )
   DUP#1=    ( ob1...obn #n flag )
   caseDROP
             ( ob1...obn #n )
   ONE_DO (DO)
             ( ob1...ob' ob'' )
     1GETLAM ( ob1...ob' ob'' prog2a1 )
     EVAL    ( ob1...ob''' )
   LOOP
             ( ob )
;
ABND         ( ob )
;

- Los 2 NULLNAME anteriores producen el mismo resultado para operaciones conmutativas como %+, %*, %MAX y %MIN.

- Para operaciones que no son conmutativas pueden producir resultados diferentes.

- El NULLNAME StreamRevComp es más rápido que el NULLNAME StreamComp.

- 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.