0. Program/Idea of Exercise - SW Architecture (OOP) on CA Meet CA, Implement 1D CA in naive form (eg. procedural), Refactor code to OOP architecture - exercise on develop of SW architecture 1. Meet a Cellular Automaton (CA) [Cellular Automaton] https://mathworld.wolfram.com/CellularAutomaton.html [Elementary Cellular Automaton] https://mathworld.wolfram.com/ElementaryCellularAutomaton.html [Cellular automaton] https://en.wikipedia.org/wiki/Cellular_automaton 1.2 What is a celluar automation? 1.2.2 Thing, what should be the purpose, we meet a CA? Why we meantion it on a excercise? (note: there could be many purposes) 1.3 (What is a) General CA 1.4. (What is a) 1D CA 1.6. Our case CA: 1D; binary; markovSize = 1; circular array 2.0. Implement 1D CA - by Yourselves (procedural? do it in "fast prototyping" for; we will recfator the code even the architecture of he code) 2.1. Is there any problem with assignment? Do you know all? What about better specification assignment? 2.1.1. What params CA function take? [CellularAutomaton] https://reference.wolfram.com/language/ref/CellularAutomaton.html 2.2.1. Way of input? Way of output? - input: a) function parameters b) read from standard input - output that is question? see OOP refactor 2.3. How represent field/grid and rules? a) string representaion of field and triplet use as a key in dictionary? A: simple, nice use of dictionary; DisAdvantages: slow string opetation (as concatenation; immutable var) b) int/byte/bool circular array; c) representation of rules: - dictionary, - ifelse or case (in this case only 8 states; bigger markov size neigbours, more dimension -> problem) - array: read the triplet as s number that indexes the array mapping result - bits magics 4.0 Refactor CA to OOP architecture (with reading the configuration from stdin and rule represenation by 0-255 rule codes) - reader, parser, rule transformer, configuration, CA, printer (which of them static? only methods? ruleTransformer, parser?)