diff --git a/Makefile b/Makefile index dc2c436..60ad736 100644 --- a/Makefile +++ b/Makefile @@ -35,11 +35,14 @@ run-lab5-conditional-traversal: run-lab5-number-examples: dotnet run --project "lab 5/NumberExamples/NumberExamples.fsproj" +run-lab5-favorite-lang: + dotnet run --project "lab 5/FavoriteLang/FavoriteLang.fsproj" + # Запуск Lab 5 run-all-lab5: run-lab5-hello-world run-lab5-quadratic-equation run-lab5-circle-cylinder \ run-lab5-number-operations run-lab5-recursion-types run-lab5-function-factory \ run-lab5-number-traversal run-lab5-lambda-traversal run-lab5-conditional-traversal \ - run-lab5-number-examples + run-lab5-number-examples run-lab5-favorite-lang help: @echo "Доступные команды:" @@ -64,6 +67,7 @@ help: @echo " make run-lab5-lambda-traversal - Запустить пример с лямбда-выражениями" @echo " make run-lab5-conditional-traversal - Запустить пример с условным обходом" @echo " make run-lab5-number-examples - Запустить практические примеры работы с числами" + @echo " make run-lab5-favorite-lang - Запустить программу о любимом языке программирования" clean: dotnet clean @@ -79,13 +83,13 @@ lab5-docker-build: docker compose build lab5-hello-world lab5-quadratic-equation lab5-circle-and-cylinder \ lab5-number-operations lab5-recursion-types lab5-function-factory \ lab5-number-traversal lab5-lambda-traversal lab5-conditional-traversal \ - lab5-number-examples + lab5-number-examples lab5-favorite-lang lab5-docker-run: docker compose up lab5-hello-world lab5-quadratic-equation lab5-circle-and-cylinder \ lab5-number-operations lab5-recursion-types lab5-function-factory \ lab5-number-traversal lab5-lambda-traversal lab5-conditional-traversal \ - lab5-number-examples + lab5-number-examples lab5-favorite-lang # Docker lab 5 отдельные программы lab5-hello-world-docker-run: @@ -118,6 +122,9 @@ lab5-conditional-traversal-docker-run: lab5-number-examples-docker-run: docker compose up lab5-number-examples +lab5-favorite-lang-docker-run: + docker compose up lab5-favorite-lang + ci-local: circleci config validate circleci local execute diff --git a/compose.yaml b/compose.yaml index 5901999..f1afe5e 100644 --- a/compose.yaml +++ b/compose.yaml @@ -98,4 +98,13 @@ services: volumes: - ./lab 5/NumberExamples:/app stdin_open: true + tty: true + + lab5-favorite-lang: + build: + context: ./lab 5/FavoriteLang + dockerfile: ../../Individual Task 1/Dockerfile + volumes: + - ./lab 5/FavoriteLang:/app + stdin_open: true tty: true \ No newline at end of file diff --git a/lab 5/FavoriteLang/FavoriteLang.fsproj b/lab 5/FavoriteLang/FavoriteLang.fsproj new file mode 100644 index 0000000..925ece7 --- /dev/null +++ b/lab 5/FavoriteLang/FavoriteLang.fsproj @@ -0,0 +1,13 @@ + + + + Exe + net7.0 + FavoriteLang + + + + + + + \ No newline at end of file diff --git a/lab 5/FavoriteLang/Program.fs b/lab 5/FavoriteLang/Program.fs new file mode 100644 index 0000000..af10d44 --- /dev/null +++ b/lab 5/FavoriteLang/Program.fs @@ -0,0 +1,49 @@ +open System + +let getResponse (language: string) = + match language.ToLower() with + | "f#" | "fsharp" -> "Ты подлиза! Думаешь, это поможет тебе получить хорошую оценку?" + | "prolog" -> "Ты подлиза! И мазохист, видимо. Кто вообще любит Prolog?" + | "python" -> "Ух ты, как оригинально! Еще один фанат змеиного синтаксиса и отступов вместо скобок." + | "javascript" -> "JavaScript? Серьезно? Язык, где null не равен null, но равен undefined? Удачи с этим." + | "java" -> "Java... Любишь писать 20 строк кода там, где хватило бы 2, да? Фанат многословия?" + | "c++" -> "C++, где каждая ошибка - это пять новых багов и утечка памяти. Смелый выбор!" + | "rust" -> "О, хипстер программирования! Любишь рассказывать всем про заимствования и время жизни?" + | "haskell" -> "Хаскель? Ты, наверное, любишь объяснять монады через аналогии с космосом?" + | "c#" -> "C#... Мечтал стать разработчиком в Microsoft, но не прошел собеседование?" + | "go" -> "Go - когда хочешь писать на C, но без всех сложных функций, которые делают его полезным." + | "ruby" -> "Ruby? В 2010-м позвонили, просят их язык обратно." + | "php" -> "PHP - доказательство того, что даже плохо спроектированный язык может прожить десятилетия." + | "swift" -> "Swift? Нравится платить Apple дань за возможность разрабатывать для их устройств?" + | "kotlin" -> "Kotlin - когда Java настолько плоха, что пришлось изобрести новый язык." + | "scala" -> "Scala? Любишь когда код выглядит как иероглифы из древнего манускрипта?" + | "pascal" | "delphi" -> "Ого, динозавры еще не вымерли! Какой музей тебя выпустил?" + | "cobol" -> "COBOL? Ты, наверное, миллионер, обслуживающий банковские системы 60-х годов?" + | "fortran" -> "Фортран? Ты, наверное, ровесник первых ЭВМ?" + | "basic" -> "BASIC? Где ты нашел машину времени, чтобы вернуться в 80-е?" + | "lisp" -> "LISP? (Слишком (много (скобок (не (находишь?))))" + | "assembly" | "asm" -> "Ассемблер? Ты либо гений, либо просто любишь страдать." + | "matlab" -> "MATLAB? Твои графики, наверное, красивее, чем твой код." + | "r" -> "R? Статистика настолько скучна, что потребовался целый язык?" + | "perl" -> "Perl - когда хочешь, чтобы никто не мог прочитать твой код, даже ты сам через неделю." + | "lua" -> "Lua? Язык для тех, кто не дорос до настоящего программирования." + | "typescript" -> "TypeScript? JavaScript с дополнительной головной болью!" + | "objective-c" -> "Objective-C? Ты либо мазохист, либо застрял в 2007 году." + | "erlang" -> "Erlang? Ценишь непонятный синтаксис и отсутствие документации?" + | "clojure" -> "Clojure? Лисп в JVM - странный выбор для мучений." + | "sql" -> "SQL? Это не настоящий язык программирования, но ладно, притворимся." + | "bash" | "shell" -> "Bash? Скриптовое программирование - это же не настоящее программирование!" + | "powershell" -> "PowerShell? Windows-админ, который думает, что умеет программировать?" + | _ -> $"Что это за {language}? Настолько непопулярный, что я даже шутку не могу придумать!" + +[] +let main argv = + Console.OutputEncoding <- Text.Encoding.UTF8 + + printfn "Какой язык программирования у тебя любимый?" + let userInput = Console.ReadLine() + + let response = getResponse userInput + printfn "%s" response + + 0 \ No newline at end of file