Loading...
g_todorov avatar g_todorov 106 Точки

13. Point in the Figure - "Complex-conditions" покана за най-оптимален и най-разбираем код

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

тази задача се оказа много интересна и интригуваща не само за мен, но и за много други. Тъй като видях много предложени решения, много споделени трудности в предишен пост, реших  да Ви предложа да постнем тук всички абсолютно верни решения  и да изберем 2 от тях - едно най-оптимално (най-кратък код) и едно решение - най-разбираем код. Тази идея ми дойде спонтанно, тъй като се замислих, че често пъти най-краткият код не е толкова разбираем, а най-разбираемият хич не е толкова кратък. Вероятно тия мисли и проблеми касаят само такива като мен, начинаещи, но все пак ще е интересно. Защо да не си направим едно гласуване за тези 2 приза :) - хем ще е забавно, хем ще огледаме отново задачата и ще я затвърдим и същевременно ще приложим пряка демокрация :) Предлагам Ви с коментарче да присъдите:

 1-ца и nickName-ът на публикувалият  най-разбираем според Вас код, 

 и 2-ка и nickName-ът на публикувалият  най-кратък според Вас код.

Всеки, който участва с код, има право на по  1 глас във всяка отделна категория (общо 2 гласа), но не и двата в една и съща категория.         Краен скрок за гласуване тук, в тоя пост, 8:00 PM (утре вечер) Надявам се всеки да помогне в безпристрастното отчитане на гласовете :)))

ето и моят код:

 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace PointInTheFigure
{
    class Program
    {
        static void Main(string[] args)
        {
            var h = int.Parse(Console.ReadLine());
            var x = int.Parse(Console.ReadLine());
            var y = int.Parse(Console.ReadLine());

            //First Rectangle's Coordinates:
            var x1 = 0;
            var y1 = 0;
            var x2 = 3 * h;
            var y2 = 1 * h;

            //Second Rectangle's Coordinates:
            var x3 = 1 * h;
            var y3 = 1 * h;
            var x4 = 2 * h;
            var y4 = 4 * h;

            //Internal Border's Coordinates For The Rectangles:
            var x5 = 1 * h;
            var y5 = 1 * h;
            var x6 = 2 * h;
            //Borders of The Lower Rectangle:
            var onLeftSide1 = ((x == x1) && (y >= y1 && y <= y2));
            var onRightSide1 = ((x == x2) && (y >= y1 && y <= y2));
            var onBottom1 = ((y == y1) && (x >= x1 && x <= x2));
            var onTopLeft1 = ((y == y2) && (x >= x1 && x <= x3));
            var onTopRight1 = ((y == y2) && (x >= x4 && x <= x2));

            //Borders of The Upper Rectangle Without Internal Border:
            var onLeftSide2 = ((x == x3) && (y >= y3 && y <= y4));
            var onRightSide2 = ((x == x4) && (y >= y3 && y <= y4));
            var onTop2 = ((y == y4) && (x >= x3 && x <= x4));

 

            var internalBorder = ((y == y5) && (x > x5) && (x < x6));

            var insideRectang1 = ((x > x1) && (x < x2) && (y > y1) && (y < y2));

            var insideRectang2 = ((x > x3) && (x < x4) && (y > y3) && (y < y4));

            if (internalBorder || insideRectang1 || insideRectang2)
            {
                Console.WriteLine("inside");
            }
            else if (onLeftSide1 || onRightSide1 || onBottom1 || onTopLeft1 || onTopRight1 || onLeftSide2 || onRightSide2 || onTop2)
            {
                Console.WriteLine("border");
            }
            else
            {
                Console.WriteLine("outside");
            }
        }
    }
}

 

Тагове:
0
Programming Basics
g_todorov avatar g_todorov 106 Точки

Найстина е кратко!

Фаворит си ми за кратко решение :)

 

2-stanchev1

0
g_todorov avatar g_todorov 106 Точки

Интересна идея с мн. разбираемо решение!

Давам вота си за теб в първата категория :)

2 - ambiorix

0
g_todorov avatar g_todorov 106 Точки

Здравейте,

времето изтече и обявявам резултатите от забавното, но същевременно много 

полезно постване и гласуване в категории най-кратък код и най-разбираем код на 

задача от домашно по основи на програмиране. 

В 1-ва категория "най-разбираем код" с 1 глас печели  ambiorix ;

в категория 2 "най-кратък код" с 1 глас печели stanchev1;

На участвалите изказвам благодарност за отделеното време, за усилията по оптимизиране на кодовете, за желанието да се включат в идеята. Сигурен съм, че след време нашите постове ще помогнат на други

ентусиасти начинаещи в програмирането да разберат задачата, да изкодят дори по-добри решения ако е възможно.  Мисля, че идеята колкото е забавна е дори повече полезна и ако се превърне в практика за задачите от домашните маркирани със звезда ще е мотивационен инструмент за доусъвършенстване на сорс-кодовете. В тоя ред на мисли (ако ви е интересно и сте съгласни) е нужно да измислим кратко и "говорящо" заглавие тип "опашка",  което да добавяме в заглавието на постовете от тоя род в бъдеще, така, че да са разпознаваеми и да се знае замисъла им,  Ако Ви харесва тая идея на всички които четат тоя пост  предложете Вие такова заглавие тип "опашка" и с 1 ред опишете защо.

Ето и моето преложение и примерно такова заглавие: 13. Point in the Figure - "Complex-conditions" (Code election)

 

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