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 455 Точки

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

0
Pilgrimage avatar Pilgrimage 515 Точки

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

0
ZornitsaSerbezova avatar ZornitsaSerbezova 455 Точки

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

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 455 Точки

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

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

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

http://pastebin.com/bU9XSfAZ

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

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

0
ZornitsaSerbezova avatar ZornitsaSerbezova 455 Точки

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

0
Pilgrimage avatar Pilgrimage 515 Точки

Здравей,

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

http://pastebin.com/pSk1FcML

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

0
ZornitsaSerbezova avatar ZornitsaSerbezova 455 Точки

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

0
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.