Data update
This commit is contained in:
parent
35bcdeebf8
commit
74c69a0df6
2427 changed files with 31826 additions and 3468 deletions
|
|
@ -0,0 +1,72 @@
|
|||
/*
|
||||
TASK BASIC-EMBEBIDO de HOPPER
|
||||
|
||||
onechar("WB",objetivo)
|
||||
deja un único carcater de todos los que encuentre consecutivamente,
|
||||
de la lista de caracteres "WB".
|
||||
|
||||
índice:=()
|
||||
copia el valor de la función entre paréntesis en "índice", pero
|
||||
deja ese valor en el stack de trabajo, para ser asignado a "largo".
|
||||
|
||||
poschar(INICIO, v, objetivo)
|
||||
entrega la posición donde el caracter dado "v" deja de repetirse
|
||||
(por eso se resta 1 al resultado).
|
||||
|
||||
objetivo+=sublargo
|
||||
borra los primeros sublargo-ésimo caracteres.
|
||||
|
||||
#basic{...} / #(...)
|
||||
BASIC embebido de Hopper.
|
||||
*/
|
||||
|
||||
#include <basico.h>
|
||||
|
||||
#define INICIO 1
|
||||
#proto codificar(_X_,_Y_,_Z_)
|
||||
#proto decodificar(_X_,_Y_)
|
||||
|
||||
principal {
|
||||
|
||||
índice="", largo=0, codificado="", decodificado=""
|
||||
objetivo = "WWWWWWWWWWWWBWWWWWWWWWWWWBBBWWWWWWWWWWWWWWWWWWWWWWWWBWWWWWWWWWWWWWW"
|
||||
|
||||
decimales '0', fijar separador 'NULO'
|
||||
|
||||
#basic{
|
||||
largo = len(índice:=( onechar("WB",objetivo) ) )
|
||||
print ("Original =",objetivo,NL)
|
||||
|
||||
codificado = codificar(objetivo, índice, largo)
|
||||
decodificado = decodificar(codificado, índice)
|
||||
|
||||
print ("Codificado =",codificado,"\nDecodificado =",decodificado,NL)
|
||||
}
|
||||
terminar
|
||||
}
|
||||
|
||||
subrutinas
|
||||
|
||||
codificar( o, i, l)
|
||||
v="", sublargo=0
|
||||
para cada caracter ( v, i, l )
|
||||
/* deja ésto en el stack de trabajo: */
|
||||
#( sublargo := (poschar(INICIO, v, o) - 1 ) ), 'v'
|
||||
o+=sublargo
|
||||
siguiente
|
||||
unir esto
|
||||
retornar
|
||||
|
||||
decodificar(c, i)
|
||||
v="", posición=0, l=0
|
||||
#( l=len(i) )
|
||||
para cada caracter ( v, i, l )
|
||||
#basic{
|
||||
posición = find(v, c)-1
|
||||
/* deja ésto en el stack de trabajo: */
|
||||
replicate(v, number(copy(posición,1,c)) )
|
||||
}
|
||||
++posición,c+=posición
|
||||
siguiente
|
||||
unir esto
|
||||
retornar
|
||||
27
Task/Run-length-encoding/SETL/run-length-encoding.setl
Normal file
27
Task/Run-length-encoding/SETL/run-length-encoding.setl
Normal file
|
|
@ -0,0 +1,27 @@
|
|||
program rle;
|
||||
test := "WWWWWWWWWWWWBWWWWWWWWWWWWBBBWWWWWWWWWWWWWWWWWWWWWWWWBWWWWWWWWWWWWWW";
|
||||
|
||||
print("Input:");
|
||||
print(test);
|
||||
print("Encoded:");
|
||||
print(enc := rlencode(test));
|
||||
print("Decoded:");
|
||||
print(rldecode(enc));
|
||||
|
||||
proc rlencode(s);
|
||||
loop while s /= "" do
|
||||
part := span(s, s(1));
|
||||
r +:= str #part + part(1);
|
||||
end loop;
|
||||
return r;
|
||||
end proc;
|
||||
|
||||
proc rldecode(s);
|
||||
loop while s /= "" do
|
||||
num := span(s, "0123456789");
|
||||
item := notany(s, "");
|
||||
r +:= val num * item;
|
||||
end loop;
|
||||
return r;
|
||||
end proc;
|
||||
end program;
|
||||
Loading…
Add table
Add a link
Reference in a new issue