#!/bin/bash
let "rest = $# % 2"

sha(){
  echo -n "$1$2" | sha1sum | cut -c1-40 | tr [a-z] [A-Z]
}

nodeize(){
  let "rest = $# % 2"
  leafs=("$@")
  nodes=()

  let "size = $# - reste"
  j=-1
  for (( i = 0; i < size - 1; i = i + 2 )); do
    let j++
    nodes[j]=`sha ${leafs[$i]} ${leafs[$i + 1]}`
  done

  if [[ rest -gt 0 ]]; then
    let j++
    nodes[j]="${leafs[size - 1]}"
  fi

  if [[ ${#nodes[@]} -le 1 ]]; then
    echo -n ${nodes[*]}
  else
    echo -n `nodeize ${nodes[@]}`
  fi
}

echo `nodeize $@`
