Search
Write a publication
Pull to refresh
0
0
Виктор @v10k13

.NET Hobbyist developer

Send message

Добрый день, кажется стоило упомянуть в более простом виде, что ZBrush обладает отличным от остальных программ встроенным движком рендеринга превью модели, что позволяет ему без каких-либо последствий загружать модели на 20 миллионов полигонов, когда тот же Blender уже при 1 миллионе будет показывать слайд шоу в скульптинге.

Смотря что ты называешь "не кривой" подсветкой. Подсветка кода такая-же как и в Discord\Telegram. Для каких-то мини примеров этого хватает, а большего и не надо. Очевидно что в силу специфики приложения нельзя ожидать что уровень будет как у IDE-шек по типу VS.

Очень много интересных рекомендаций, может это уже и не очень необходимо, все же постараюсь дать пару рекомендаций по коду

Во первых формула про которую так много говорили, думаю стоит дать пояснение того как её лучше реализовать, в скрытом тексте будет детальное пояснение и реализация в конце:

Формула

Сначала определимся, что наши исходные данные это таблица которая по длине и ширине не превосходит 9 т.к. иначе будет невозможно однозначно расшифровать результат после сцепления чисел
Обратим внимание, что при делении целых значений в c# остаток отбрасывается, этот факт нам пригодиться
Далее по решению буду считать что нумерация колонок начинается с 0
Итак, наш выход это число вида AB = 10 * A + B, где A - строка и B - колонка таблицы
Далее из нашего символа вычтем начало алфавита (большое а для кода в вашем решении)
Так как в нашей таблице определенное число колонок, а элементы расположены друг за другом в виде:

0 1 2 3 4
5 6 7 8 9
...

Не сложно заметить что номер нашей колонки равен остатку от деления на количество колонок:

0 1 2 3 4
0 1 2 3 4
...

Отлично, мы знаем как получить B теперь давайте посмотрим на строки
Каждая строка начинается с числа кратного числу колонок, из чего не трудно заметить что мы можем разделить наш символ на длину строки чтобы получить строку то есть А

Теперь вспоминаем что мы начинали с нуля, поэтому к A и B теперь нужно добавить по 1 чтобы не нарушалась оригинальная индексация

В результате получим:
A = (символ - начало алфавита) / длина строки + 1
B = (символ - начало алфавита) % длина строки + 1

(uint, uint) CalculateCharecterCode(char Symbol, char AlphabetBegin = 'A', int RowSize = 5) {
  uint Column = (Symbol - AlphabetBegin) % RowSize + 1;
  uint Row = (Symbol - AlphabetBegin) / RowSize + 1;
  return (Row, Column);
}

Обратную формулу оставлю на вас

Далее скажу по поводу метода считывания текста, несмотря на то что сама идея мне не совсем понятна, попробую дате рекомендации:

  1. Не стоит разделять текст на слова, воспользуйтесь методом streamReader.ReadToEnd() чтобы получить весь текст.

  2. Используйте цикл того чтобы пройти по всем символам, вы можете использовать break при встрече * чтобы не перебирать текст дальше

  3. Для того чтобы определять какие символы вам не нужно шифровать вы можете использовать реализованную в С# коллекцию HashSet<T>. Ссылочка:
    https://learn.microsoft.com/ru-ru/dotnet/api/system.collections.generic.hashset-1?view=net-7.0

Я также заметил что в комментариях прозвучала проблема о размере таблицы. Сразу скажу что идея использования большой таблицы в методе шифрования времен древней Греции бесполезна. Изначально метод предназначен для шифрования ограниченного числа последовательно идущих символов переиначивать используя словари бесполезно.

Далее касательно капслока. У объекта строки есть специальный метод ToUpper() который переводит все символы строки в верхний регистр. Ссылочка:
https://learn.microsoft.com/ru-ru/dotnet/api/system.string.toupper?view=net-7.0#system-string-toupper

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

Инфоцыгане 2023: Множественное наследование топ. Интерфейсы фу.

Конечно, с учётом того, какие теги стоят, можно простить некоторые огрехи, но обижать сильные фичи, по типу интерфейсов которые дают отличные возможности по созданию красивых абстракций и избавляют сообщество от неимоверно неприятных структур наследования, явно не стоит.

Не хочу обижать автора, но большинство критики в комментах оправдано, и вам бы стоило подредактировать статью чтобы не вводить в заблуждение. Возможно и оценки статьи поднимутся.

Information

Rating
Does not participate
Registered
Activity

Specialization

Software Developer, Game Developer
Intern
.NET
C#
C++
OOP
Git