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

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

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

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

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

textual
Листинг программы
  1. enum Кого { Таню, Лену, Аню, Катю, Марину }
  2.  
  3. static class Вспоминалка
  4. {
  5.     static void Main()
  6.     {
  7.         var ответ =
  8.             Из_Всех_Вариантов.
  9.             Выбрать_Первый_Подходящий(
  10.                 Вариант =>
  11.                 ТакойЧто(
  12.                     Если(Я_Люблю(Кого.Таню)).То(Я_Люблю(Кого.Лену).Или(Я_Люблю(Кого.Аню))),
  13.                     Если(Я_Люблю(Кого.Лену)).То(Я_Люблю(Кого.Аню).И(Я_Люблю(Кого.Катю))),
  14.                     Если(Я_Люблю(Кого.Аню).Или(Я_Люблю(Кого.Катю))).То(Я_Не_Люблю(Кого.Марину)),
  15.                     Если(Я_Не_Люблю(Кого.Катю)).То(Я_Люблю(Кого.Таню).И(Я_Люблю(Кого.Марину)))
  16.                 ))
  17.             .Имя();
  18.                
  19.         Console.WriteLine($"Чувак любит {ответ}.");
  20.         Console.ReadLine();
  21.     }
  22.  
  23.     static IEnumerable<Кого> Из_Всех_Вариантов { get {
  24.         return Enum.GetValues(typeof(Кого))
  25.             .Cast<Кого>().Select(Что_С_Того);
  26.     }}
  27.  
  28.     static string Имя (this Кого Вариант)
  29.     {
  30.         return Enum.GetName(typeof(Кого), Вариант);
  31.     }
  32.  
  33.     static Кого ТекущийВариант;
  34.     static Кого Что_С_Того(Кого Вариант) {
  35.         ТекущийВариант = Вариант;
  36.         return Вариант;
  37.     }
  38.  
  39.     static T Выбрать_Первый_Подходящий<T>(this IEnumerable<T> Sequence, Func<T, bool> Predicate) {
  40.         return Sequence.First(Predicate);
  41.     }
  42.  
  43.     static bool Я_Люблю(Кого Вариант) {
  44.         return Вариант == ТекущийВариант;
  45.     }
  46.  
  47.     static bool Я_Не_Люблю(Кого Вариант) {
  48.         return Вариант != ТекущийВариант;
  49.     }
  50.  
  51.     static bool Или(this bool A, bool B) {
  52.         return A || B;
  53.     }
  54.  
  55.     static bool И(this bool A, bool B) {
  56.         return A && B;
  57.     }
  58.  
  59.     static ПредикатТо Если(bool А) {
  60.         return new ПредикатТо() { А = А };
  61.     }
  62.  
  63.     static bool ТакойЧто(params bool[] Выражения) {
  64.         return Выражения.All(_ => _);
  65.     }
  66. }
  67.  
  68. class ПредикатТо
  69. {
  70.     public bool А;
  71.     public bool То(bool Б) { return || Б; }
  72. }

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


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

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

5   голосов , оценка 3.6 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы