Categories
Visual C#

Афинна трансформация версия 1.0.5

Връзка за сваляне: [download id=“943″]

Версия 1.0.5

+входният файл вече може да съдържа множество от интервали за разделител на колоните (не изисква стриктно форматиране само с един интервал)

+редът на въвеждане на точки вече е без значение (в предните версии се изискваше общите точки да са въведени преди останалите)

+оптимизиране на кода (опция за извеждане на данните директно във файл)

Categories
Visual C#

Програма за търсене на уникални точки във файл

Duplicate Point Finder е програма за търсене на уникални точки във файл. Има възможност да се задава толеранс за близост на точките. Програмата извежда уникалните точки във списък и дава възможност за записването им в нов файл.

Изисква .Net Framework 4.5, за да работи.

[download id=“1372″]

Categories
Visual C# Телерик

Задача: Neuron

Решение

using System;
using System.Collections.Generic;

namespace NeuronMapping {
  class Program {
    static void Main() {
      List numbersList = new List();
      uint inputNumber = 0;
      while (true) {
        if (uint.TryParse(Console.ReadLine(), out inputNumber)) {
          numbersList.Add(inputNumber);
        } else {
          break;
        }
      }

      for (int i = 0; i < numbersList.Count; i++) {
        for (int j = 0; j < 32; j++) {
          uint mask = (uint) 1 << j;
          uint numberAndMask = numbersList[i] & mask;
          uint bit = numberAndMask >> j;
          if (bit == 1) {
            break;
          } else {
            numbersList[i] = numbersList[i] | mask;
          }
        }
      }

      for (int i = 0; i < numbersList.Count; i++) {
        for (int j = 31; j >= 0; j--) {
          uint mask = (uint) 1 << j;
          uint numberAndMask = numbersList[i] & mask;
          uint bit = numberAndMask >> j;
          if (bit == 1) {
            break;
          } else {
            numbersList[i] = numbersList[i] | mask;
          }
        }
      }

      for (int i = 0; i < numbersList.Count; i++) {
        for (int j = 0; j < 32; j++) {
          uint mask = (uint) 1 << j;
          numbersList[i] = mask ^ numbersList[i];
        }
        Console.WriteLine(numbersList[i]);
      }
    }
  }
}
Categories
Visual C# Телерик

Задача: Pillars

Решение

using System;

namespace Pillars {
  class Program {
    static void Main() {
      int length = 8;
      int[] numbers = new int[8];
      int[] sum = new int[8];

      for (int i = 0; i < length; i++) {
        numbers[i] = int.Parse(Console.ReadLine());
      }
      for (int i = 0; i < length; i++) {
        int mask = 1 << i;
        for (int j = 0; j < length; j++) {
          int numberAndMask = numbers[j] & mask;
          int bit = numberAndMask >> i;
          if (bit == 1) {
            sum[i] += 1;
          }
        }
      }

      int leftMostColumn = -1;
      int fullCellsCount = 0;
      for (int i = 0; i < length; i++) {
        int rightSum = 0;
        for (int j = 0; j < i; j++) {
          rightSum += sum[j];
        }
        int leftSum = 0;
        for (int k = i + 1; k < length; k++) {
          leftSum += sum[k];
        }
        if (leftSum == rightSum) {
          leftMostColumn = i;
          fullCellsCount = leftSum;
        }
      }
      if (leftMostColumn >= 0) {
        Console.WriteLine(leftMostColumn);
        Console.WriteLine(fullCellsCount);
      } else {
        Console.WriteLine("No");
      }
    }
  }
}
Categories
Visual C#

Constructor Chaining в C#

namespace OOP {
  class GSM {
    private string model;
    private string manufacturer;
    private decimal ? price;
    private string owner;
    private Battery battery;
    private Display display;

    public GSM(): this("Unknown Model", "Unknown Manifacturer") {}

    public GSM(string model, string manifacturer): this(model, manifacturer, null) {}

    public GSM(string model, string manifacturer, decimal ? price): this(model, manifacturer, price, null) {}

    public GSM(string model, string manifacturer, decimal ? price, string owner): this(model, manifacturer, price, owner, null) {}

    public GSM(string model, string manifacturer, decimal ? price, string owner, Battery battery): this(model, manifacturer, price, owner, battery, null) {}

    public GSM(string model, string manifacturer, decimal ? price, string owner, Battery battery, Display display) {
      this.model = model;
      this.manufacturer = manifacturer;
      this.price = price;
      this.owner = owner;
      this.battery = battery;
      this.display = display;
    }
  }
}
Categories
Visual C#

Задача: Bat Goiko Tower

Описание

Бат’ Гойко е известен български строител. Той прекарал по-голямата част от живота си в строене на магистрали. Той бил толкова добър в работата си, че по едно време не останало място за строене на нови магистрали. Бат’ Гойко бил много разочарован и решил да се премести във Франция, за да има повече пространство за неговите бъдещи проекти. Часове след като се приземил в Париж, брилянтна идея го озарила. Той решил да строи Айфелови кули, за да бъде по-ефективен откъм пространство. Качил се на първия самолет за България и започнал да строи кули в родината си.

Решение

using System;
namespace TelerikExamples
{
class BatGoikoTower
{
static void Main()
{
int towerHeight = int.Parse(Console.ReadLine());
int currentDashIndex = 1;
int nextDashIndex = 3;
for (int i = 0; i < towerHeight; i++)
{
Console.Write(new string('.', towerHeight - i - 1));
Console.Write("/");
if (currentDashIndex == i)
{
Console.Write(new string('-', 2 * i));
currentDashIndex = nextDashIndex;
nextDashIndex = 2 * currentDashIndex - i + 1;
}
else
{
Console.Write(new string('.', 2 * i));
}
Console.Write("\\");
Console.Write(new string('.', towerHeight - i - 1));
Console.WriteLine();
}
}
}
}
Categories
Visual C#

Задача: Garden

Решение

using System;
namespace TelerikExamples
{
class Garden
{
static void Main()
{
decimal[] seedsCosts = {0.5M, 0.4M, 0.25M, 0.6M, 0.3M, 0.4M};
decimal totalCosts = 0M;
int totalArea = 250;
int inputArea = 0;
for (int i = 0; i < seedsCosts.Length; i++)
{
int seedsAmount = int.Parse(Console.ReadLine());
totalCosts += seedsAmount * seedsCosts[i];
if(i != seedsCosts.Length - 1)
{
inputArea += int.Parse(Console.ReadLine());
}
}
Console.WriteLine("Total costs: {0:F2}", totalCosts);
int areaDifference = totalArea - inputArea;
if (areaDifference > 0)
{
Console.WriteLine("Beans area: {0}", areaDifference);
}
else if (areaDifference < 0)
{
Console.WriteLine("Insufficient area");
}
else
{
Console.WriteLine("No area for beans");
}
}
}
}
view raw Garden.cs hosted with ❤ by GitHub
Categories
Visual C#

Задача: Fire In The Matrix

Описание

Лятото наближава. Птичките пеят, дърветата са зелени, момичетата носят къси поли… Да, точно така, само в мечтите ти! Въпреки, че е юни, времето е ужасно. Нуждаем се от огън, за да се стоплим. Много огън! Много, много огън!!!

Понеже живеем в Матрицата, хипер-ултра-мега спасителят Нео ще трябва да напише програма за създаване на големи факли. За съжаление, Нео е просто един кунг-фу учител, който обича да лети в небесата. Ти ще трябва да му помогнеш, в противен случай хората ще измръзнат.

Решение

using System;
namespace TelerikExamples {
class FireInTheMatrix {
static void Main() {
int fireWidth = int.Parse(Console.ReadLine());
int sideDots = (fireWidth - 2) / 2;
int middleDots = 0;
for (int i = sideDots; i >= 0; i--) {
Console.Write(new string('.', i));
Console.Write(new string('#', 1));
Console.Write(new string('.', middleDots));
Console.Write(new string('#', 1));
Console.Write(new string('.', i));
Console.WriteLine();
middleDots += 2;
}
middleDots = fireWidth - 2;
for (int i = 0; i < fireWidth / 4; i++) {
Console.Write(new string('.', i));
Console.Write(new string('#', 1));
Console.Write(new string('.', middleDots));
Console.Write(new string('#', 1));
Console.Write(new string('.', i));
Console.WriteLine();
middleDots -= 2;
}
Console.WriteLine(new string('-', fireWidth));
int middleSlashes = fireWidth / 2;
for (int i = 0; i < fireWidth / 2; i++) {
Console.Write(new string('.', i));
Console.Write(new string('\\', middleSlashes));
Console.Write(new string('/', middleSlashes));
Console.Write(new string('.', i));
Console.WriteLine();
middleSlashes--;
}
}
}
}
Categories
Visual C#

Задача: Drunken Numbers

Описание

Всеки знае, че второто най-важно нещо в живота на програмиста е да пише код, но най-важното е да пие бира. Митко и Владко са много известни програмисти. В 19-тото световно състезание по програмиране двамата се срещнали. Състезанието се състои от N на брой рунда. Във всеки рунд двамата състезатели трябва да пият бира. Митко и Владко са много добри програмисти, затова те пият наистина много бира. Съдиите са пияни и не могат да изчислят колко бира е изпита от всеки състезател, и не могат да определят по-добрият програмист.

Решение

using System;
namespace TelerikExamples {
class DrunkenNumbers {
static void Main() {
// брой рундове - прочита се от конзолата
byte rounds = byte.Parse(Console.ReadLine());
// спечелени точки (една изпита бира = една точка)
int vladkoScore = 0;
int mitkoScore = 0;
for (byte round = 0; round < rounds; round++) {
// "пияно" число - прочита се от конзолата
int drunkenNumber = Math.Abs(int.Parse(Console.ReadLine()));
// брой цифри в числото //
int digitsCount = drunkenNumber.ToString().Length;
int digitsCount = (int) Math.Floor(Math.Log10(drunkenNumber)) + 1;
// начален индекс за Владко
int start = (int) Math.Floor(digitsCount * 0.5);
// отместване от началото на числото
int offset = digitsCount % 2 == 0 ? start : start + 1;
for (int index = 0; index < offset; index++) {
mitkoScore += int.Parse(drunkenNumber.ToString().Substring(index, 1));
vladkoScore += int.Parse(drunkenNumber.ToString().Substring(start + index, 1));
}
}
// разлика в точките
int scoreDifference = Math.Abs(mitkoScore - vladkoScore);
// сбор на точките
int totalScore = mitkoScore + vladkoScore;
// определяне на победителя
if (mitkoScore > vladkoScore) {
// победител е Митко
Console.WriteLine("M {0}", scoreDifference);
} else if (mitkoScore < vladkoScore) {
// победител е Владко
Console.WriteLine("V {0}", scoreDifference);
} else {
// няма победител
Console.WriteLine("No {0}", totalScore);
}
}
}
}