[Solved] Drawing the letter “M” in the console using C#


check out the .Net Fiddle link below, this is a general solution for any letter or letters, I forked it to work with letters as the original author designed it to work with images, try with the variables M, 100

https://dotnetfiddle.net/DEY9il

output would be somthing like the below:-

Enter the letter?M
Enter Line Character Amount100

 ###################################################################################################
 ###################################################################################################
 ###################################################################################################
 ####  .#######*  ##################################################################################
 ####   @######   ##################################################################################
 ####   .#####* . ##################################################################################
 ####  + %#### +  ##################################################################################
 ####  # -###+ #  ##################################################################################
 ####  #: ### :#  ##################################################################################
 ####  ## .#w ##. ##################################################################################
 ####  ##: @ *##. ##################################################################################
 ####  ##@ , @##  ##################################################################################
 ####  ###, ,###. ##################################################################################
 ###################################################################################################
 ###################################################################################################
 ###################################################################################################
 ###################################################################################################
 ###################################################################################################

you can tweak it to print only the characters you want.

There is a million ways to do this, but this is another was that uses functions, by breaking M to four lines, and drawing for that.

using System;
using System.Collections.Generic;                   
public class Program
{
    static List<List<string>> board;
    public static void Main()
    {
        Console.WriteLine("Enter Width:");
        var width=ReadWidth();
        var emptyText="-";
        var fillText="*";

        board=new List<List<string>>();

        //for M we will use 4 points each with a width of [width]
        Func<int,int,bool> p1=(row,col)=>{ 
                        int startX=width-1-row;
                        return (col>startX && col<=(startX+width));
                    };
        Func<int,int,bool> p2=(row,col)=>{ 
                        int startX=width-1+row;
                        return (col>startX && col<=(startX+width));
                    };
        Func<int,int,bool> p3=(row,col)=>{ 
                        int startX=(3*width)-1-row;
                        return (col>startX && col<=(startX+width));
                    };
        Func<int,int,bool> p4=(row,col)=>{ 
                        int startX=(3*width)-1+row;
                        return (col>startX && col<=(startX+width));
                    };



        for(int row=0;row<=width;row++)
        {
            var rowChars=new List<string>();
            for(int col=0;col<(width*5);col++)
                rowChars.Add((p1(row,col) || p2(row,col) || p3(row,col) || p4(row,col))?fillText:emptyText);
            board.Add(rowChars);
        }
        ShowOutput();
    }
    public static int ReadWidth()
    {
    Console.WriteLine("Enter Width (odd number beteween 2< Input < 1000):");
        var widthString=Console.ReadLine();
        int width=0;
        if(!int.TryParse(widthString,out width) || width<2 || width >1000)
        {
        Console.WriteLine("The value entered is not accepted, please try again.");
            ReadWidth();
        }
        return width;
    }
    public static void ShowOutput()
    {
        var sb=new System.Text.StringBuilder();
        foreach(List<string> row in board)
            sb.AppendLine(string.Join("",row.ToArray()));

        Console.Write(sb.ToString());
    }
}

for Input of 10, the output is as below:-

Enter Width:
Enter Width (odd number beteween 2< Input < 1000):
10
----------**********----------**********----------
---------************--------************---------
--------**************------**************--------
-------****************----****************-------
------******************--******************------
-----****************************************-----
----**********--******************--**********----
---**********----****************----**********---
--**********------**************------**********--
-**********--------************--------**********-
**********----------**********----------**********

solved Drawing the letter “M” in the console using C#