下面的代码执行10到20代之间所需的代码。
'switch'表示来自“植物的算法之美”的L系统问题的无上下文有限状态自动机,第5页并不是作业。我打算在Xilinx Spartan3 FPGA上使用MicroBlaze处理器对其进行建模,但我最初在软件中开发仿真以识别尽可能多的问题。
但是我现在希望修改程序,以便'switch'部分可用于提供并行操作,而不是像现在一样顺序操作。
我知道我可以用if ... else的块来替换开关。
因此,我不想做的是将开关封装到一个类似于现在的字符输入和字符输出的类中。然后创建一个开关对象的ArrayList,使每个新对象都有一个与正确的cellType索引匹配的索引,因此对于每一代,所有的单元格都是并行而不是顺序更新的。可能是一个集合可能是前进的方向。
任何指针都会有所帮助。
斯图尔特。
import javax.swing.*;
import java.awt.event.*;
import java.util.*;
public abstract class D0Lsimple1 extends JFrame implements ActionListener {
//private static Object celltype;
public static void d0lSimple1() {
// Open a window to get the time cycle length and convert from a string
// to an integer.
String tc = JOptionPane
.showInputDialog("Enter number of generation cycles, must be between 10 and 20.");
int tcycle = Integer.parseInt(tc);
// create an ArrayList with seed cell A.
List<Character> cellType = new ArrayList<Character>();
cellType.add('A');
System.out.println("cellType: " + cellType);
List<Character> newType = new ArrayList<Character>();
while (tcycle > 0) {
int procid = (cellType.size() - cellType.size());
while (procid != cellType.size()) {
char type = cellType.get(procid).charValue();
switch (type) {
case 'A':
newType.add('C');
newType.add('B');
break;
case 'B':
newType.add('A');
break;
case 'C':
newType.add('D');
newType.add('A');
break;
case 'D':
newType.add('C');
break;
default:
System.out.println("Invalid cell type." + type);
break;
}
procid++;
}
List<Character> temp = new ArrayList<Character>(cellType);
cellType.clear();
cellType.addAll(newType);
newType.clear();
// newType.addAll(temp);
System.out.println("procid: " + procid);
System.out.println("cellType: " + cellType);
/*
* When using this program do not input a number for growth cycles
* greater than 37, as my computer ran out of resources.
* For inputs greater than 8 one of the println line should be // out
* dependent on which is more important.
*
*/
tcycle--;
}
}
public static void main(String[] args) {
// Schedule a job for the event-dispatching thread:
// creating and showing this application's GUI.
javax.swing.SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
d0lSimple1();
}
}
);
}
}