[Programming Basics] 01. X задача
Никога не ме е бивало в тея рисунки и се заинатих да я реша тая задача сам. Подозирам, че съм написал поне 2 пъти повече код отколкото е необходимо. 100/100 е, но бих се радвал да дадете съвети, мнения, решения и тн. Кои неща са ми излишни?
Задачата с рисуването на C# Baisics изпита е единствената която не можах да реша или по-скоро не ми стигна времето да мисля сложната си логика :D за това искам да го оправя това.
Опа, пейстнах го точно и нещо съм се разсеял - редактирах го!
Супер.
От към логика, задачата си е решена "по учебник".
Имаш три "шаблона" - първият е свиването на хиксчетата едно към друго от най-раздалечени до един до друг. Вторият е хиксче в средата и третият е огледален на първия шаблон.
Това, което виждам като проблем в логиката е една излишна гимнастика кога да се break-не цикъла. Първо - нямаш нужда да рисуваш първия и последния ред по отделно.
Първия ред е съставен от 0(нула) празни пространства от ляво и от дясно (тези от дясно нямат значение, не знам защо ги рисуваш); две хиксчета и останалото между двете хиксчета - празни пространства. Колко са тези пространства между двете хиксчета? Ами ако приемем, че всички символи на реда са N (колкото е входа), то без двете хиксчета - пространствата по средата са N-броя_хиксчета=N-2
Та, аз по-скоро бих подходил така:
1. Нека празните пространства от ляво първоначално са НУЛА
2. Нека празните пространства между хиксчетата първоначално са N-2
3. Цикъл за първата половина - т.е. от 0 до половината от N (N/2). За всяко завъртане:
3.1. Изпринтирай празни пространства от ляво, хиксче, празни пространства по средата, хиксче
3.2. Намали тези в средата с две
3.3. Увеличи тези от ляво с едно
Тук ти си подходил по същия начин. Това, което ти "вдига" редовете код е принтирането на отделните компоненти с отделни Console.Write-ове. Учил ли си placeholders?
4. Изпринтирай статичния ред с хиксче в средата (n/2 спейсове и хиксче) като при теб.
5. Цикъл за втората половина (0 ... N/2). За всяко завъртане:
5.1. Върни обратно състоянието на броячите - увеличи пространствата по средата с 2 (за да се раздалечи десния хикс)
5.2. Намали външните пространства с едно (за да се раздалечи и левия хикс)
5.3. Изпринтирай празни пространства от ляво, хиксче, празни пространства по средата, хиксче
Накрая ще се случи нещо такова: https://pastebin.com/QxeMn6hZ