From 20201692a127c3325ac332d8ea42999cbec8efdb Mon Sep 17 00:00:00 2001 From: joachimschmidt557 Date: Wed, 6 Feb 2019 22:24:32 +0100 Subject: [PATCH] =?UTF-8?q?Add=20a=20numeric=20checker=20F#=20|>=20I?= =?UTF-8?q?=E2=9D=A4=EF=B8=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- IsNumericChecker.fs | 27 ++++++++++++++++++ Program.fs | 3 +- .../netcoreapp2.2/fsharp-finite-automata.dll | Bin 6656 -> 20992 bytes .../netcoreapp2.2/fsharp-finite-automata.pdb | Bin 396 -> 2692 bytes fsharp-finite-automata.fsproj | 1 + .../fsharp-finite-automata.assets.cache | Bin 20329 -> 20329 bytes .../netcoreapp2.2/fsharp-finite-automata.dll | Bin 6656 -> 20992 bytes .../netcoreapp2.2/fsharp-finite-automata.pdb | Bin 396 -> 2692 bytes obj/fsac.cache | 4 +-- 9 files changed, 32 insertions(+), 3 deletions(-) create mode 100644 IsNumericChecker.fs diff --git a/IsNumericChecker.fs b/IsNumericChecker.fs new file mode 100644 index 0000000..c998d0f --- /dev/null +++ b/IsNumericChecker.fs @@ -0,0 +1,27 @@ +module Tests + +open System +open DFA + +let numericDFA:DFA = { + sigma = Seq.toList "01ab"; + states = [ + {name = "yes"}; + {name = "no"} + ]; + delta = (fun x y -> + match (x, y) with + | ({name = "yes"}, '0') -> {name = "yes"} + | ({name = "yes"}, '1') -> {name = "yes"} + | _ -> {name = "no"} + ); + beginState = {name = "yes"}; + acceptingStates = [{name = "yes"}] +} + +let test = + printfn "Testing numeric checker DFA" + printfn "Is valid DFA: %b" (DFA.validateDFA numericDFA) + printfn "0101: %b" (DFA.acceptsWord numericDFA "0101") + printfn "01a1: %b" (DFA.acceptsWord numericDFA "01a1") + 0 \ No newline at end of file diff --git a/Program.fs b/Program.fs index 09b1452..bbe5620 100644 --- a/Program.fs +++ b/Program.fs @@ -4,5 +4,6 @@ open System [] let main argv = - printfn "Hello World from F#!" + printfn "Finite Automata in F#" + Tests.test |> ignore 0 // return an integer exit code diff --git a/bin/Debug/netcoreapp2.2/fsharp-finite-automata.dll b/bin/Debug/netcoreapp2.2/fsharp-finite-automata.dll index 797e4e2ad401492c2c45bb8c9c7fae7f0b5c61a3..4b5fd0a52bfd7234d83734a2152018a7e4e7efba 100644 GIT binary patch literal 20992 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%0D&P^4P;-$&Uk|JvY_n%c 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 delta 1491 zcmZoz!q{Lkp~Gv5b#x2^6g*(yW8`M!U|^*^p6&CxL;1hk=2?#E5}GX7WUDoyn1m>Rb-OP{TwfcQGn+ zf{X-NBQ|*(qdaE<)KZDb_ZXGbSV8tOFfe$4MOhhA6c`wmurn|)GJr7~hXw<~LC(n& zy|skBiWnIf3W~WI7`QYT85p$H#Iz=F=25LTVParVu47*jX}W!atbJ~7lS0jDMlp*MKGxeCJn))C75&slb&EQ5KKlgoMN2A zzyoGCGGsFEVwlKqit#$b%w&dBj1L$T7_u2|Gw3mJGYB&1F$goLGw3l$GsH6JF(@-s zGUzdAGqf=1F&HyUWYA-<28%m`NpG-tFvB7SXNF>iXAG+uSQeeg91Z1Lq0d< zg91YuLlHwhLoR~?gByb~gCYY111PVp;WaE+?#kQ@Vl!}Tu#c}7yvk)Yxl40;pdkk% z12fpke4;|8tU{JTwnCO5C@8?lD90cw@192yxh(AH#=D5G0FQeLV^gC(jkUJNRYKm49t_y zT6J*pFle)Iu?R3SO@3%Css##V7>1~Ym;lkiz|6qRz|Ek;$i*l;`M$NdmK(GrLAC&- z6oi==7+Dx}8FUy$7!?^=CO@SQQ`($?l?@Vo zoW7aKMft_~X(hZ)rI|S?!Ko!Bpn`!tpeR4RC^45MH!(AhfsuicnW14x2dFq>VrH0} z=qbmJ6y&7j&E()%_ a39DlF)%VLVqjum zWY`SV3!#`8jx#VZJYZmEV1@)FM3{k@fs2uuL4}c-L7S18!5zv@VPs~gU}R?KL{SUX z0;gCQW-_uc9Aac)ILXMua0^8(3j-G;3xf(H3&Sf$76x}Hn~jNup@NZxK?>w;xH;Gu zEDTyGYFHQy!F(15S1=9J!@>{(=Cd$lKlTI0kQ*RJ}8ZV(gKVR zlH-KB0VWShTQGSs1_lOhBzYSK1_n?bfywhSFff2Hj1NjfAUj}uD`+Z%@j-e8kj%4S zU|9P&!8Diz2B9$%EXCEH92G4>A)b56WATNb(@Ppg4lb zZ(?9zfblgM7#KRCd{7*vGB7asGB7YmL*ob*elkdWEd~Y#StPzKG%thlD@Z-az4A!% zps)j#7chB{dlZr6LE*22#0Q1FG7=vY{;=`@WIibTRgvUD;jf0o2ZcYVynxvU3V#hG zc~Dq^{0)-_xfkRoWWF|%dXPLQOp)bv(d6}z_#n0VNPLigL2f|SZ-^uh5;sEPgX}X# z;)DEWg2V@frzsL26dqmks3DBL|+>sC=EcVzQ#y_y0xKQ~9Xbcw*! zojqp1XFZten`-f}$1>c8%>^vY4z{UbvVh}6F@LR$*-4zQJw9~@)xQ$H2(Fgp*;xe` zM3@*j7#NutBrbxhVnJR`YX&|hGj0YxCI)T>UZzN;i=g_PkBN;jhCx+{LjY9WDKiK$ zG3Y=DMkWSOwIU+GDtVEC0aTiEfhh^F9b8}%q=1!`P5L6ZIA>*L69%^iM8J~#U{dBH zSO{c*IJm-L23I|dU>zU_gUWF(aI-@UtO3Laspeu}5CRMEUj!HKtgLK&AQv-eTx4Jn zWnh&MWYyx4;A043P?up)h8fKWX0U-Zf?Ow}%?dJ5NRO3=ft5*siNTGj9%P^x17pJk zV^$>wS0=FY#Tgi|Iv?ahQ0ay2LXdt*uzHAtK=v?;NPv`rGM*sVa#=9RcM;s^k`k5| w0aXAXC7^N{ixOrfC6E#>kYSQ?@*s*u+66?ZODlu)fy!%SeIPMV8I3Fk0K${cB>(^b delta 295 zcmZn>?O~pvQXjy;z@QwElElEkz;K3vfx!jDuVY{kU}Rum0kMNiiZb)ki$U@tFtN~J z1_?$61_hA3d#EQ!j|C$GLkNiPl#>rKOgp5Lzw^j>&%GLFSS|{#y}86XI);&ffz4f% zfrFEifq{{MfkA|Up`L-20m1^0S7#P?=Tn3O6LHc0W zfPs<0oPmjfk--CO0Z1IAPzXdI;e=&*4(C&ve71d + \ No newline at end of file diff --git a/obj/Debug/netcoreapp2.2/fsharp-finite-automata.assets.cache b/obj/Debug/netcoreapp2.2/fsharp-finite-automata.assets.cache index be884641fb24955d97007614799021a9442fea02..1d1cdf3cc39367daff39e71a999b8fcc58944426 100644 GIT binary patch delta 51 zcmaDkkMZR^MvVY(cSj}$1_rMro`bvn`nJDj61-~9^Lc*n*T?euRS%t=0#o;``1NGo IMh!=Q022ZhX#fBK delta 51 zcmaDkkMZR^MvVY(cSj}$1_n8=>1%G(Ocf3Cyj`zZBXqpxKrgT0o1&(QH9tchr|dbj IQNz(600%V{-~a#s diff --git a/obj/Debug/netcoreapp2.2/fsharp-finite-automata.dll b/obj/Debug/netcoreapp2.2/fsharp-finite-automata.dll index 797e4e2ad401492c2c45bb8c9c7fae7f0b5c61a3..4b5fd0a52bfd7234d83734a2152018a7e4e7efba 100644 GIT binary patch literal 20992 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%0D&P^4P;-$&Uk|JvY_n%c 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 delta 1491 zcmZoz!q{Lkp~Gv5b#x2^6g*(yW8`M!U|^*^p6&CxL;1hk=2?#E5}GX7WUDoyn1m>Rb-OP{TwfcQGn+ zf{X-NBQ|*(qdaE<)KZDb_ZXGbSV8tOFfe$4MOhhA6c`wmurn|)GJr7~hXw<~LC(n& zy|skBiWnIf3W~WI7`QYT85p$H#Iz=F=25LTVParVu47*jX}W!atbJ~7lS0jDMlp*MKGxeCJn))C75&slb&EQ5KKlgoMN2A zzyoGCGGsFEVwlKqit#$b%w&dBj1L$T7_u2|Gw3mJGYB&1F$goLGw3l$GsH6JF(@-s zGUzdAGqf=1F&HyUWYA-<28%m`NpG-tFvB7SXNF>iXAG+uSQeeg91Z1Lq0d< zg91YuLlHwhLoR~?gByb~gCYY111PVp;WaE+?#kQ@Vl!}Tu#c}7yvk)Yxl40;pdkk% z12fpke4;|8tU{JTwnCO5C@8?lD90cw@192yxh(AH#=D5G0FQeLV^gC(jkUJNRYKm49t_y zT6J*pFle)Iu?R3SO@3%Css##V7>1~Ym;lkiz|6qRz|Ek;$i*l;`M$NdmK(GrLAC&- z6oi==7+Dx}8FUy$7!?^=CO@SQQ`($?l?@Vo zoW7aKMft_~X(hZ)rI|S?!Ko!Bpn`!tpeR4RC^45MH!(AhfsuicnW14x2dFq>VrH0} z=qbmJ6y&7j&E()%_ a39DlF)%VLVqjum zWY`SV3!#`8jx#VZJYZmEV1@)FM3{k@fs2uuL4}c-L7S18!5zv@VPs~gU}R?KL{SUX z0;gCQW-_uc9Aac)ILXMua0^8(3j-G;3xf(H3&Sf$76x}Hn~jNup@NZxK?>w;xH;Gu zEDTyGYFHQy!F(15S1=9J!@>{(=Cd$lKlTI0kQ*RJ}8ZV(gKVR zlH-KB0VWShTQGSs1_lOhBzYSK1_n?bfywhSFff2Hj1NjfAUj}uD`+Z%@j-e8kj%4S zU|9P&!8Diz2B9$%EXCEH92G4>A)b56WATNb(@Ppg4lb zZ(?9zfblgM7#KRCd{7*vGB7asGB7YmL*ob*elkdWEd~Y#StPzKG%thlD@Z-az4A!% zps)j#7chB{dlZr6LE*22#0Q1FG7=vY{;=`@WIibTRgvUD;jf0o2ZcYVynxvU3V#hG zc~Dq^{0)-_xfkRoWWF|%dXPLQOp)bv(d6}z_#n0VNPLigL2f|SZ-^uh5;sEPgX}X# z;)DEWg2V@frzsL26dqmks3DBL|+>sC=EcVzQ#y_y0xKQ~9Xbcw*! zojqp1XFZten`-f}$1>c8%>^vY4z{UbvVh}6F@LR$*-4zQJw9~@)xQ$H2(Fgp*;xe` zM3@*j7#NutBrbxhVnJR`YX&|hGj0YxCI)T>UZzN;i=g_PkBN;jhCx+{LjY9WDKiK$ zG3Y=DMkWSOwIU+GDtVEC0aTiEfhh^F9b8}%q=1!`P5L6ZIA>*L69%^iM8J~#U{dBH zSO{c*IJm-L23I|dU>zU_gUWF(aI-@UtO3Laspeu}5CRMEUj!HKtgLK&AQv-eTx4Jn zWnh&MWYyx4;A043P?up)h8fKWX0U-Zf?Ow}%?dJ5NRO3=ft5*siNTGj9%P^x17pJk zV^$>wS0=FY#Tgi|Iv?ahQ0ay2LXdt*uzHAtK=v?;NPv`rGM*sVa#=9RcM;s^k`k5| w0aXAXC7^N{ixOrfC6E#>kYSQ?@*s*u+66?ZODlu)fy!%SeIPMV8I3Fk0K${cB>(^b delta 295 zcmZn>?O~pvQXjy;z@QwElElEkz;K3vfx!jDuVY{kU}Rum0kMNiiZb)ki$U@tFtN~J z1_?$61_hA3d#EQ!j|C$GLkNiPl#>rKOgp5Lzw^j>&%GLFSS|{#y}86XI);&ffz4f% zfrFEifq{{MfkA|Up`L-20m1^0S7#P?=Tn3O6LHc0W zfPs<0oPmjfk--CO0Z1IAPzXdI;e=&*4(C&ve71d