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");
}
}
}
}
Интересна идея с мн. разбираемо решение!
Давам вота си за теб в първата категория :)
2 - ambiorix
Здравейте,
времето изтече и обявявам резултатите от забавното, но същевременно много
полезно постване и гласуване в категории най-кратък код и най-разбираем код на
задача от домашно по основи на програмиране.
В 1-ва категория "най-разбираем код" с 1 глас печели ambiorix ;
в категория 2 "най-кратък код" с 1 глас печели stanchev1;
На участвалите изказвам благодарност за отделеното време, за усилията по оптимизиране на кодовете, за желанието да се включат в идеята. Сигурен съм, че след време нашите постове ще помогнат на други
ентусиасти начинаещи в програмирането да разберат задачата, да изкодят дори по-добри решения ако е възможно. Мисля, че идеята колкото е забавна е дори повече полезна и ако се превърне в практика за задачите от домашните маркирани със звезда ще е мотивационен инструмент за доусъвършенстване на сорс-кодовете. В тоя ред на мисли (ако ви е интересно и сте съгласни) е нужно да измислим кратко и "говорящо" заглавие тип "опашка", което да добавяме в заглавието на постовете от тоя род в бъдеще, така, че да са разпознаваеми и да се знае замисъла им, Ако Ви харесва тая идея на всички които четат тоя пост предложете Вие такова заглавие тип "опашка" и с 1 ред опишете защо.
Ето и моето преложение и примерно такова заглавие: 13. Point in the Figure - "Complex-conditions" (Code election)