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