Ничего Хорошего Молотов Коктейль (Nothing Good — Molotov)

Запретили песенку на территории ГОРФ, ублюдки сраные из роскомговна. По поводу нам скидывали интервью Барта, фронтмена группы «Ничего хорошего», но оно безблагодатно проебано куда-то, тяжко иметь 40+ аккаунтов в соцсетях, и потом разобраться, где с кем переписывался.

Прямая ссылка: https://www.youtube.com/watch?v=RLV53ix4GVM

Текст

Под катом

C#, добавление лидирующих нолей к строковому представлению числа, более оптимальный способ.

Преамбула

Здесь (копия) я показал довольно неоптимальный способ решения данной задачи, но его можно оптимизировать с помощью стандартных функций. Напомню суть задачи: даны числа, скажем, от 1 до 1000, необходимо вывести их на экран или в файл последовательно, добавив лидирующие ноли, исходя из максимального числа. Если максимум 1000, то числа должны быть выведены так:
0001
0002
0003
...
0100
0101
0102
...
1000

Если максимум 100, то:

001
002
...
099
100

Подготовка

Как и в предыдущей версии решения, понадобится задать максимальное число (в тестовых примерах опять же, зададим его статически), например:

int maxnum = 150;

И опять же, понадобится функция, вычисляющая количество цифр (разрядов) числа (копия). Например, такая:

static int CountDigitsRec(int n)
{
    n = (int)Math.Abs(n);
    if (n <= 9)
    {
        return 1;
    }
    else
    {
        return CountDigitsRec(n / 10) + 1;
    }
}

Форматирование строки

C# автоматически умеет форматировать строки, используя специальные паттерны описания формата, задаваемые в виде строки. Основные паттерны перечислены в таблице ниже:

C / c Задает формат денежной единицы, указывает количество десятичных разрядов после запятой
D / d Целочисленный формат, указывает минимальное количество цифр
E / e Экспоненциальное представление числа, указывает количество десятичных разрядов после запятой
F / f Формат дробных чисел с фиксированной точкой, указывает количество десятичных разрядов после запятой
G / g Задает более короткий из двух форматов: F или E
N / n Также задает формат дробных чисел с фиксированной точкой, определяет количество разрядов после запятой
P / p Задает отображения знака процентов рядом с число, указывает количество десятичных разрядов после запятой
X / x Шестнадцатеричный формат числа

Для форматирования строки, содержащей целое число, необходимо использовать паттерн d.

Форматирование во время вывода строки на консоль.

Отформатировать строку можно сразу во время вывода на консоль, функцией Console.Write()/Console.WriteLine():

int num = 125
Console.Write ("0:d4", num) //вывод: 0125

или

int num = 25
Console.Write ("0:d4", num) //вывод: 0025

Пример:

static void Main(string[] args)
{
    int maxnum = 150;
    string FormatPattern = "{0:d" + 
        CountDigitsRec(maxnum).ToString() + "}";

    for (int i = 0; i <= maxnum; i++)
    {
        Console.WriteLine(FormatPattern, i);
    }

    Console.WriteLine("Press Enter...");
    Console.ReadLine();
}

Пример на GitHub

Использование String.Format()

Функция String.Format() может сделать аналогичную операцию, но отличается тем, что вывод функции можно сохранить в строковую переменную и использовать далее, а не просто вывести на консоль.

Пример:

static void Main(string[] args)
{
    int maxnum = 1150;
    string FormatPattern = "{0:d" +
        CountDigitsRec(maxnum).ToString() + "}";
    string TempFile = Path.GetTempFileName();
    string Result = "";
    List<string> WriteList = new List<string>();

    for (int i = 0; i <= maxnum; i++)
    {
        Result = String.Format(FormatPattern,i);
        Console.WriteLine(Result);
        WriteList.Add(Result);
    }

    File.WriteAllLines(TempFile, WriteList.ToArray());

    Console.WriteLine("Test file: " + TempFile);
    Console.WriteLine("Press Enter...");
    Console.ReadLine();
}

В цикле результат работы функции String.Format() возвращается в переменную Result, значение которой выводится на консоль и сохраняется в List<string> WriteList для дальнейшей записи в файл.

Пример на GitHub

Примечание: в источнике есть еще варианты форматирования строк, ознакомьтесь.

Источник

Форматирование и интерполяция строк (копия на mega.nz, PDF)

Проклятый старый комп (еще одна пародия на КиШ)

В локальной сети
Стоит старинный комп,
Закрыт весь доступ,
Пароль висит большой на нем.

Сказать я пытался
Троянов нет на компе,
Но тут же раздался,
Ужасный голос в винде

Голос в Винде…
[Визг свиньи Касперского]

Мне больно видеть Интернет,
Скорей бы отключить вас всех.
Я очень много много лет
Мечтаю о крутом компе

Мне слишком тесно на XP
И я мечтаю об одном,
Скорей пароль свой поломать,
Проникнуть в какдый каждый комп!

Будь проклят каждый комп!

Был вирус в БИОС,
Крутой и жутко злой
Админ не понял
Как комп спасти от заразы той.

Админы не стали
Тогда харддиск форматить
Пароли поставив, решили пива попить,
И забухали…

Мне больно видеть Интернет,
Скорей бы отключить вас всех.
Я очень много много лет
Мечтаю о крутом компе

Мне слишком тесно на XP
И я мечтаю об одном,
Скорей пароль свой поломать,
Проникнуть в какдый каждый комп!

Будь проклят каждый комп!

И это место стороной
Обходит нетский люд,
И антивирусы твердят —
Там вирусы живут!