Софтуерно Инженерство
Loading...
Pilgrimage avatar Pilgrimage 515 Точки

[Homework] Programming Basics - Drawing with Loops - Problem 10 - Diamond

Здравейте колеги,

Написах едно малко по-различно решение на задачата с прословутият диамант, което си минава всички тестове в Judge.

http://pastebin.com/2P6iv5MP

Но понеже ме хвана крастата wink, някой може ли да ми даде идея за още някакви оптимизации.

Предварително благодаря!

Тагове:
0
Programming Basics
elitsarangelova avatar elitsarangelova 2 Точки

Аз не знам как може да стане без for цикъл. Не е много късо, но е доста разбираемо.

http://pastebin.com/JUBJa2JA . Надявам се да ти помогне :)

0
18/07/2016 12:29:04
Pilgrimage avatar Pilgrimage 515 Точки

Има една интересна хрумка.
Не знам дали ще успея да съчетая нещата... но се опитвам да го направя само с един for цикъл.

Благодаря! :-)

0
ZornitsaSerbezova avatar ZornitsaSerbezova 454 Точки

Интересно ми е как ще го направиш с един фор цикъл. Според мен, не може, защото имаш две различни части за рисуване.

0
Pilgrimage avatar Pilgrimage 515 Точки

Двете части се чертаят с един цикъл, хвърли поглед върху решението ми.
Костилката е в съчетаването на  четните и нечетни фигури в един алгоритъм.
След половин час гледане и умуване снощи, реших, че дори и да може да стане с един цикъл, ще е претрупан с проверки и цялата красота на решението ще изчезне. И се отказах да го мъча.
Но може да се опитам, колкото за идеята. :-)

0
ZornitsaSerbezova avatar ZornitsaSerbezova 454 Точки

Е, аз го видях решението ти, но то е с два фор цикъла..

2
Pilgrimage avatar Pilgrimage 515 Точки

Да, с два е, но всеки цикъл е предназначен да изрисува цялата фигура, съответно за четните или нечетните стойности на N.
При четните всичко е в цикъла, а при нечетните съм добавил отвън Write за първия и последния ред.

0
VanessaShopping avatar VanessaShopping 48 Точки

Може и без цикли :D

Разбираш от някъде какви са всички N в Judge-a и почваш с If-ove , Console.Write и Console.Writeline :D

0
Pilgrimage avatar Pilgrimage 515 Точки

Вярно! :-)
А ако не искаш да разчиташ на вътрешна информация - дефинираш си една матрица за максималното N (в случая 100) и после правиш логика за извеждане на подмножество от нея към конзолата... :-)
Интересна логическа задача, типично в програмистки стил - с гъдел и с отчайващо съотношение (вложени усилия и време/практически резултат).
Judge системата едва ли ще го оцени... ако не го резне по памет или тайм-аут :-)

1
Pilgrimage avatar Pilgrimage 515 Точки

Ето решение на задачата само с един цикъл :
http://pastebin.com/QNfygKmp

Тромаво е, и ми е грозно, ама все пак взима 100 точки в Judge.
Сигурно може да се поошлайфа, ама вече съм уморен. :-)

0
ZornitsaSerbezova avatar ZornitsaSerbezova 454 Точки

Колега, то това решение е два пъти по-дълго от моето.

Няма никакъв смисъл да търсиш подобни решения. Даже напротив. Хубавият код е оптимизираният и кратък код. Ако имаш много свободно време, по-добре решавай други задачи :)

Като гледам до тук, май моето решение е най-кратко :)

http://pastebin.com/bU9XSfAZ

0
19/07/2016 08:24:25
Pilgrimage avatar Pilgrimage 515 Точки

Несъмнено!
Както казах, това беше за спорта. :-)
А твоят код наистина е хубав! :-)

0
ZornitsaSerbezova avatar ZornitsaSerbezova 454 Точки

Да, разбрах. То на практика всничко може да се напише по всеки начин... Както каза колегата по-горе, може и без фор цикъл :)

0
Pilgrimage avatar Pilgrimage 515 Точки

Здравей,

Надявам се, да нямаш нищо против, ама вместих твоето решение в един цикъл.

http://pastebin.com/pSk1FcML

Вече е максимално кратко и елегантно! :-)
Поздрави! :-)

0
ZornitsaSerbezova avatar ZornitsaSerbezova 454 Точки

Хаха, разбира се, че нямам нищо против! Даже напротив! Браво! :)

0