The challenge: Develop a program that takes in the notation of a hydrocarbon in standard form, and outputs a correct ball-and-stick graphical representation of that hydrocarbon.
The Deadline: 2010-08-30 20:00
Your implementation will be judged based on the following guidelines:
1. Accuracy
2. Consistency
3. Run time
4. Clarity of output
5. Code readability
6. Overall functionality
if [ -z $(type -t seq) ]; then
seq()
{
local i
i=1
while [ $i -lt $1 ]; do
echo $i
let i++
done
echo $1
}
fi
flat_model()
{
local i
echo -n " "
for i in `seq $1`; do echo -n " H"; done
echo -en "\n "
for i in `seq $1`; do echo -n " |"; done
echo -en "\nH"
for i in `seq $1`; do echo -n "--C"; done
echo -en "--H\n "
for i in `seq $1`; do echo -n " |"; done
echo -en "\n "
for i in `seq $1`; do echo -n " H"; done
echo
}
display_flat()
{
REGEX="^C([0-9]+)H([0-9]+)$"
if [[ $1 =~ $REGEX ]]; then
CARBON=${BASH_REMATCH[1]}
HYDROGEN=${BASH_REMATCH[2]}
let EXPECTED_HYDROGEN=$CARBON*2+2
if [[ $EXPECTED_HYDROGEN != $HYDROGEN ]]; then
echo -e "Unexpected number of hydrogen atoms: \033[1m$1\033[0m" &2>1
return
fi
flat_model $CARBON
else
echo -e "Input is not a hydrocarbon: \033[1m$1\033[0m" &2>1
return
fi
}
if [ $# -lt 1 ]; then
echo "Usage: $0 C2H6" &2>1
exit 1
fi
while [ 1 ]; do
display_flat $1
shift
[ -z $1 ] && exit
done