summaryrefslogtreecommitdiff
path: root/hw5/hw5.moon
diff options
context:
space:
mode:
authorAlexander Pickering <alex@cogarr.net>2020-01-01 22:37:37 -0500
committerAlexander Pickering <alex@cogarr.net>2020-01-01 22:37:37 -0500
commit9fae5d516012e2c0802105e67c79e2587a22b9dc (patch)
tree1c782ad2cd08bd1ecc4f0b42bd042778b4f34c2e /hw5/hw5.moon
downloadinfsci2620-master.tar.gz
infsci2620-master.tar.bz2
infsci2620-master.zip
Inital commitHEADmaster
Diffstat (limited to 'hw5/hw5.moon')
-rw-r--r--hw5/hw5.moon38
1 files changed, 38 insertions, 0 deletions
diff --git a/hw5/hw5.moon b/hw5/hw5.moon
new file mode 100644
index 0000000..142625c
--- /dev/null
+++ b/hw5/hw5.moon
@@ -0,0 +1,38 @@
+--Homework 5, Alexander Pickering (amp215@pitt.edu)
+--
+-- Moonscript!
+-- $ apt-get install lua5.3 lua5.3-dev luarocks
+-- $ luarocks install moonscript
+--
+-- You can then run this file with
+-- $ moon hw5.moon
+
+accept_input = io.read
+
+--seperate things that are one or more non-space characters
+--https://www.lua.org/manual/5.3/manual.html#6.4.1
+split_string = (s) -> [x for x in string.gmatch(s,"(%S+)")]
+
+--apply string.upper() to the first character in a word
+capitalize_word = (word) -> string.gsub(word,"^(.)",string.upper)
+
+--uppercase words in an array
+uppercase_words = (array) ->
+ [capitalize_word(word) for word in *array]
+
+--print all the words in an array
+print_words = (array) ->
+ for word in *array do
+ print(word)
+
+--Built in sorting!
+sort_words = table.sort
+
+--If a function has no arguments, it can be called using the ! operator, instead of empty parentheses. The ! invocation is the preferred way to call functions with no arguments.
+sentence = accept_input!
+
+words = split_string(sentence)
+words = uppercase_words(words)
+sort_words(words)
+
+print_words(words)