Create a Hash
Create a Hash
You are encouraged to solve this task according to the task description, using any language you may know.
You are encouraged to solve this task according to the task description, using any language you may know.
Create a Hash object that links keys to values and returns a pre-specified element when a key is unknown.
Maintenance
C++
Compiler: g++ 4.0.2
#include <map> int main( int argc, char* argv[] ) { std::map< std::string, std::string > hash ; hash[ "key-1" ] = "val1" ; }
C#
Defining a Hash
System.Collections.HashTable h = new System.Collections.HashTable();
Adding values
h.add( "key1" , "foo" ); h.add( "key2" , "bar" );
or
h["key1"] = "foo"; h["key2"] = "bar";
Hash in .NET 2.0
Dictionary<string, string> hash = new Dictionary<string,string>(); hash.Add( "key1", "foo" );
or
Dictionary<string, string> hash = new Dictionary<string,string>(); hash[ "key1" ] = "foo";
ColdFusion
<cfset myHash = structNew()> <cfset myHash.key1 = "foo"> <cfset myHash["key2"] = "bar"> <cfset myHash.put("key3","java-style")>
In ColdFusion, a map is literally a java.util.HashMap, thus the above 3rd method is possible.
Common Lisp
(setf my-hash (make-hash-table)) (setf (gethash "H2O" my-hash) "Water") (setf (gethash "HCl" my-hash) "Hydrochloric Acid") (setf (gethash "CO" my-hash) "Carbon Monoxide")
Perl
Interpeter: Perl
Defining a Hash
# using => key does not need to be quoted unless it contains special chars my %hash = ( key1 => 'val1', 'key-2' => 2, three => -238.83, 4 => 'val3', ); # using , both key and value need to be quoted if containing something non-numeric in nature my %hash = ( 'key1', 'val1', 'key-2', 2, 'three', -238.83, 4, 'val3', );
Defining a HashRef
my $hashref = { key1 => 'val1', 'key-2' => 2, three => -238.83, 4 => 'val3', }
Using a Hash
print $hash{'key1'}; $hash{'key1'} = 'val1'; @hash{'key1', 'three'} = ('val1', -238.83);
Using a HashRef
print $hash->{'key1'}; $hash->{'key1'} = 'val1'; @hash->{'key1', 'three'} = ('val1', -238.83);
Python
Hashes are a built-in type called dictionaries (or mappings) in Python.
hash = dict() # 'dict' is the dictionary type. hash = dict(red="FF0000", green="00FF00", blue="0000FF") hash = { 'key1':1, 'key2':2, } value = hash[key]
Numerous methods exist for the mapping type http://docs.python.org/lib/typesmapping.html
Ruby
#a hash object that returns nil for unknown keys hash={} hash[666]='devil' hash[777] # => nil hash[666] # => 'devil'
#a hash object that returns 'unknown key' for unknown keys hash=Hash.new('unknown key') hash[666]='devil' hash[777] # => 'unknown key' hash[666] # => 'devil'
#a hash object that returns "unknown key #{key}" for unknown keys hash=Hash.new{|h,k|h[k]="unknown key #{k}"} hash[666]='devil' hash[777] # => 'unknown key 777' hash[666] # => 'devil'
SmallTalk
"Tested with Dolphin Smalltalk" states := Dictionary new. states at: 'MI' put: 'Michigan'. states at: 'MN' put: 'Minnesota'.
Lua
Lua tables are Hashes
hash = {} hash[ "key-1" ] = "val1" hash[ "key-2" ] = 1 hash[ "key-3" ] = {}
Returns nil on unknown key.