From c8f594270558d26f18b50e87319885b1cb229996 Mon Sep 17 00:00:00 2001 From: srk1010 <42843938+srk1010@users.noreply.github.com> Date: Mon, 6 May 2019 18:32:52 -0400 Subject: [PATCH] Add files via upload --- SoftWritersOSK.sln | 25 ++++ SoftWritersOSK/App.config | 6 + SoftWritersOSK/Program.cs | 18 +++ SoftWritersOSK/Properties/AssemblyInfo.cs | 36 ++++++ SoftWritersOSK/README.md | 28 +++++ SoftWritersOSK/SoftWritersOSK.csproj | 57 +++++++++ SoftWritersOSK/Traverse.cs | 113 ++++++++++++++++++ SoftWritersOSK/bin/Debug/SoftWritersOSK.exe | Bin 0 -> 6144 bytes .../bin/Debug/SoftWritersOSK.exe.config | 6 + SoftWritersOSK/bin/Debug/SoftWritersOSK.pdb | Bin 0 -> 15872 bytes SoftWritersOSK/input.txt | 2 + ...gnTimeResolveAssemblyReferencesInput.cache | Bin 0 -> 6941 bytes ...tWritersOSK.csproj.CoreCompileInputs.cache | 1 + ...SoftWritersOSK.csproj.FileListAbsolute.txt | 7 ++ ...rsOSK.csprojResolveAssemblyReference.cache | Bin 0 -> 9846 bytes SoftWritersOSK/obj/Debug/SoftWritersOSK.exe | Bin 0 -> 6144 bytes SoftWritersOSK/obj/Debug/SoftWritersOSK.pdb | Bin 0 -> 15872 bytes 17 files changed, 299 insertions(+) create mode 100644 SoftWritersOSK.sln create mode 100644 SoftWritersOSK/App.config create mode 100644 SoftWritersOSK/Program.cs create mode 100644 SoftWritersOSK/Properties/AssemblyInfo.cs create mode 100644 SoftWritersOSK/README.md create mode 100644 SoftWritersOSK/SoftWritersOSK.csproj create mode 100644 SoftWritersOSK/Traverse.cs create mode 100644 SoftWritersOSK/bin/Debug/SoftWritersOSK.exe create mode 100644 SoftWritersOSK/bin/Debug/SoftWritersOSK.exe.config create mode 100644 SoftWritersOSK/bin/Debug/SoftWritersOSK.pdb create mode 100644 SoftWritersOSK/input.txt create mode 100644 SoftWritersOSK/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache create mode 100644 SoftWritersOSK/obj/Debug/SoftWritersOSK.csproj.CoreCompileInputs.cache create mode 100644 SoftWritersOSK/obj/Debug/SoftWritersOSK.csproj.FileListAbsolute.txt create mode 100644 SoftWritersOSK/obj/Debug/SoftWritersOSK.csprojResolveAssemblyReference.cache create mode 100644 SoftWritersOSK/obj/Debug/SoftWritersOSK.exe create mode 100644 SoftWritersOSK/obj/Debug/SoftWritersOSK.pdb diff --git a/SoftWritersOSK.sln b/SoftWritersOSK.sln new file mode 100644 index 0000000..b3c98a5 --- /dev/null +++ b/SoftWritersOSK.sln @@ -0,0 +1,25 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 15 +VisualStudioVersion = 15.0.27428.2015 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SoftWritersOSK", "SoftWritersOSK\SoftWritersOSK.csproj", "{F8702A6F-2274-4E82-ADAD-DC00AE710210}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {F8702A6F-2274-4E82-ADAD-DC00AE710210}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {F8702A6F-2274-4E82-ADAD-DC00AE710210}.Debug|Any CPU.Build.0 = Debug|Any CPU + {F8702A6F-2274-4E82-ADAD-DC00AE710210}.Release|Any CPU.ActiveCfg = Release|Any CPU + {F8702A6F-2274-4E82-ADAD-DC00AE710210}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {3DCC65CA-DF7B-4527-940E-998939B0AB54} + EndGlobalSection +EndGlobal diff --git a/SoftWritersOSK/App.config b/SoftWritersOSK/App.config new file mode 100644 index 0000000..00bfd11 --- /dev/null +++ b/SoftWritersOSK/App.config @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/SoftWritersOSK/Program.cs b/SoftWritersOSK/Program.cs new file mode 100644 index 0000000..1724210 --- /dev/null +++ b/SoftWritersOSK/Program.cs @@ -0,0 +1,18 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace SoftWritersOSK +{ + class Program + { + static void Main(string[] args) + { + string file = "..\\..\\input.txt"; + Traverse.TraverseFile(file); + Console.ReadLine(); + } + } +} diff --git a/SoftWritersOSK/Properties/AssemblyInfo.cs b/SoftWritersOSK/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..7ea6eea --- /dev/null +++ b/SoftWritersOSK/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +[assembly: AssemblyTitle("SoftWritersOSK")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("SoftWritersOSK")] +[assembly: AssemblyCopyright("Copyright © 2019")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Setting ComVisible to false makes the types in this assembly not visible +// to COM components. If you need to access a type in this assembly from +// COM, set the ComVisible attribute to true on that type. +[assembly: ComVisible(false)] + +// The following GUID is for the ID of the typelib if this project is exposed to COM +[assembly: Guid("f8702a6f-2274-4e82-adad-dc00ae710210")] + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the values or you can default the Build and Revision Numbers +// by using the '*' as shown below: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/SoftWritersOSK/README.md b/SoftWritersOSK/README.md new file mode 100644 index 0000000..4bf5f29 --- /dev/null +++ b/SoftWritersOSK/README.md @@ -0,0 +1,28 @@ +# On Screen Keyboard +--- +The requirement for this program is to script the path for the cursor of an on screen keyboard. The Traverse class in this program provides the following methods to fulfill this requirement; + +1. ConvertASCII() + * ConvertASCII() takes a char as input, converts it to it's ASCII code, and subtracts the offset of 65 for the characters 'a' through 'z' (case insensitive) so that 'a' would return a value of 0, 'b' of 1, etc. The characters '1' through '9' return the values of 26 through 34, and the character '0' returns the value of 35. These values represent the relative position of each character within the "keyboard". + +2. TraverseChar() + * TraverseChar() takes two chars as inputs; char a and char b. Char a represents the cursor's current position, or the previously navigated character. Char b represents the char to be navigated to. TraverseChar() calculates the direction of travel by subtracting the cursor location from the target location. If the difference is less than or equal to negative six, then the direction of travel is up. Greater than or equal to positive 6, the direction of travel is down. Between 0 and negative six, the direction of travel is left. Between 0 and positive six, the direction of travel is right. The floors of a/6 and b/6 are also calculated and compared so that left and right operations never attemt to jump "lines", but instead output the proper up and to the right, or down and to the left directions. + +3. TraverseString() + * TraverseString() takes a string as input and calls TraverseChar() for each character in that string. The cursor path for the entire input string is returned. + +4. TraverseFile() + * TraverseFile() takes a file path string as input and calls TraverseString() for each line in the file, printing out the cursor path for each line as it goes. + +# Limitations +--- +This program assumes that the on screen keyboard is laid out as follows; +``` +ABCDEF +GHIJKL +MNOPQR +STUVWX +YZ1234 +567890 +``` +The characters of the keyboard are calculated mathematically and not stored in any data structure. Changing the layout of the keyboard requires adjusting the math in ConvertASCII() and TraverseChar(). \ No newline at end of file diff --git a/SoftWritersOSK/SoftWritersOSK.csproj b/SoftWritersOSK/SoftWritersOSK.csproj new file mode 100644 index 0000000..60d94ad --- /dev/null +++ b/SoftWritersOSK/SoftWritersOSK.csproj @@ -0,0 +1,57 @@ + + + + + Debug + AnyCPU + {F8702A6F-2274-4E82-ADAD-DC00AE710210} + Exe + SoftWritersOSK + SoftWritersOSK + v4.6.1 + 512 + true + + + AnyCPU + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + AnyCPU + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/SoftWritersOSK/Traverse.cs b/SoftWritersOSK/Traverse.cs new file mode 100644 index 0000000..52e3865 --- /dev/null +++ b/SoftWritersOSK/Traverse.cs @@ -0,0 +1,113 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace SoftWritersOSK +{ + /* + The Traverse class provides methods for outputting navigation + directions between characters in a string + */ + static class Traverse + { + /* + ConvertASCII returns the values 0-25 for the characters A-Z, + the values 26-34 for characters 1-9, + and the value of 35 for the character 0. + These integers are arbitrary "indices" that allow for the + calculation of cardinal directions + */ + public static int ConvertASCII(char a) + { + int aa = (int)a; + if (aa <= 57 && aa > 48) + aa += 42; + if (aa == 48) + aa += 52; + + return aa - 65; + } + + //TraverseChar provides output for the path between char a and char b + public static string TraverseChar(char a, char b) + { + int aa = ConvertASCII(a); + int bb = ConvertASCII(b); + string path = ""; + //Compares the positions of a and b. If b is on the line above a, it moves the "cursor" up + while ((bb - aa) <= -6 || (Math.Floor((decimal)aa / 6) > Math.Floor((decimal)bb / 6))) + { + path += "U,"; + aa -= 6; + } + //Compares the positions of a and b. If b is on the line below a, it moves the "cursor" down + while ((bb - aa) >= 6 || (Math.Floor((decimal)aa / 6) < Math.Floor((decimal)bb / 6))) + { + path += "D,"; + aa += 6; + } + //Compares the positions of a and b. If b is to the left of a, it moves the "cursor" left + while ((bb - aa) <= -1) + { + path += "L,"; + aa -= 1; + } + //Compares the positions of a and b. If b is to the right of a, it moves the "cursor" right + while ((bb - aa) >= 1) + { + path += "R,"; + aa += 1; + } + //Checks if the "cursor" is located at the target character, and appends the select character if it is. + if (bb == aa) + path += "#"; + + return path; + } + /* + TraverseString calls TraverseChar for each character in the input string + and returns the pathing string for the entire input string + */ + public static string TraverseString(string word) + { + char current = (char)0; + char next = (char)0; + char[] wordArray = word.ToUpper().ToCharArray(); + string path = ""; + //Cycles through every character in the input string + for (int i = 0; i < wordArray.Length; i++) + { + next = wordArray[i]; + if ((int)current == 0) + current = 'A'; + if (wordArray[i] == ' ') + { + path += "S"; + } + else + { + path += TraverseChar(current, next); + current = next; + } + if (i != wordArray.Length - 1) + path += ','; + } + + return path; + } + + //TraverseFile takes a file path as input and outputs the cursor path for each line of the input file. + public static void TraverseFile(string file) + { + foreach (string line in System.IO.File.ReadLines(file)) + { + System.Console.WriteLine(Traverse.TraverseString(line)); + } + } + } +} + + + diff --git a/SoftWritersOSK/bin/Debug/SoftWritersOSK.exe b/SoftWritersOSK/bin/Debug/SoftWritersOSK.exe new file mode 100644 index 0000000000000000000000000000000000000000..288b96c93fc90460cf89321fb45c43aed7e80190 GIT binary patch literal 6144 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 + + + + + \ No newline at end of file diff --git a/SoftWritersOSK/bin/Debug/SoftWritersOSK.pdb b/SoftWritersOSK/bin/Debug/SoftWritersOSK.pdb new file mode 100644 index 0000000000000000000000000000000000000000..39aaf8e948d8889e5a2c2dc3ed1b55f7655f1a89 GIT binary patch literal 15872 zcmeI2eQZ@{9mk(@C|z4<*NdgH0`lQ#$)XMuVo5k4sSemeUtbB>*Efc1kw&uz zhKhfT$QR>3nxo!t+cz8MI=}tVOI;44pZ)vjv$bjR>2RqG)Ro`{L zbFyv4p}+m*bnM^~KR@pAFK>u#eL42r&BmNBYk%(b+DUyIzhB+)m49X0yC0dixhC*Y z`nI{Pdmegz{hi+%GxhC;k4-pxdhw}izMt(`hsJXr(XQ) ztfhC3c;{S01}x;9PZXk`D_%#t2QHkua83{MHM%4gb*;;#vbnC#R5IPwnc0)=PIYBd zyD~^PBECP{lc#i5=ZeAE)!EFpY;tE~cg~pZMO}MrCpmSJi*}-O=DmI=ncNP_24r{j zcXGvwtj#7ri;5{}a>a_|Bb{7_TjZKHcsVS36n@dBj2Ro?NQKE~nw_Um-Z@-WzrN&E z=W<`_v~1{ILG8xFBKc`HtiIn_dFDhH>8KA=#DrM%!sY)+?UIzcAEPBbYmjZ z+negn_hiz!#*e4csccWTnGh+zrzgFe<^yDFQ=iLARu`$ac6&CJe4r=2t#NHKwWG)?eL zaNH>WPs++*wG}BHhv&f`6v_ViLHvIh+_X7zb54LuWwX^Wkx8?<=9hIQ+S`$Zz`cowjgM2~HoBQwM==TYebOq0&jLgRgFU5fpcRF? zL1KGShgs717`U23wF&Em`eN$#@t+~K5L@6YbT749Pq?tyCeOQzPbeTFul*Nve=KG-W`u{1@0($$1EcjmLq6l?Pl z3Z9^y+JyDOxr4t7Hh1sIW>e|BwNHIT%hJJotPgCDmhH`CA6S;nCil@s{of)qe$iKnaK?&66IJd=<(p5og8&Iadzl<7IbOM$Ad$te5` z*o1rs$QtGC1?Pfa0NDe)2SIG|ehjMq@c^F(Z$thQa6b4eZ~>@ilH0+TK-OvR_n_MS zF~C28j0x`yxEOo`O>OO^kGmNGe@vx~+WZvMs}u$(ugCyHBD6^~Y8*zo8IY1#wggBm^Z0prcAAwLzo7t|Q!w{&H9qp>61=I500fH^3@Tc2oy>#esF#&N1eVony=! zPjgl6q>1W>{$?DTUgZARtYO|JkZ3*kb&Z*JtMhct?0}-rJ&y*mILNrrJ&XrSXYJFk zz^}ua8%6r>ctGED>dKqmWPF=B42-{nayR3^;!kOZ{x-o25B-Gg z{PLh33s|V1p56P~`49DB8^0`Q!-HRuiXIrv9*8p+g01*nW`@rOWt5arPy5?w-{S^3 zL8gytQjGVO&vg{nN>lmuD)VIOdeSH1gYX>q2{@!$5;`N`P2hwDF8;5BqQ4IcON8SJ z@BG^12alhD-<2AJ4@stFdF#AeTUvPIhKBEdym?`at!9ohkT24IcsgblCKe>-Cl<1s z7<0=rjcRErHR``m)o<%<6U2z|whwZmO-bsV+i-9>-M|+VGK2=zQ{B(bL zG4+9XV7T9Z{uB+G_&BqpJ-sz!n$pRgshnxbWxJcU^BpFY-O`)s-r)=M*(KL>#a~<_ zpMGus@3XsnhB46aR3o zX&z%a5sF%oJq2=BW_dRFZDdFA*;lEz6poYE@~g8uxlHeP+8^ZJaqxIpE)LyVNm}Pl x+GBKYg<=ByA-D$C8I<;zq1Iupy+|32mbFp@E`ejlOX^A literal 0 HcmV?d00001 diff --git a/SoftWritersOSK/input.txt b/SoftWritersOSK/input.txt new file mode 100644 index 0000000..a448a57 --- /dev/null +++ b/SoftWritersOSK/input.txt @@ -0,0 +1,2 @@ +it crowd +Hello World \ No newline at end of file diff --git a/SoftWritersOSK/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache b/SoftWritersOSK/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache new file mode 100644 index 0000000000000000000000000000000000000000..7be0857a02baf15b508f7432592cd15e8c053a7e GIT binary patch literal 6941 zcmeHMdruoj5Vyf>FoYCSN(kiPwCN+Md$r3u5`Pds8k9hh?T|{?BI~=g*>JvfclQ7n z@mcx_s(!?F=4_wA5L!{6#2-H7@p&Kfo0*-x`|S`4heDyh;lgjc?hb*lwzw&U5>;*N za^+IHpk0d#BQ5H6;cRBIiTEy)iVJ5wwPYmmFA-0>wss|3cbKaswG;6jw_I%$%X1tb)}k0SxZT}Kt~XA^%F?1Ty9&4x9MmmMdQ7sjRuoOp2|(9;cE2&CO@FI zEsmMBp%klE>}K{vGY73w6EHe0oGP#7xXorv>R8;Onsr8EtD3L6ww;r-&W?pV>~s}r z1^T8h^yP$YfxnNju}Ec&X@6S5tth6qL5X_CYmSgC!>SZQvFRuc_I0gmDSmPNpq9GU z(EI#q6^|~ppPv=C!B3@o%*=4fOf4j5YO-NzDhrHC^I(VS12tLeX&7%vQH2PhS5uPJ zxYDxOoe%}bG{X?ifui%lIEOOR)3qfWe#qq0tD7@iHEh~Mz}|`NM4N9-+>yd$N(s3E z)^iO$LCUqKFe~pmn%7x-O0T9?l+>)NSe{jxWDcmxNl^!-A3@VS*=hB{LWamNA)(MP z$f0mJOyC1DH1x+vp{X>hLwdscni><%_?bCOa?^MV!TONe+q-56?1)`zyKIMY`Qayj zXhBQv)DrQ!GKI8xrMt%#|MM1GS)ohj(sF8TVUZ`x$ecnKW1PvmG1_|1)7iT$)JUBWGVk{cL+YuB%2SU+1AmD2hMHIyt zig6HQJ}^Wmv_nfmA>|i$IR@ObPqQ zXTn`3WSG=EVA0Refk_Y#FWT54{4HBa3`R`jh`8@Y-1CA=p@R0P&*45&SKKDka5o06 zNn;_okXnm=0l!0IF$^$%$P5bOm^*cg+=u&!Vc9mB_3qdSi{Tnza0wFsS2vCb$HRl6 zPc)eWJ?R_k*=RHj(>q|0`Tu25KD&|G${OJHL(s#)AYh|4IF!V_GfMoslhx(tC4ZIT z?HmCfe=eK+CAgSZrPeBR2O8-CE!;$MP@xSY zGxzBFd1Jyz)i1Tikh|j*L;jBTlII|1Pt#YHjL*mm=$$%!%^i(JLaZKc!sa<6-$VP{ zY4PfMX!DFDpuayyf*(NB#A%)$BSFN9=@~Jg>E>Lv!kzXhA%^514?g5a5Wy@MNrLKf pAi0pECbfVV$GpP@z})c?0J8(H;Xen@vw!;^&ER?F*Uro1{{R_h11tal literal 0 HcmV?d00001 diff --git a/SoftWritersOSK/obj/Debug/SoftWritersOSK.csproj.CoreCompileInputs.cache b/SoftWritersOSK/obj/Debug/SoftWritersOSK.csproj.CoreCompileInputs.cache new file mode 100644 index 0000000..e585065 --- /dev/null +++ b/SoftWritersOSK/obj/Debug/SoftWritersOSK.csproj.CoreCompileInputs.cache @@ -0,0 +1 @@ +60366f36ef93ce4e81e211609bb7fa28fa159d28 diff --git a/SoftWritersOSK/obj/Debug/SoftWritersOSK.csproj.FileListAbsolute.txt b/SoftWritersOSK/obj/Debug/SoftWritersOSK.csproj.FileListAbsolute.txt new file mode 100644 index 0000000..992448e --- /dev/null +++ b/SoftWritersOSK/obj/Debug/SoftWritersOSK.csproj.FileListAbsolute.txt @@ -0,0 +1,7 @@ +C:\Users\Sean\Source\repos\SoftWritersOSK\SoftWritersOSK\obj\Debug\SoftWritersOSK.csprojResolveAssemblyReference.cache +C:\Users\Sean\Source\repos\SoftWritersOSK\SoftWritersOSK\obj\Debug\SoftWritersOSK.csproj.CoreCompileInputs.cache +C:\Users\Sean\Source\repos\SoftWritersOSK\SoftWritersOSK\bin\Debug\SoftWritersOSK.exe.config +C:\Users\Sean\Source\repos\SoftWritersOSK\SoftWritersOSK\bin\Debug\SoftWritersOSK.exe +C:\Users\Sean\Source\repos\SoftWritersOSK\SoftWritersOSK\bin\Debug\SoftWritersOSK.pdb +C:\Users\Sean\Source\repos\SoftWritersOSK\SoftWritersOSK\obj\Debug\SoftWritersOSK.exe +C:\Users\Sean\Source\repos\SoftWritersOSK\SoftWritersOSK\obj\Debug\SoftWritersOSK.pdb diff --git a/SoftWritersOSK/obj/Debug/SoftWritersOSK.csprojResolveAssemblyReference.cache b/SoftWritersOSK/obj/Debug/SoftWritersOSK.csprojResolveAssemblyReference.cache new file mode 100644 index 0000000000000000000000000000000000000000..5255c9bd6a1f670e77fdb3917aec12a975eee318 GIT binary patch literal 9846 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 literal 0 HcmV?d00001