User Tools

Site Tools


notes:discrete:fall2021:projects:saf0

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
notes:discrete:fall2021:projects:saf0 [2021/09/30 02:00] – Added information on unique random values in array smalik3notes:discrete:fall2021:projects:saf0 [2021/10/06 23:47] (current) – Fixed minor typo smalik3
Line 8: Line 8:
 =====Objective===== =====Objective=====
  
-Using the TIC-80 fantasy console simulator on your pi, implement a program that performs sorting of a randomized list of values, both displaying an animation of the sort, along with timing and keeping track of the approximate number of steps needed to accomplish the task for variable numbers of non-animated runtimes.+Using the TIC-80 fantasy console simulator on your pi, implement a program that performs sorting of a randomized list of values, both displaying an animation of the sort, along with timing and keeping track of the approximate number of steps needed to accomplish the task for variable numbers of non-animated runtimes.
  
 The sorting algorithm I'd like for you to produce is that of a naive approach: The sorting algorithm I'd like for you to produce is that of a naive approach:
Line 14: Line 14:
   * not looking up anything about sorting algorithms, how would you implement an algorithm to take an arbitrary list of values and cause them to be arranged in order from least to greatest?   * not looking up anything about sorting algorithms, how would you implement an algorithm to take an arbitrary list of values and cause them to be arranged in order from least to greatest?
  
-In future projects we will be looking at the specifics of established, existing sorting algorithms. Part of the task here is to establish a baseline: you exploring some process without existing knowledge or experience in sortingso that you can become more familiar with some of the underlying details of what it means to sort values (so our later explorations make more sense).+In future projectswe will be looking at the specifics of established, existing sorting algorithms. Part of the task here is to establish a baseline: you exploring some processes without existing knowledge or experience in sorting so that you can become more familiar with some of the underlying details of what it means to sort values (so our later explorations make more sense).
  
 Additionally, the entire class will be participating in documenting and filling out this project page. It is the responsibility of EACH class member to: Additionally, the entire class will be participating in documenting and filling out this project page. It is the responsibility of EACH class member to:
Line 20: Line 20:
   * ask copious, clarifying questions (so you can better add content)   * ask copious, clarifying questions (so you can better add content)
   * craft a coherent and organized document, with information located under pertinent headings   * craft a coherent and organized document, with information located under pertinent headings
-  * explain the fundamentals of the process, conceptual background, algorithmic approach, and you can even suggest particulars related to TIC-80 (certain functions that might prove useful- individual, unrelated snippets to do things like capturing timeor displaying text, etc.)+  * explain the fundamentals of the process, conceptual background, algorithmic approach, and you can even suggest particulars related to TIC-80 (certain functions that might prove useful- individual, unrelated snippets to do things like capturing time or displaying text, etc.)
   * to get full credit, each individual that submits must perform no fewer than 4 changes to this document (as viewable from the wiki revision system). Failure to do so will result in documentation penalties being applied.   * to get full credit, each individual that submits must perform no fewer than 4 changes to this document (as viewable from the wiki revision system). Failure to do so will result in documentation penalties being applied.
  
Line 32: Line 32:
  
 To maintain unique values one must constantly be checking if a randomized value //already// exists in the list. Completely random and mostly random have different visuals for your animations, they are both worth trying out to see how that affects the animations. Whichever one you stick with is up to you, but try them both. To maintain unique values one must constantly be checking if a randomized value //already// exists in the list. Completely random and mostly random have different visuals for your animations, they are both worth trying out to see how that affects the animations. Whichever one you stick with is up to you, but try them both.
 +
 +Surprisingly, one can create a randomized list of numbers in a specific range by not generating random numbers - but generating steadily iterated numbers and storing them in random array indices. This method theoretically saves time on checking to see whether a specific number has already been generated. Traditionally, one would have to increment through the entire array every time a random number is generated. With this method, one only has to check that the random array index is not already storing something or if it is nil. This is because the numbers that are stored increment with each loop - so it is guaranteed to be different. Theoretically, however, this could take just as long as the method where the array index is incremented if there is bad luck with choosing unused array indices.
 +
 +Random values do not just have their usage with random values in an array, but may be used to randomize the algorithm used depending on how the game will work.
  
 ==A Sort Synopsis== ==A Sort Synopsis==
Line 46: Line 50:
 Swapped : [1,4,5,7,9,10,1,8,2,6,3] (here, 4 and 1 changed places) Swapped : [1,4,5,7,9,10,1,8,2,6,3] (here, 4 and 1 changed places)
 </code> </code>
 +
  
 ====Display==== ====Display====
  
-**Among** the many possibilities for display, the classic example of variably-sized bars tends to come to mind, and, using the scaling techniques that may have been employed in pnf3, this can be accomplished relatively simply by defining the size and position of some rectangles based on the stored value of array positions and their offsets and scaling them to the size of the screen. After that is initially determined, the scaling value may be applied in order to allow the user to experience the wonders of the TIC80 sorting program (this should be recalculated once per frame with the current state of the array).+**Among** the many possibilities for display, the classic example of variably-sized bars tends to come to mind, and, using the scaling techniques that may have been employed in pnf3, this can be accomplished relatively simply by defining the size and position of some rectangles based on the stored value of array positions and their offsets and scaling them to the size of the screen. After that is initially determined, the scaling value may be applied to allow the user to experience the wonders of the TIC80 sorting program (this should be recalculated once per frame with the current state of the array).
  
-Another idea, perhaps more similar to the approaches that many seem to explore in pnf3, would be to arrange the numbers on the screen in some order representing their positions in the array.+Another idea, perhaps more similar to the approaches that many seem to explore in pnf3, would be to arrange the numbers on the screen in some order representing their positions in the array. This can simply be done by having a function print the array indices in order after every swap. In this print function - one can also have some if statements that variably determine the spacing in between the numbers, depending on the size of the randomly generated list. This allows fewer numbers to fill the screen more and allows for more numbers to fit on the screen.
  
 If scaling is not your forte, then numbers can be generated from the lowest pixel position possible to the highest pixel position possible. This is essentially the equivalent of scaling since numbers cannot be represented by pixel positions higher than the bounds of the screen. Both scaling and non-scaling algorithms are fine, and lead to essentially the same thing; one may bring more variation over the other though (scaling). If scaling is not your forte, then numbers can be generated from the lowest pixel position possible to the highest pixel position possible. This is essentially the equivalent of scaling since numbers cannot be represented by pixel positions higher than the bounds of the screen. Both scaling and non-scaling algorithms are fine, and lead to essentially the same thing; one may bring more variation over the other though (scaling).
Line 67: Line 72:
 =====Submission===== =====Submission=====
  
-In order to submit the game file, our "tic" file, the file must be added to your lab46 somehow. This can be achieved through FTP software, such as FileZilla, or more easily by putting the file onto your Pi then pushing to your repo and pulling from lab46.+To submit the game file, our "tic" file, the file must be added to your lab46 somehow. This can be achieved through FTP software, such as FileZilla, or more easily by putting the file onto your Pi then pushing to your repo and pulling from lab46.
  
 //Of course, if you are using the TIC-80 application on your Pi then the file will exist there when saved.// //Of course, if you are using the TIC-80 application on your Pi then the file will exist there when saved.//
Line 94: Line 99:
  
 Additionally: Additionally:
-  * Solutions not abiding by **SPIRIT** of project will be subject to a 25% overall deduction+  * Solutions not abiding by **SPIRIT** of the project will be subject to a 25% overall deduction
   * Solutions not utilizing descriptive why and how **COMMENTS** will be subject to a 25% overall deduction   * Solutions not utilizing descriptive why and how **COMMENTS** will be subject to a 25% overall deduction
   * Solutions not utilizing **INDENTATION** to promote scope and clarity will be subject to a 25% overall deduction   * Solutions not utilizing **INDENTATION** to promote scope and clarity will be subject to a 25% overall deduction
notes/discrete/fall2021/projects/saf0.1632967240.txt.gz · Last modified: 2021/09/30 02:00 by smalik3