Initial data commit
This commit is contained in:
parent
72d218235f
commit
f23f22d71c
199087 changed files with 3378941 additions and 0 deletions
54
Task/Fractran/Java/fractran.java
Normal file
54
Task/Fractran/Java/fractran.java
Normal file
|
|
@ -0,0 +1,54 @@
|
|||
import java.util.Vector;
|
||||
import java.util.regex.Matcher;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
public class Fractran{
|
||||
|
||||
public static void main(String []args){
|
||||
|
||||
new Fractran("17/91 78/85 19/51 23/38 29/33 77/29 95/23 77/19 1/17 11/13 13/11 15/14 15/2 55/1", 2);
|
||||
}
|
||||
final int limit = 15;
|
||||
|
||||
|
||||
Vector<Integer> num = new Vector<>();
|
||||
Vector<Integer> den = new Vector<>();
|
||||
public Fractran(String prog, Integer val){
|
||||
compile(prog);
|
||||
dump();
|
||||
exec(2);
|
||||
}
|
||||
|
||||
|
||||
void compile(String prog){
|
||||
Pattern regexp = Pattern.compile("\\s*(\\d*)\\s*\\/\\s*(\\d*)\\s*(.*)");
|
||||
Matcher matcher = regexp.matcher(prog);
|
||||
while(matcher.find()){
|
||||
num.add(Integer.parseInt(matcher.group(1)));
|
||||
den.add(Integer.parseInt(matcher.group(2)));
|
||||
matcher = regexp.matcher(matcher.group(3));
|
||||
}
|
||||
}
|
||||
|
||||
void exec(Integer val){
|
||||
int n = 0;
|
||||
while(val != null && n<limit){
|
||||
System.out.println(n+": "+val);
|
||||
val = step(val);
|
||||
n++;
|
||||
}
|
||||
}
|
||||
Integer step(int val){
|
||||
int i=0;
|
||||
while(i<den.size() && val%den.get(i) != 0) i++;
|
||||
if(i<den.size())
|
||||
return num.get(i)*val/den.get(i);
|
||||
return null;
|
||||
}
|
||||
|
||||
void dump(){
|
||||
for(int i=0; i<den.size(); i++)
|
||||
System.out.print(num.get(i)+"/"+den.get(i)+" ");
|
||||
System.out.println();
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue