Написать программу по задачки на логику - C#

Узнай цену своей работы

Формулировка задачи:

"Грустная история о том, как один лицеист очень хотел подарить "валентинку" любимой девочке. Он так сильно спешил, что подбегая к крыльцу физфака подскользнулся и... упал (растянувшись рядом с машиной декана). Придя в себя, он никак не мог вспомнить, кому он хотел отправить "валентинку". В голове крутились имена: Таня, Лена, Аня, Катя и Марина. Но вспомнить нужно только одно. Напрягая свою память так, что можно было услышать шелест извилин в голове, несчастному влюбленному удалось установить следующее. 1. Если я люблю Таню, то я люблю Лену или Аню. 2. Если я люблю Лену, то я люблю Аню и Катю. 3. Если я люблю Аню или Катю, то я не люблю Марину. 4. Если я не люблю Катю, то я люблю Таню и Марину. Помогите, пожалуйста, найти ему свою любовь." Только начинаю программировать, препод задал на дом. Буду очень благодарен.

Решение задачи: «Написать программу по задачки на логику»

textual
Листинг программы
enum Кого { Таню, Лену, Аню, Катю, Марину }
 
static class Вспоминалка
{
    static void Main()
    {
        var ответ = 
            Из_Всех_Вариантов.
            Выбрать_Первый_Подходящий(
                Вариант =>
                ТакойЧто(
                    Если(Я_Люблю(Кого.Таню)).То(Я_Люблю(Кого.Лену).Или(Я_Люблю(Кого.Аню))),
                    Если(Я_Люблю(Кого.Лену)).То(Я_Люблю(Кого.Аню).И(Я_Люблю(Кого.Катю))),
                    Если(Я_Люблю(Кого.Аню).Или(Я_Люблю(Кого.Катю))).То(Я_Не_Люблю(Кого.Марину)),
                    Если(Я_Не_Люблю(Кого.Катю)).То(Я_Люблю(Кого.Таню).И(Я_Люблю(Кого.Марину)))
                ))
            .Имя();
                
        Console.WriteLine($"Чувак любит {ответ}.");
        Console.ReadLine();
    }
 
    static IEnumerable<Кого> Из_Всех_Вариантов { get {
        return Enum.GetValues(typeof(Кого))
            .Cast<Кого>().Select(Что_С_Того);
    }}
 
    static string Имя (this Кого Вариант)
    {
        return Enum.GetName(typeof(Кого), Вариант);
    }
 
    static Кого ТекущийВариант;
    static Кого Что_С_Того(Кого Вариант) {
        ТекущийВариант = Вариант;
        return Вариант;
    }
 
    static T Выбрать_Первый_Подходящий<T>(this IEnumerable<T> Sequence, Func<T, bool> Predicate) {
        return Sequence.First(Predicate);
    }
 
    static bool Я_Люблю(Кого Вариант) {
        return Вариант == ТекущийВариант;
    }
 
    static bool Я_Не_Люблю(Кого Вариант) {
        return Вариант != ТекущийВариант;
    }
 
    static bool Или(this bool A, bool B) {
        return A || B;
    }
 
    static bool И(this bool A, bool B) {
        return A && B;
    }
 
    static ПредикатТо Если(bool А) {
        return new ПредикатТо() { А = А };
    }
 
    static bool ТакойЧто(params bool[] Выражения) {
        return Выражения.All(_ => _);
    }
}
 
class ПредикатТо
{
    public bool А;
    public bool То(bool Б) { return !А || Б; }
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 3.6 из 5
Похожие ответы