From 0259b550977580869e94c75402fd85bffda25b99 Mon Sep 17 00:00:00 2001 From: vologin-dmitry Date: Fri, 15 May 2020 15:14:09 +0300 Subject: [PATCH 1/4] =?UTF-8?q?=D1=82=D0=B5=D1=81=D1=82=203?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 3 +- semester4/ThirdTime/ThirdTime.sln | 31 ++++++++++++++++++ .../ThirdTime/ThirdTime/PriorityQueue.fs | 32 +++++++++++++++++++ semester4/ThirdTime/ThirdTime/Program.fs | 8 +++++ .../ThirdTime/ThirdTime/ThirdTime.fsproj | 13 ++++++++ .../ThirdTimeTests/PriorityQueueTest.fs | 32 +++++++++++++++++++ semester4/ThirdTime/ThirdTimeTests/Program.fs | 1 + .../ThirdTimeTests/ThirdTimeTests.fsproj | 25 +++++++++++++++ 8 files changed, 144 insertions(+), 1 deletion(-) create mode 100644 semester4/ThirdTime/ThirdTime.sln create mode 100644 semester4/ThirdTime/ThirdTime/PriorityQueue.fs create mode 100644 semester4/ThirdTime/ThirdTime/Program.fs create mode 100644 semester4/ThirdTime/ThirdTime/ThirdTime.fsproj create mode 100644 semester4/ThirdTime/ThirdTimeTests/PriorityQueueTest.fs create mode 100644 semester4/ThirdTime/ThirdTimeTests/Program.fs create mode 100644 semester4/ThirdTime/ThirdTimeTests/ThirdTimeTests.fsproj diff --git a/.gitignore b/.gitignore index 74941b9..b4a75ff 100644 --- a/.gitignore +++ b/.gitignore @@ -333,4 +333,5 @@ ASALocalRun/ #This is mine and this is now .bin/ .obj/ -.Properties/ \ No newline at end of file +.Properties/ +/semester4/SecondHomework diff --git a/semester4/ThirdTime/ThirdTime.sln b/semester4/ThirdTime/ThirdTime.sln new file mode 100644 index 0000000..bd5f28d --- /dev/null +++ b/semester4/ThirdTime/ThirdTime.sln @@ -0,0 +1,31 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 16 +VisualStudioVersion = 16.0.29926.136 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "ThirdTime", "ThirdTime\ThirdTime.fsproj", "{46E90A85-E11A-47E5-AE65-042C75537173}" +EndProject +Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "ThirdTimeTests", "ThirdTimeTests\ThirdTimeTests.fsproj", "{98591193-E3AB-4870-BD8F-5B8F2D429BA5}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {46E90A85-E11A-47E5-AE65-042C75537173}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {46E90A85-E11A-47E5-AE65-042C75537173}.Debug|Any CPU.Build.0 = Debug|Any CPU + {46E90A85-E11A-47E5-AE65-042C75537173}.Release|Any CPU.ActiveCfg = Release|Any CPU + {46E90A85-E11A-47E5-AE65-042C75537173}.Release|Any CPU.Build.0 = Release|Any CPU + {98591193-E3AB-4870-BD8F-5B8F2D429BA5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {98591193-E3AB-4870-BD8F-5B8F2D429BA5}.Debug|Any CPU.Build.0 = Debug|Any CPU + {98591193-E3AB-4870-BD8F-5B8F2D429BA5}.Release|Any CPU.ActiveCfg = Release|Any CPU + {98591193-E3AB-4870-BD8F-5B8F2D429BA5}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {8B07A2AE-453C-4FC0-8DD8-C46912B03E19} + EndGlobalSection +EndGlobal diff --git a/semester4/ThirdTime/ThirdTime/PriorityQueue.fs b/semester4/ThirdTime/ThirdTime/PriorityQueue.fs new file mode 100644 index 0000000..3b175ec --- /dev/null +++ b/semester4/ThirdTime/ThirdTime/PriorityQueue.fs @@ -0,0 +1,32 @@ +module PriorityQueue + +///Очередь, где чем больше приоритет итема, тем ближе к голове списка +type PriorityQueue<'a>() = + let mutable list = [] + + ///Добавить определенный элемент с определенным приоритетом + member this.Enqueue prior (value : 'a) = + let rec enqueueHelper prev fol = + match fol with + | (insidePriority, insideValue) :: tail -> if insidePriority < prior + then prev @ [(prior, value)] @ fol + else enqueueHelper (prev @ [(prior, value)]) fol + | [] -> prev @ [(prior, value)] + + match list.Head with + | (hPrior, hValue) when hPrior < prior -> [(prior, value)] @ list + | _ -> enqueueHelper [] list + + ///Получить элемент с низшим приоритетом + member this.Dequeue() = + match list.Length with + | 0 -> raise (System.IndexOutOfRangeException("Queue is empty!")) + | _ -> let head = list.Head + list <- list.Tail + head + + ///Узнать количество элементов в очереди + member this.Length() = list.Length + + ///Узнать является ли очередь пустой + member this.IsEmpty = list.IsEmpty \ No newline at end of file diff --git a/semester4/ThirdTime/ThirdTime/Program.fs b/semester4/ThirdTime/ThirdTime/Program.fs new file mode 100644 index 0000000..a7458f5 --- /dev/null +++ b/semester4/ThirdTime/ThirdTime/Program.fs @@ -0,0 +1,8 @@ +// Learn more about F# at http://fsharp.org + +open System + +[] +let main argv = + printfn "Hello World from F#!" + 0 // return an integer exit code diff --git a/semester4/ThirdTime/ThirdTime/ThirdTime.fsproj b/semester4/ThirdTime/ThirdTime/ThirdTime.fsproj new file mode 100644 index 0000000..0a19cd5 --- /dev/null +++ b/semester4/ThirdTime/ThirdTime/ThirdTime.fsproj @@ -0,0 +1,13 @@ + + + + Exe + netcoreapp3.1 + + + + + + + + diff --git a/semester4/ThirdTime/ThirdTimeTests/PriorityQueueTest.fs b/semester4/ThirdTime/ThirdTimeTests/PriorityQueueTest.fs new file mode 100644 index 0000000..21c0347 --- /dev/null +++ b/semester4/ThirdTime/ThirdTimeTests/PriorityQueueTest.fs @@ -0,0 +1,32 @@ +module ThirdTimeTests + +open NUnit.Framework +open PriorityQueue + +let mutable queue = new PriorityQueue() + +[] +let Setup () = queue <- new PriorityQueue() + +[] +let EmptyTest () = + Assert.True(queue.IsEmpty) + +[] +let OneElementTest () = + queue.Enqueue 1 "hello" + Assert.False(queue.IsEmpty) + +[] +let SimpleTest() = + queue.Enqueue 1 "1" + queue.Enqueue 2 "2" + Assert.AreEqual((2, "2"), queue.Dequeue) + Assert.AreEqual((1, "1"), queue.Dequeue) + +[] +let SimpleIsQueueTest() = + queue.Enqueue 1 "1" + queue.Enqueue 1 "2" + Assert.AreEqual((1, "1"), queue.Dequeue) + Assert.AreEqual((1, "2"), queue.Dequeue) diff --git a/semester4/ThirdTime/ThirdTimeTests/Program.fs b/semester4/ThirdTime/ThirdTimeTests/Program.fs new file mode 100644 index 0000000..0695f84 --- /dev/null +++ b/semester4/ThirdTime/ThirdTimeTests/Program.fs @@ -0,0 +1 @@ +module Program = let [] main _ = 0 diff --git a/semester4/ThirdTime/ThirdTimeTests/ThirdTimeTests.fsproj b/semester4/ThirdTime/ThirdTimeTests/ThirdTimeTests.fsproj new file mode 100644 index 0000000..7ec9f42 --- /dev/null +++ b/semester4/ThirdTime/ThirdTimeTests/ThirdTimeTests.fsproj @@ -0,0 +1,25 @@ + + + + netcoreapp3.1 + + false + false + + + + + + + + + + + + + + + + + + From a778c9d67dfa90669e83740e676b6fa2b2d086fc Mon Sep 17 00:00:00 2001 From: vologin-dmitry Date: Fri, 15 May 2020 15:20:02 +0300 Subject: [PATCH 2/4] update appveyor yml --- appveyor.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/appveyor.yml b/appveyor.yml index 855f34f..4d5c11e 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -1,7 +1,7 @@ image: Visual Studio 2017 before_build: - - nuget restore semester2/6.1/HW6T2.sln + - nuget restore semester4/ThirdTime/ThirdTime.sln build: - project: semester2/2.3/2.3.sln + project: semester2/ThirdTime/ThirdTime.sln From bf29312ee067730846b6f419076a9fa5c5cafac4 Mon Sep 17 00:00:00 2001 From: vologin-dmitry Date: Fri, 15 May 2020 15:23:11 +0300 Subject: [PATCH 3/4] change appveyor vs --- appveyor.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/appveyor.yml b/appveyor.yml index 4d5c11e..8e56731 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -1,4 +1,4 @@ -image: Visual Studio 2017 +image: Visual Studio 2019 before_build: - nuget restore semester4/ThirdTime/ThirdTime.sln From 648adc5d0f38e5c160d76272f1623918f4048d08 Mon Sep 17 00:00:00 2001 From: vologin-dmitry Date: Fri, 15 May 2020 15:25:27 +0300 Subject: [PATCH 4/4] =?UTF-8?q?=D0=BE=D0=BF=D1=8F=D1=82=D1=8C=20=D0=BE?= =?UTF-8?q?=D0=BF=D0=B5=D1=87=D0=B0=D1=82=D0=BA=D0=B0=20=D0=B2=20=D0=B0?= =?UTF-8?q?=D0=BF=D0=B2=D0=B5=D0=B9=D0=BE=D1=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- appveyor.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/appveyor.yml b/appveyor.yml index 8e56731..5f5762b 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -4,4 +4,4 @@ before_build: - nuget restore semester4/ThirdTime/ThirdTime.sln build: - project: semester2/ThirdTime/ThirdTime.sln + project: semester4/ThirdTime/ThirdTime.sln