Софтуерно Инженерство
Loading...
+ Нов въпрос
g_todorov avatar g_todorov 98 Точки

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");
            }
        }
    }
}

 

Тагове:
g_todorov avatar g_todorov 98 Точки

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

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

 

2-stanchev1

0
g_todorov avatar g_todorov 98 Точки

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

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

2 - ambiorix

0
g_todorov avatar g_todorov 98 Точки

Здравейте,

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

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

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

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

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

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

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

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

 

0