Return Styles: Pseud0ch, Terminal, Valhalla, NES, Geocities, Blue Moon. Entire thread

/prog/ Challenge -- Hydrocarbons [Heroic]

Name: Anonymous 2010-08-08 17:50

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


Good Luck!

Name: Anonymous 2010-08-09 0:09

Fuck your ball-and-stick model.

#!/bin/bash

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

Newer Posts
Don't change these.
Name: Email:
Entire Thread Thread List