Corning Community College
CSCS2330 Discrete Structures
Influenced by the unix/usr0 'urev' skills review activity, create a program that does the same but for powers of 2 base math and conversions.
This does not have to be written for Vircon32, nor does it specifically have to be in C.
You will want to go here to edit and fill in the various sections of the document:
Base 2^1 is 2 2^2 is 4 2^3 is 8 and so on and so forth.
Along with the conversions game mode, other modes should include addition, subtraction, and multiplication. These should all be in the same base already, as a conversion on top of that would be hectic.
For powers of two base conversion, or any type of conversions in bash scripts, it would behoove one to make use of the ibase / obase commands. With them, they can make the conversions of numbers for you. This is helpful for generating prompts and keys alike.
The goal of the conversions game mode should be for the player to be prompted with a number in one base, and be instructed to find the answer in another base (also prompted).
Can use shuf -i alongside an array to randomly generate a base
By using “date +%r” in the command line you can get the current time which you can use later.
date +%r will give you the time in this format: HH:MM:SS AM/PM
date +%s will give you the time in seconds since the Unix epoch. If you want to use date +%s to get the current minutes, you can divide the output of date +%s by 60; if you want to use date +%s to get the current seconds, you can use the modulus operation (%60).
The best way to keep track of a users score across sessions is to use a file. For simplicity let's call it “info.txt” and assume we are doing this in BASH.
You can either create this file manually for every new user or have the program do it for you! Here is an example of the program doing it:
if [[ ! -f "info.txt" ]] ; then touch info.txt fi
So that may be a lot at once to take in, so let's break it down. This line checks if the file exists, and when combined with an if statement it will do what is in the if statement if the file DOES NOT EXIST*.
! -f "info.txt"
This line will make the file
touch info.txt
Too make our future selves happy lets set up where the data will be put in the file. Things we need:
You can make the code do this by “echoing” into your text file. Here is an example of how to do that (tip: put this in your previous if statement):
echo "Access Time:" >> info.txt echo "Amount Played:" >> info.txt echo "Amount Right:" >> info.txt echo "Amount Wrong:" >> info.txt
Again let's break that down. Here we are redirecting the output of “echo” to our file info.txt with the «.
echo "Access Time:" >> info.txt
Inside your program you can use commands like grep, sed, cat, cut, tr, and head to name a few in order to write to and replace the text in info.txt. And don't forget that in BASH you can use | to pipe/connect commands together!
To be successful in this project, the following criteria (or their equivalent) must be met:
Let's say you have completed work on the project, and are ready to submit, you would do the following:
lab46:~/src/SEMESTER/DESIG/PROJECT$ submit DESIG PROJECT file1 file2 file3 ... fileN
You should get some sort of confirmation indicating successful submission if all went according to plan. If not, check for typos and or locational mismatches.
I'll be evaluating the project based on the following criteria:
130:dsr0:final tally of results (130/130) *:dsr0:supports powers of two base math problems [26/26] *:dsr0:supports powers of two base conversion problems [26/26] *:dsr0:keeps score and track of correct and incorrect responses [26/26] *:dsr0:shows onscreen base table for earlier problems [26/26] *:dsr0:serves 12 problems every 4 hours and 20 minutes [26/26]