Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
|
|
@ -0,0 +1,102 @@
|
|||
#!/usr/bin/hopper
|
||||
#include <hopper.h>
|
||||
|
||||
main:
|
||||
new hash(h)
|
||||
add hash(h,"chile" :: 100)
|
||||
add hash(h,"argentina"::200)
|
||||
add hash(h,"brasil"::300)
|
||||
{"\nLongitud HASH: "},len hash(h),println
|
||||
println(hash(h))
|
||||
|
||||
println( get value("argentina",h) )
|
||||
println( get value("chile",h) )
|
||||
try
|
||||
println( get value("guyana",h) )
|
||||
catch(e)
|
||||
{"***[",e,"]: "}get str error,println
|
||||
finish
|
||||
println( get key(300,h) )
|
||||
println( get key(100,h) )
|
||||
|
||||
mod value("chile",101,h)
|
||||
mod key(200,"madagascar",h)
|
||||
try
|
||||
mod key(130,"londres",h)
|
||||
println( get key(130,h) )
|
||||
catch(e)
|
||||
{"***[",e,"]: "}get str error,println
|
||||
finish
|
||||
|
||||
println( get key(200,h) )
|
||||
println( get value("chile",h) )
|
||||
|
||||
println("HASH actual: \n")
|
||||
println(hash(h))
|
||||
{"\nLongitud HASH: "},len hash(h),println
|
||||
|
||||
put after value (200,"colombia",400,h)
|
||||
put value (200,"mexico",401,h)
|
||||
println(hash(h))
|
||||
|
||||
put after key ("chile","antartida",110,h)
|
||||
put key ("chile","peru",99,h)
|
||||
|
||||
println("HASH actual: \n")
|
||||
println(hash(h))
|
||||
{"\nLongitud HASH: "},len hash(h),println
|
||||
|
||||
del by key("brasil",h)
|
||||
del by value(101,h)
|
||||
|
||||
{"\nLongitud HASH: "},len hash(h),println
|
||||
println(hash(h))
|
||||
sort hash(h)
|
||||
{"\nORDENADO: \n"}println
|
||||
println(hash(h))
|
||||
|
||||
y={} // para un stack de arreglos.
|
||||
x=0,{5,5}rand array(x)
|
||||
{x}push(y)
|
||||
add hash(h,"arreglo 1"::x)
|
||||
|
||||
{"Ojalá que llueva café en el campo"}strtoutf8,push(y)
|
||||
clear(x),w=0,{6,2}rand array(w)
|
||||
{w}push(y)
|
||||
add hash(h,"arreglo 2"::w)
|
||||
clear(w)
|
||||
add hash(h,"objeto",y)
|
||||
|
||||
println(hash(h))
|
||||
println("arreglo 2?\n")
|
||||
get value("arreglo 2",h)
|
||||
println
|
||||
println("arreglo 1?\n")
|
||||
get value("arreglo 1",h)
|
||||
println
|
||||
|
||||
/* NO PUEDES ORDENAR UN HASH QUE CONTENGA ARRAYS
|
||||
PORQUE SE BLOQUEARA EL PROGRAMA:
|
||||
sort hash(h)
|
||||
{"\nORDENADO: \n"}println
|
||||
println(hash(h)) */
|
||||
|
||||
println("Objeto?\n")
|
||||
get value("objeto",h)
|
||||
z=0,mov(z)
|
||||
/* Esto fallará, porque no se puede hacer un
|
||||
push de pushs*/
|
||||
pop(z),println
|
||||
pop(z),println
|
||||
pop(z),println
|
||||
{"Esto significa que no puedes meter un stack dentro de un hash\nsolo arrays de cualquier dimension"}println
|
||||
/* esto está bien, porque es un stack simple
|
||||
aunque contenga arreglos como elementos. */
|
||||
pop(y),println
|
||||
{"Dato en la última posición del stack:"}strtoutf8,{"\n"},[1:end,1:end]get(y),println
|
||||
{"Esto significa que, si vas a meter arreglos dentro de un stack\nsácalos con POP antes de usarlo"}strtoutf8,println
|
||||
pop(y),println
|
||||
pop(y),println
|
||||
|
||||
pause
|
||||
exit(0)
|
||||
|
|
@ -0,0 +1,51 @@
|
|||
/* macros HASH */
|
||||
#defn createhash(_X_) _X__KEY={#VOID},_X__HASH={#VOID}
|
||||
#synon createhash newhash
|
||||
#defn addhash(_X_,_K_,_H_) {_H_}push(_X__HASH),{_K_}push(_X__KEY)
|
||||
#defn getvalue(_X_,_Y_) _Y_03Rx0W91=0,{_X_,_Y__KEY},array(1),dup,zero?do{{"getvalue: key not found"}throw(2000)}\
|
||||
mov(_Y_03Rx0W91),[_Y_03Rx0W91]get(_Y__HASH),clearmark,
|
||||
#defn getkey(_X_,_Y_) _Y_03Rx0W91=0,{_X_,_Y__HASH},array(1),dup,zero?do{{"getkey: value not found"}throw(2001)}\
|
||||
mov(_Y_03Rx0W91),[_Y_03Rx0W91]get(_Y__KEY),clearmark,
|
||||
#defn modvalue(_K_,_H_,_X_) _Y_03Rx0W91=0,{_K_,_X__KEY},array(1),dup,zero?do{{"modvalue: key not found"}throw(2002)}\
|
||||
mov(_Y_03Rx0W91),[_Y_03Rx0W91]{_H_}put(_X__HASH),clearmark,
|
||||
#defn modkey(_H_,_K_,_X_) _Y_03Rx0W91=0,{_H_,_X__HASH},array(1),dup,zero?do{{"modkey: value not found"}throw(2003)}\
|
||||
mov(_Y_03Rx0W91),[_Y_03Rx0W91]{_K_}put(_X__KEY),clearmark,
|
||||
#defn putaftervalue(_H_,_K_,_V_,_X_) _X_03Rx0W91=0,{_H_,_X__HASH},array(1),dup,zero?do{{"putaftervalue: value not found"}throw(2006)}\
|
||||
plus(1),mov(_X_03Rx0W91),{_K_}{_X_03Rx0W91,_X__KEY}array(3),\
|
||||
{_V_}{_X_03Rx0W91,_X__HASH}array(3)
|
||||
#defn putvalue(_H_,_K_,_V_,_X_) _X_03Rx0W91=0,{_H_,_X__HASH},array(1),dup,zero?do{{"putvalue: value not found"}throw(2006)}\
|
||||
mov(_X_03Rx0W91),{_K_}{_X_03Rx0W91,_X__KEY}array(3),\
|
||||
{_V_}{_X_03Rx0W91,_X__HASH}array(3),
|
||||
#defn putafterkey(_H_,_K_,_V_,_X_) _X_03Rx0W91=0,{_H_,_X__KEY},array(1),dup,zero?do{{"putafterkey: key not found"}throw(2007)}\
|
||||
plus(1),mov(_X_03Rx0W91),{_K_}{_X_03Rx0W91,_X__KEY}array(3),\
|
||||
{_V_}{_X_03Rx0W91,_X__HASH}array(3),
|
||||
|
||||
#defn putkey(_H_,_K_,_V_,_X_) _X_03Rx0W91=0,{_H_,_X__KEY},array(1),dup,zero?do{{"putkey: value not found"}throw(2008)}\
|
||||
mov(_X_03Rx0W91),{_K_}{_X_03Rx0W91,_X__KEY}array(3),\
|
||||
{_V_}{_X_03Rx0W91,_X__HASH}array(3),
|
||||
|
||||
#defn delbyvalue(_H_,_X_) {_H_,_X__HASH},array(1),dup,zero?do{{"delbyvalue: value not found"}throw(2004)},\
|
||||
{_X__KEY},keep,array(4),{_X__HASH},array(4),clearstack
|
||||
|
||||
#defn delbykey(_K_,_X_) {_K_,_X__KEY},array(1),dup,zero?do{{"delbykey: key not found"}throw(2005)},\
|
||||
{_X__KEY},keep,array(4),{_X__HASH},array(4),clearstack
|
||||
|
||||
#defn sorthash(_X_) #RAND,_LEN_#RNDV=0,_DUP_H#RNDV=_X__HASH,_DUP_K#RNDV=_X__KEY,\
|
||||
{_X__KEY}keep,length,mov(_LEN_#RNDV),array(0),\
|
||||
_POS_#RNDV=0,_HASH_LOOP_#RNDV:,[_LEN_#RNDV]get(_X__KEY),{_DUP_K#RNDV}array(1),\
|
||||
mov(_POS_#RNDV),[_POS_#RNDV]get(_DUP_H#RNDV),[_LEN_#RNDV]put(_X__HASH),\
|
||||
--_LEN_#RNDV,{_LEN_#RNDV},jnz(_HASH_LOOP_#RNDV),clear(_DUP_H#RNDV),clear(_DUP_K#RNDV)
|
||||
|
||||
#defn lenhash(_X_) {_X__HASH}length,
|
||||
#defn hash(_X_) #RAND,_TMP_#RNDV=0,{_X__HASH,_X__KEY}catcol(_TMP_#RNDV),{_TMP_#RNDV},clear(_TMP_#RNDV),
|
||||
|
||||
/* Other... */
|
||||
/* TRY/CATCH */
|
||||
#defn try swtrap( #CATCH ),
|
||||
#defn raise(_ERR_,_M_) {_M_}, throw(_ERR_),
|
||||
#defn catch(_X_) jmp(#ENDCATCH), %CATCH:, clearstack,_X_=0, gettry(_X_), // gettry hace poptry internamente?
|
||||
#defn finish %ENDCATCH:, popcatch
|
||||
|
||||
/* print... */
|
||||
#defn println(_X_) #ATOM #CMPLX,{"\n"} print
|
||||
#define println {"\n"}print
|
||||
Loading…
Add table
Add a link
Reference in a new issue