26 May 2007

Asterisk Patterns

by mo


So in class this week were given the following problem to solve:

“Write an application that displays the following patterns separately, one below the other. Use for loops to generate the patterns. All asterisks () should be printed by a single statement of the form Console.Write( “” ); which causes the asterisks to print side by side. A statement of the form Console.WriteLine(); can be used to move to the next line. A statement of the form Console.Write( “ “ ); can be used to display a space for the last two patterns. There should be no other output statements in the application. [Hint: the last two patterns require that each line begin with an appropriate number of blank spaces.]”

Here is my solution:

    public static void Main() 
    {
        OutputAC(delegate(Int32 xAxis, Int32 i) { return ( xAxis < i + 1 ); } );
        OutputBD(delegate(Int32 xAxis, Int32 i) { return ( xAxis < i ); } );
        OutputAC(delegate(Int32 xAxis, Int32 i) { return ( xAxis > = i ); } );
        OutputBD(delegate(Int32 xAxis, Int32 i) { return ( i <= xAxis + 1 ); } );
        Console.ReadLine();
    }

    private delegate Boolean CheckCondition(Int32 xAxis, Int32 charactersPerRow);

    private static void OutputAC(CheckCondition condition) 
    {
        Int32 charactersPerRow = 0;
        // loop through the y axis from row 0 to 10
        for ( int yAxis = 0; yAxis < 10; yAxis++ ) 
        {
            // loop through x axis from column 0 to 10 for each row.
            for ( int xAxis = 0; xAxis < 10; xAxis++ ) 
            {
                // write the character for the current position
                Console.Write( condition( xAxis, charactersPerRow ) ? "*" : " " );
            }
            ++charactersPerRow;
            Console.WriteLine( );
        }
    }

    private static void OutputBD( CheckCondition condition ) 
    {
        Int32 charactersPerRow = 10;
        for ( int yAxis = 0; yAxis < 10; yAxis++ ) 
        {
            for ( int xAxis = 0; xAxis < 10; xAxis++ ) 
            {
                Console.Write( condition( xAxis, charactersPerRow ) ? "*" : " " );
            }
            --charactersPerRow;
            Console.WriteLine( );
        }
    }

Assignment1.zip (5.62 KB)

csharp