Task

Using two Arrays of equal length, create a Hash object
where the elements from one array (the keys) are linked
to the elements of the other (the values)



Related task

   Associative arrays/Creation


 
#!/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)
 