User Tools

Site Tools


haas:spring2019:unix:projects:pct1

Differences

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

Link to this comparison view

Next revision
Previous revision
haas:spring2019:unix:projects:pct1 [2019/04/29 22:07] – created wedgehaas:spring2019:unix:projects:pct1 [2019/04/29 22:46] (current) – [Background] wedge
Line 4: Line 4:
 </WRAP> </WRAP>
  
-======Project: PRACTICING CRITICAL THINKING (pct0)======+======Project: PRACTICING CRITICAL THINKING (pct1)======
  
 =====Errata===== =====Errata=====
Line 11: Line 11:
  
 =====Objective===== =====Objective=====
-To continue to cultivate your problem solving, critical thinking, analytical, and observation skills; to apply your skills on the UNIX command-line.+To continue to cultivate your problem solving, critical thinking, analytical, and observation skills.
  
 The aim here is on observation, analysis, and documentation. You are solving and documenting a problem by hand, NOT writing any sort of program. The aim here is on observation, analysis, and documentation. You are solving and documenting a problem by hand, NOT writing any sort of program.
Line 19: Line 19:
 This project puts you in contact with such endeavours. This project puts you in contact with such endeavours.
  
 +We ramp up the abstraction a bit by altering the number base involved. No longer can you assume decimal values. Be on the lookout for specified bases, and solve in accordance with the available counting digits in that number base.
 ====Long Division==== ====Long Division====
 Letter division is a category of logic problem where you would take an ordinary math equation (in long form), and substitute all the numbers for letters, thereby in a direct sense masking the numeric values present that correctly enable the problem to work from start to completion. It is your task, through exploring, experimenting, and playing, to ascertain the numeric value of each letter (as many as 10, one for each numeric value 0-9). Letter division is a category of logic problem where you would take an ordinary math equation (in long form), and substitute all the numbers for letters, thereby in a direct sense masking the numeric values present that correctly enable the problem to work from start to completion. It is your task, through exploring, experimenting, and playing, to ascertain the numeric value of each letter (as many as 10, one for each numeric value 0-9).
Line 133: Line 134:
 Then, as I figure things out (either what certain are, but mostly, which ones they are NOT), I can mark it up accordingly. Then, as I figure things out (either what certain are, but mostly, which ones they are NOT), I can mark it up accordingly.
  
 +===Determining B and I from initial glances===
 Right from the start, we can already make some important connections: Right from the start, we can already make some important connections:
  
Line 183: Line 185:
 </code> </code>
  
 +===Whittling down K and T===
  
- +We also have lead on K, thanks to two identical subtractions taking place, in the top term:
-Now, FURTHERMORE, some of those connections are thereby connected. Look at the 'L' and 'J' connections: +
- +
-  * O < L, but also: L < J +
-  * L < J, but also: J < K +
- +
-That implies further connection, so we can chain them together: +
- +
-  * O < L < J < K +
- +
-So from that initial observation and connectionwe now have two disconnected relationships: +
- +
-  * V < G +
-  * O < L < J < K +
- +
-From what we've done so far, we do not know where V,G fall in respect to O,L,J,K. They might be less than, OR greater than. We won't know without further information. +
- +
-Yet, even WITH this information, we can update our letter ranges: +
- +
-  * since V is less than G, we know V can NOT be 9. +
-  * similarly, G can NOT be 0. +
-  * O cannot be 9, 8, 7, because we know O is 3 less than K. So even though we don't know what K actually is, because K COULD be 9, we know what O, L, and J can NOT be. +
-  * L cannot be 9 or 8 +
-  * J cannot be 9 +
-  * on the other side, K cannot be 0, 1, or 2 +
-  * J cannot be 0 or 1 +
-  * L cannot be 0. +
- +
-So, if we update our range chart accordingly:+
  
 <code> <code>
-B = { 0, 1, 2, 3, 4, 5, 6, 7, 8    } +    KK 
-G = {    1, 2, 3, 4, 5, 6, 7, 8, 9 } +    TT 
-{       2, 3, 4, 5, 6, 7, 8,   } +    == 
-{          3, 4, 5, 6, 7, 8, 9 } +    YY
-L = {    1, 2, 3, 4, 5, 6, 7,      } +
-M = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 } +
-O = { 0, 1, 2, 3, 4, 5, 6,         } +
-P = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 } +
-R = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 } +
-V = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }+
 </code> </code>
  
-Moving on, dealing with details of discovering those one-off relations, that tells us something about the NEXT subtractions: that they borrow (which means they are LESS THAN the thing being subtracted from them):+See that? While in isolation, we don't have any clear read on K's relationship to T (we don't immediately know if the leftmost E-Z=T is being taken from), from these two identical examples, we can now tell:
  
-  * L is less than K (which we actually know to be 2 less than K), so L - K needs to BORROW +  * T << K, because if K was less than T, it would need to borrow, and because the rightmost K-T equals the left K-T (they both equal Y), no borrowing is happening (because there's nothing further to the right to take from the rightmost K). 
-  * J is less than K (which we know is 1 less than K), so J - K needs to BORROW +  * similarly<< K.
-  * V is apparently also less than K (which we didn't previously know), so V - K needs to BORROW +
-  * now knowing than V << Kwe can connect our other relational fragment in (I use the double '<<' to denote "less than" by an unknown amount, because while we know V is less than K, we don't know by how much).+
  
-SoV < G << O < L < J < K+This causes some updates in our relational chains:
  
-This allows us some further whittling of our ranges:+  * Z << E 
 +  * T << E 
 +  * X << Y << K 
 +  * T << Y << K
  
-  * V cannot be 9, 8, 7, 6, or 5 +In our chart, T cannot be 7, 6, or 5 (since there are now THREE identified values greater than T- EYand K).
-  * G cannot be 987, or 6 +
-  * O cannot be 0, or 1 +
-  * L cannot be 0, 1, or 2 +
-  * J cannot be 0, 1, 2, or 3 +
-  * cannot be 0, 1, 2, 3, or 4+
  
-<code> +AlsoK is not 2, 3, or 4, due to there being three values less than K- TXand Y.
-B = { 0, 1, 2, 3, 4, 5, 6, 7, 8    } +
-G = {    1, 2, 3, 4, 5,            } +
-J = {             4, 5, 6, 7, 8,   } +
-= {                56, 7, 8, 9 } +
-L = {          3, 4, 5, 6, 7,      } +
-M = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 } +
-O = {       2, 3, 4, 5, 6,         } +
-P = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 } +
-R = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 } +
-V = { 0, 1, 2, 3, 4              } +
-</code>+
  
-Already we can see that V and G are likely lower numbersand O, L, J, and are likely higher numbers.+Even though T is less than Ewe do not know E's relationship to Y or (it could be greater than K or it could be less than K), so we cannot act on that particular facet of the problem yet.
  
-What else do we have? Let's keep going: +The updated chart:
- +
-We cannot instantly proceed to the next subtraction in as obvious a progression, as we'll need more information on the various letters involved. +
- +
-===Finding K (and J and L and O as well)=== +
- +
-However, looking at the puzzle, I'm interested in seeing if we can find any obvious examples of 0. You know, letter minus same letter sort of things. Because they will typically end up equalling 0 (or 9). +
- +
-Why 9? Because of a borrow! +
- +
-((5-1)+10)-5 = (4+10)-5 = 14 - 5 = 9 +
- +
-... that can be quite revealing too! +
- +
-And it would appear we have one wonderful candidate in the bottom-most subtraction:+
  
 <code> <code>
-           KVRMR +B = {    1                   } 
-          -JKRKB +E = {             4, 5, 6, 7 } 
-           ===== +{ 0                      } 
-            VKMK+{                5, 6, 7 } 
 +{       2, 3, 4          } 
 +{       2, 3, 4, 5, 6    } 
 +{             4, 5, 6, 7 } 
 +Z = {       2, 3, 4, 5, 6    }
 </code> </code>
  
-Lookie there: R-R K.+===Narrowing down T and Y=== 
 +At this point, we've largely exhausted our logical/relational analysis, and will need to make use of some of the mathThere are NO borrows happening in this problem, so onto the multiplication:
  
-Usually, that would result in a 0. BUT, we also know that K can NOT be 0 (looking at our range table above). +Since B is 1, we'll skip to the Y multiplication:
- +
-So, that means it is being borrowed from, and it itself has to borrow, so we now also know that M is less than K (M << K). +
- +
-And, as indicated above: +
- +
-((R-1)+10)-R = 9! +
- +
-We now know that K = 9! +
- +
-That suddenly reveals a whole lot to usdue to our relational chains we've built. Let's update: +
- +
-|  0  |  | +
-|  1  |  | +
-|  2  |  | +
-|  3  |  | +
-|  4  |  | +
-|  5  |  | +
-|  6  |  O  | +
-|  7  |  L  | +
-|  8  |  J  | +
-|  9  |  K  | +
- +
-Also, with the new introduction of M being less than K:+
  
 <code> <code>
-B = { 0, 1, 234, 5,            } + T:2 3 4  
-G = {    1, 2, 3, 45,            } +xY:4 5 6 7 
-{                            } +== ======== 
-{                            9 } + T:2 3 4
-{                      7       } +
-{ 0, 1, 2, 3, 4, 5,            } +
-{                            } +
-{ 0, 1, 2, 3, 4, 5,            } +
-{ 0, 1, 2, 3, 4, 5,            } +
-V = { 0, 1, 234,               }+
 </code> </code>
  
-Andour relational chains: +Nowwhile this is multiplication, it is NOT decimal multiplication. We need to multiply in octalTherefore it might help to have our multiplication tables handy for base 8 for values 2-7:
- +
-  * V < G << O < L < J < K +
-  * M << O < L < J < K +
- +
-Because we don't yet know any relation of M compared to V or G, we have to keep them separate for now. +
- +
-We also have a second disqualifier for K being 0... the ones place subtraction in that bottom-most subtraction: +
- +
-R - B = K. +
- +
-There's nothing further to the right that could borrow from this problemso it can only exist in two states: +
- +
-  * R is greater than B +
-  * R is less than B +
- +
-Since we know that K is 9, there's NO OTHER pair of single digit numbers we can subtract to get 9, which tells us that: +
- +
-  * R is less than B (R << B) +
- +
-Currently both R and B can be 0-5 (although now, B is 1-5, and R is 0-4). We'need to find a combination where (R+10)-B is 9: +
-^  R: 0  ^  R: 1  ^  R: 2  ^  R: 3  ^  R: 4  | +
-|  (0+10)  |  (1+10)  | (2+10)  |  (3+10)  |  (4+10) +
-|  10  |  11  |  12  |  13  |  14  | +
- +
-And from that, we're subtracting B, which is 1, 2, 3, 4, or 5The answer has to be 9. +
- +
-So: +
- +
-10-1=9, 11-2=9, 12-3=9, 13-4=9, and 14-5=9 +
- +
-Hey, look at that... B is one greater than R (not just R << B, BUT: R < B) +
- +
-Our relational chains: +
- +
-  * V < G << O < L < J < K +
-  * M << O < L < J < K +
-  * R < B << O < L < J < K +
- +
-And our chart, of sorts:+
  
 <code> <code>
-B = {    1, 2345,            } +          
-G = {    1, 2, 3, 4, 5,            } +   x------------------ 
-J = {                            } + |   6 10 12 14 16 
-K = {                            9 } + |  11 14 17 22 25 
-L = {                      7       } + | 10 14 20 24 30 34 
-M = { 0, 1, 2, 3, 4, 5,            } + | 12 17 24 31 36 43 
-O = {                            } + 6 | 14 22 30 36 44 52 
-P = { 0, 1, 2, 3, 45,            } + 7 | 16 25 34 43 52 61
-R = { 0, 1, 2, 3, 4,               } +
-V = { 0, 1, 2, 3, 4,               }+
 </code> </code>
  
-If you lookthe only letter we've not yet directly interacted with yet is 'P', although we already know enough about it (that it is 0-5less than O, L, J, and K). And if you look closely, you'll notice that 'P' isn't even present in the letter division problem! So its identity will rely entirely on the proving of the other values.+Okaychecking each possibility for TxY=T (first value needs to equal one's place of result): 
 +  * 2x4 = 10 (one's place is not a 2so this isn'it
 +  * 2x5 = 12 (a possibility!) 
 +  * 2x6 = 14 (nope) 
 +  * 2x7 = 16 (nope) 
 +  * 3x4 = 14 (nope) 
 +  * 3x5 = 17 (nope) 
 +  * 3x6 = 22 (a possibility!) 
 +  * 3x7 = 25 (nope) 
 +  * 4x4 = 20 (nope; alsonot possiblesince T and Y cannot be the same value) 
 +  * 4x5 = 24 (nope) 
 +  * 4x6 = 30 (nope) 
 +  * 4x7 = 34 (nope)
  
-Let's continue on:+Out of twelve possible multiplications, only TWO are valid possibilities2x5 and 3x6
  
-M-K=M, BECAUSE we know M << K, AND BECAUSE we know the subtraction to the right is borrowing from it (because R < B), we have something like this(M-1+10)-K=M+That means we can eliminate some values: 
 +  * T can NOT be 4 
 +  * Y can NOT be 4 or 7
  
-Can't really do much more with it at this point, but it is important to know to help us identify the borrows needing to happen. +Updating our chart:
- +
-===Finding our zero value (R and B)=== +
- +
-Why don't we go ahead and find 0? If you look in the subtraction above the bottom one, we have another "letter minus same letter" scenario, and it doesn't equal K!+
  
 <code> <code>
-          JJGKL +B = {    1                   } 
-         -LKBKV +E = {             4, 5, 6, 7 } 
-          ===== +{ 0                      } 
-           KVRM+{                5, 6, 7 } 
 +{       2, 3             } 
 +{       2, 3, 4, 5, 6    } 
 +{                5, 6    } 
 +Z = {       2, 3, 4, 5, 6    }
 </code> </code>
  
-We KNOW that V << Lso no borrow is happening there.+===Finding KT, and Y=== 
 +With a reduced set of values, we can revisit one of our subtractions, the K-T=Y, specifically.
  
-Therefore, K-K, or 9-9equals 0. So R is 0!+  * can be 56or 7 
 +  * T can be 2 or 3 
 +  * Y can be 5 or 6
  
-... and B is 1! Because of our identified relationship.+So let us try every possible subtraction combination:
  
-Updating things!+  * 5-2=3 (nope; 3 is not a possible Y value) 
 +  * 5-3=2 (nope) 
 +  * 6-2=4 (nope) 
 +  * 6-3=3 (nope; also T and Y cannot be the same) 
 +  * 7-2=5 (possibility!
 +  * 7-3=4 (nope)
  
-|  0  |  R  | +And lookie here! The ONLY identified possibility occurs when is 7T is 2, and Y is 5! Let's update our chart accordingly:
-|  1  |  B  | +
-|  2  |  | +
-|  3  |  | +
-|  4  |  | +
-|  5  |  | +
-|  6  |  O  | +
-|  7  |  L  | +
-|  8  |  J  | +
-|  9  |   | +
- +
-Alsowith the new introduction of M being less than K:+
  
 <code> <code>
-B = {    1                         +B = {    1                   
-= {          3, 4, 5,            += {             4,       
-= {                         8    += { 0                      
-= {                            9 } +K = {                      7 } 
-= {                      7       += {                      
-= {       2, 3, 4, 5,            += {          3, 4,       
-= {                   6          += {                      
-P = {       2, 3, 4, 5,            += {          3, 4,       }
-= { 0                            +
-= {       2, 3, 4,               }+
 </code> </code>
  
-*NOTEG is NOT 2, because G is greater than V (one greater, in fact), so we can similarly whittle that off.+===Finding E and Z=== 
 +Further optimizations are possible:
  
-Relational chains can look as follows now:+  * because we know that Z << E, Z can NOT by 6. 
 +  * 4-3=1, 4-4=0, neither of which are 2 (T). 
 +  * 6-3=3 (no), 6-4=2 (yes)
  
-  * R < B << V < G << O < L < J < K +So, we can identify E as 6, and Z as 4. The chart:
-  * R < B << M << O < L < J < K +
-  * R < B << P << O < L < J < K +
- +
-Basically just down to VG, P, and M. +
- +
-===Finding V and G=== +
- +
-And I think we have the means to find V: notice the second to last subtractionthe "LKBKV". You know where we get that from? Multiplying the divisor (KJKK) by J (since it is the third subtraction taking place). +
- +
-We KNOW the numeric values of K and J, in fact we know the values of L, K, and B. The only thing we don't know is 'V', and since V is in the one's place, that makes things super easy for us. +
- +
-KJKK = 9899 +
-J = 8 +
- +
-So: 9899 x 8 = 79192 = LKBKV! +
- +
-V is 2! +
- +
-Which means, because V < G, that G is 3! +
- +
-Updating our records: +
- +
-|  0  |  R  | +
-|  1  |  B  | +
-|  2  |  V  | +
-|  3  |  G  | +
-|  4  |  | +
-|  5  |  | +
-|  6  |  O  | +
-|  7  |  L  | +
-|  8  |  J  | +
-|  9  |  K  | +
- +
-Also, with the new introduction of M being less than K:+
  
 <code> <code>
-B = {    1                         +B = {    1                   
-= {                            } += {                   6    
-= {                         8    += { 0                      
-K = {                            +K = {                      
-= {                            } += {       2                
-= {             4, 5,            } += {          3,            } 
-= {                   6          += {                      
-= {             4, 5,            } += {                      }
-R = { 0                            } +
-V = {                            }+
 </code> </code>
  
-Relational chains can look as follows now:+===Finding X (due to eliminating any other possibilities)===
  
-  * R < B < V < G << M << O < L < J < K +That leaves no other possibilities for X, placing it at 3.
-  * R < B < V < G << P << O < L < J < K+
  
-===Finding M and discovering P===+Our key:
  
-And then there were 2. We really just need to find M, or P, and we're done. And since there are no 'P' values in the puzzle, we need to target M. So let's look for some candidates: +|  0  |   |
- +
-Hey, how about this: +
- +
-<code> +
-          JJGKL +
-         -LKBKV +
-          ===== +
-           KVRM +
-</code> +
- +
-One's place subtraction: L - V = M. +
- +
-We KNOW L (7) is greater than V (2), so no borrow is happening. +
- +
-L-V=M +
-7-2=5 +
- +
-M is 5. That means P is 4 by process of elimination. +
- +
-Puzzle completed: +
- +
-|  0  |   |+
 |  1  |  B  | |  1  |  B  |
-|  2  |   | +|  2  |   | 
-|  3  |   | +|  3  |   | 
-|  4  |   | +|  4  |   | 
-|  5  |   | +|  5  |   | 
-|  6  |   | +|  6  |   | 
-|  7   L  | +|  7  |  K  |
-|  8  |  J  | +
-|  9   K  | +
- +
-Also, with the new introduction of M being less than K: +
- +
-<code> +
-B = {    1                         } +
-G = {          3                   } +
-J = {                            } +
-K = {                            9 } +
-L = {                      7       } +
-M = {                5             } +
-O = {                            } +
-P = {                            } +
-R = { 0                            } +
-V = {                            } +
-</code> +
- +
-Relational chains can look as follows now: +
- +
-  * R < B < V < G < P < M < O < L < J < K +
- +
-I wasn't able to show it as well in text on the wiki, but I also made a point to mark up each subtraction to show whether a borrow occurred or not: +
- +
-{{ :undefined:borrows.jpg?400 |}}+
  
 To be sure, there are likely MANY, MANY ways to arrive at these conclusions. What is important is being observant, performing little experiments, seeing if there can be any insights to have, even if whittling away knowing what things can NOT be. To be sure, there are likely MANY, MANY ways to arrive at these conclusions. What is important is being observant, performing little experiments, seeing if there can be any insights to have, even if whittling away knowing what things can NOT be.
  
 Your performance on this project will be directly tied to being able to document your process through the puzzle; I have provided this writeup in order to show you an example of what that process may look like. Your performance on this project will be directly tied to being able to document your process through the puzzle; I have provided this writeup in order to show you an example of what that process may look like.
 +
 =====Getting started===== =====Getting started=====
  
-In the **pct0/** sub-directory of the UNIX Public Directory, under a directory by the name of your username, you will find the following files:+In the **pct1/** sub-directory of the UNIX Public Directory, under a directory by the name of your username, you will find the following files:
  
   * **bonus**   * **bonus**
Line 650: Line 454:
  
 If you have a match, congratulations, you unravelled the puzzle correctly. Just remember: evaluation is heavily based on your documentation of the process, not whether or not you can arrive at the correct answer key. If you have a match, congratulations, you unravelled the puzzle correctly. Just remember: evaluation is heavily based on your documentation of the process, not whether or not you can arrive at the correct answer key.
 +
 =====Submission===== =====Submission=====
 By successfully performing this project, you should be submitting files that satisfy the following requirements: By successfully performing this project, you should be submitting files that satisfy the following requirements:
Line 663: Line 468:
  
 <cli> <cli>
-$ submit unix pct0 puzzle.key puzzle.solution +$ submit unix pct1 puzzle.key puzzle.solution 
-Submitting unix project "pct0":+Submitting unix project "pct1":
     -> puzzle.key(OK)     -> puzzle.key(OK)
     -> puzzle.solution(OK)     -> puzzle.solution(OK)
Line 674: Line 479:
  
 <cli> <cli>
-$ submit unix pct0 puzzle.key puzzle.solution bonus.key bonus.solution +$ submit unix pct1 puzzle.key puzzle.solution bonus.key bonus.solution 
-Submitting unix project "pct0":+Submitting unix project "pct1":
     -> puzzle.key(OK)     -> puzzle.key(OK)
     -> puzzle.solution(OK)     -> puzzle.solution(OK)
haas/spring2019/unix/projects/pct1.1556575661.txt.gz · Last modified: 2019/04/29 22:07 by wedge