Как напечатать треугольник, используя одну переменную и в одном цикле? - PullRequest
2 голосов
/ 09 июля 2010

Коллега попросил меня напечатать треугольник (любой формы), используя одну переменную и одну петлю. Я делаю это так:

Program.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Triangle
{
    class Program
    {
        static void Main(string[] args)
        {

            var triangle = "*";
            do { Console.WriteLine(triangle); }
            while ((triangle += "*").Length < 10);

            Console.ReadLine();
        }
    }
}

Я надеюсь, что должен быть лучший способ сделать это. Вы знаете один?

EDIT:

Тим, спросите меня, как насчет печати треугольника без использования переменной и цикла. Ой! Я думал и все еще думаю :) ты знаете, как это можно сделать?

Ответы [ 5 ]

2 голосов
/ 09 июля 2010

Параметры считаются переменными?

Console.WriteLine(
    Enumerable.Range(2, 9)
              .Aggregate("*", (s, i) => s + Environment.NewLine + new string('*', i)));
1 голос
/ 09 июля 2010

Используйте Recursion для устранения циклов - вам все еще нужна переменная.

OTTOMH (плюс еще не закодировал C # в течение более 7 лет)

bool PrintLine(int NumStars)
{
 Console.WriteLine(space(NumStars).Replace (" ", "*"));
 if (NumStars < 20)
  PrintLine (NumStars);
}
1 голос
/ 09 июля 2010

Мне нравится ваше решение, зачем вам лучше?

Лично я бы вместо этого использовал цикл while:

        var triangle = "";
        while ((triangle += "*").Length < 10)
            Console.WriteLine(triangle);

Но это мало что меняет.

0 голосов
/ 09 июля 2010

Без цикла, без переменной (вы поняли)

Console.WriteLine("*");
Console.WriteLine("**");
Console.WriteLine("***");
Console.WriteLine("****");
Console.WriteLine("*****");

Соответствует требованиям.;)

0 голосов
/ 09 июля 2010
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...