Написать программу по задачки на логику - 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 !А || Б; } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д