That's a nice sparker. Unfortunately, unless there's a faster small spaceship, a gun doesn't seem feasible.bubblegum wrote: November 18th, 2020, 2:05 pmCode: Select all
x = 4, y = 7, rule = R2,C2,S12,16,18-27,B17,19-27,NW1222124442240422444212221 o$2o$4o$b2o$4o$2o$o!
Larger Than Life rule: Marine
-
MathAndCode
- Posts: 5274
- Joined: August 31st, 2020, 5:58 pm
Re: Larger Than Life rule: Marine
I am tentatively considering myself back.
-
lemon41625
- Posts: 370
- Joined: January 24th, 2020, 7:39 am
- Location: 小红点 (if you know where that is)
Re: Larger Than Life rule: Marine
I have finally unravelled the secrets of apgsearching neighbourhoods above 24 cells (ruletrees). Unfortunately, this only works until 28 cells. 
Small spaceships
4c/54o
Non-trivial P296
P11
P13
EDIT:
c/24d Eater
Random reactions I will look for conduits for
====================================
<offtopic>
I have also found that Golly's RuleTreeGen.java is utterly unoptimised and there is (what appears to be) at least a 10x speed up avaliable.
Anyway, code
</offtopic>
Small spaceships
Code: Select all
x = 6, y = 4, rule = R2,C2,S12,16,18-27,B17,19-27,NW1222124442240422444212221
2o2b2o$2o2b2o$bo2bo$b4o!Code: Select all
x = 4, y = 10, rule = R2,C2,S12,16,18-27,B17,19-27,NW1222124442240422444212221
bo$b2o$4o$2b2o$2b2o$2b2o$2b2o$4o$b2o$bo!Code: Select all
x = 6, y = 5, rule = R2,C2,S12,16,18-27,B17,19-27,NW1222124442240422444212221
b4o$6o$6o$b4o$bo2bo!Code: Select all
x = 12, y = 15, rule = R2,C2,S12,16,18-27,B17,19-27,NW1222124442240422444212221
5b3o$4b5o$3b2o2b2o$2bo4b2o$bo5b3o$o8b2o$o10bo2$o10bo$o8b2o$bo5b3o$2bo4b2o$3b
2o2b2o$4b5o$5b3o!Code: Select all
x = 8, y = 15, rule = R2,C2,S12,16,18-27,B17,19-27,NW1222124442240422444212221
3bobo$2bo3bo$b2o3b2o$2b2ob2o$2b5o7$o$3o$3o$o!Code: Select all
x = 9, y = 9, rule = R2,C2,S12,16,18-27,B17,19-27,NW1222124442240422444212221
5bo$4b4o$5b3o$6b3o$bo5bo$3o$b3o$b4o$3bo!Code: Select all
x = 12, y = 7, rule = R2,C2,S12,16,18-27,B17,19-27,NW1222124442240422444212221
o10bo$2o8b2o$2o8b2o$o10bo$2o8b2o$2o8b2o$o10bo!c/24d Eater
Code: Select all
x = 12, y = 13, rule = R2,C2,S12,16,18-27,B17,19-27,NW1222124442240422444212221
10bob$9b3o$9b3o$11bo$12b$12b$12b$12b$12b$12b$12b$4o8b$b2o!Code: Select all
x = 4, y = 4, rule = R2,C2,S12,16,18-27,B17,19-27,NW1222124442240422444212221
b2ob$b2ob$4o$4o!<offtopic>
I have also found that Golly's RuleTreeGen.java is utterly unoptimised and there is (what appears to be) at least a 10x speed up avaliable.
Anyway, code
Code: Select all
package sample.model.rules.ruleloader.ruletree;
import sample.model.Coordinate;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.function.BiFunction;
import java.util.logging.Level;
import java.util.logging.LogManager;
import java.util.logging.Logger;
class Key {
public int[] arr;
public Key(int[] arr) {
this.arr = arr;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Key key = (Key) o;
return Arrays.equals(arr, key.arr);
}
@Override
public int hashCode() {
return Arrays.hashCode(arr);
}
}
/**
* Mostly taken from Golly
*/
public class RuleTreeGen {
private final int numStates;
private final Coordinate[] neighbourhood;
private final BiFunction<Integer, int[], Integer> f;
private int nodeSeq = 0;
private final int[] params;
private final ArrayList<Key> r = new ArrayList<>();
private final HashMap<Key, Integer> world = new HashMap<>();
private final Logger logger;
/**
* Constructs a rule tree with the provided parameters
* @param numStates The number of states in the ruletree
* @param neighbourhood The neighbourhood of the ruletree
* @param f The transition function of the ruletree
*/
public RuleTreeGen(int numStates, Coordinate[] neighbourhood, BiFunction<Integer, int[], Integer> f) {
this.f = f;
this.numStates = numStates;
this.neighbourhood = neighbourhood;
params = new int[neighbourhood.length + 1];
}
private int getNode(Key n) {
Integer found = world.get(n);
if (found == null) {
found = nodeSeq++;
r.add(n);
world.put(n, found);
}
return found;
}
private int recur(int at) {
if (at == 0)
return f.apply(params[params.length - 1], Arrays.copyOfRange(params, 0, params.length - 1));
int[] arr = new int[numStates + 1];
arr[0] = at;
for (int i = 0; i < numStates; i++) {
params[neighbourhood.length + 1 - at] = i;
arr[i + 1] = recur(at - 1);
}
return getNode(new Key(arr));
}
public String getRuleTree() {
// Generating the rule tree
recur(neighbourhood.length + 1);
// Writing the rule tree headers
StringBuilder ruletree = new StringBuilder("@TREE\n");
ruletree.append("num_states=").append(numStates).append("\n");
String neighbourhoodString = Arrays.toString(neighbourhood);
ruletree.append("num_neighbors=").append("[").append(neighbourhoodString, 1,
neighbourhoodString.length() - 1).append(", (0, 0), (0, 0)]\n"); // Add the 2 (0, 0)s at the back
ruletree.append("num_nodes=").append(r.size()).append("\n");
// Ruletree body
for (Key key: r) {
for (int val: key.arr)
ruletree.append(val).append(" ");
ruletree.append("\n");
}
return ruletree.toString();
}
}
Download CAViewer: https://github.com/jedlimlx/Cellular-Automaton-Viewer
Supports:
BSFKL, Extended Generations, Regenerating Generations, Naive Rules, R1 Moore, R2 Cross and R2 Von Neumann INT
And some others...
Supports:
BSFKL, Extended Generations, Regenerating Generations, Naive Rules, R1 Moore, R2 Cross and R2 Von Neumann INT
And some others...
Re: Larger Than Life rule: Marine
I think you should re-examine your priorities. Software should first work and be simple to use and second be efficient.lemon41625 wrote: December 10th, 2020, 8:50 am I have also found that Golly's RuleTreeGen.java is utterly unoptimised and there is (what appears to be) at least a 10x speed up avaliable.
RuleTreeGen.java:
Provides an empty function in which a user can simply insert Java code that generates the next state from the current state.
Can be compiled from a terminal using:
javac RuleTreeGen.java
Can be run from a terminal using:
java RuleTreeGen > MyRule.rule
Works!
Brian Prentice
-
HotWheels9232
- Posts: 559
- Joined: May 25th, 2022, 9:10 pm
- Location: Help! I got dragged away into the middle of nowhere by a LWSS which suddenly launched from a soup
Re: Larger Than Life rule: Marine
Is it actually 2c/7? Seems like 3c/14HelicopterCat3 wrote: November 3rd, 2020, 9:45 amI too scribbled in LifeViewer after creating this rule.Schiaparelliorbust wrote: November 3rd, 2020, 9:25 amHow'd you discover the ships then? I found 2 from scribbling just now from your LifeViewer from your earlier post.HelicopterCat3 wrote: November 3rd, 2020, 9:20 am Golly seems to want to be dumb about these custom neighborhoods, so I'm gonna have to get the new beta build...
Edit: 2 going at c/4, 1 going at 2c/7, and 1 going at c/6.Edit 2: These are the 4 most common, naturally-occuring oscillators I've found in ashCode: Select all
x = 52, y = 45, rule = R2,C2,S4-6,8-9,B6-9,N@839de7 19$44bo$43b4o$44bob2o$44b2ob2o$45b3o$46bobo4$37b2o$37b3o$37b2o$38b2o7$ 27bo$25b4o$26bob2o$27b3o$14b2o$14b2o$14b3o!Code: Select all
x = 66, y = 23, rule = R2,C2,S4-6,8-9,B6-9,N@839de7 8$9b2o29bo$8bob2o14b2o11b3o$8b2ob2o12b4o10b2obo$9b2o15bob2o10b2o$10bo 15b2o13b3o11b2o$42bo11b4o$54b2o2bo$55bo2bo$56b3o!
My rules:
B34q/S23-k(ObliquePufferLife) and
B2n3-n4c5c/S234cz5cPM me to get some help on making rules!
B34q/S23-k(ObliquePufferLife) and
B2n3-n4c5c/S234cz5cPM me to get some help on making rules!
Code: Select all
x = 8, y = 5, rule = B3-k/S23
2o3b2o$obo2bobo$2bo2bo$bo$b2o!-
MathAndCode
- Posts: 5274
- Joined: August 31st, 2020, 5:58 pm
Re: Larger Than Life rule: Marine
I found a signal splitter. (It can also make two minnows or two squids.)
Here is a variant:
This makes it clear that the two squid outputs have different lanes and different timings:
The following reactions allow for the signals to be moved arbitrarily far apart:
These reactions allow for timing adjustments:
Edit: Here are two more reactions that can help move the outputs apart.
Another edit: This is a predecessor of a hydrothermal vent that has six different levels at generation 31,000, eight different levels at generation 88,500, and nine different levels at generation 135,500. It finally stabilizes into a p2 oscillator at generation 173,823.
Yet another edit: Here is a way to shift a squid using a p30 sparker instead of a p14 sparker.
Code: Select all
x = 55, y = 51, rule = R2,C2,S4,6-9,B6-8,N@03ddef
35b2o$35b2o$33b3ob2o$32b4o2b2o$31bob4ob3o$30b7o3bo$30b4o2bo2b3o$28b6o
2b2ob2o$28b2o2b6ob2o$30bo4b2o2b2o$30b3o6b2o$31b2ob6o$32b7o$34bo6$45b3o
$8b3o35b3o$8b3o32bo2bob3o$8b4o36b3o$9b2o30bo4b6o$46b2o3bo$39bo7bo2b3o
$39b3ob2o2b2ob2o$13b3o23b2o2b6ob2o$3o9bob3o23b4o2b2o2b2o$4o6b3o3bo24b
3o6b2o$4o5bo2bo2b3o23b3ob6o$2bo6bo2b2ob2o26b7o$8b6ob2o28bo$7bo3b2o2b2o
$7b2o6b2o$7b2ob6o13b3o$8b7o15b3o$10bo16bo2bob3o$32b3o$25bo4b6o$30b2o3b
o$23bo7bo2b3o$23b3ob2o2b2ob2o$23b2o2b6ob2o$24b4o2b2o2b2o$25b3o6b2o$25b
3ob6o$27b7o18bo$29bo21b4o$52bobo$52b3o!Code: Select all
x = 53, y = 51, rule = R2,C2,S4,6-9,B6-8,N@03ddef
33b2o$33b2o$31b3ob2o$30b4o2b2o$29bob4ob3o$28b7o3bo$28b4o2bo2b3o$26b6o
2b2ob2o$26b2o2b6ob2o$28bo4b2o2b2o$28b3o6b2o$29b2ob6o$30b7o$32bo6$43b3o
$44b3o$41bo2bob3o$9bo36b3o$8b3o28bo4b6o$8b4o32b2o3bo$9b4o24bo7bo2b3o$
11b3o23b3ob2o2b2ob2o$11bob2o22b2o2b6ob2o$11b4o23b4o2b2o2b2o$11b5o23b3o
6b2o$b2o6bobo2b2o23b3ob6o$4o4bo2bo2b3o24b7o$b3o7b2ob2o27bo$2b11ob2o$3b
2ob2o2b2o2b2o$4b4o5b2o12b3o$5b9o14b3o$7b6o12bo2bob3o$9bo20b3o$23bo4b6o
$28b2o3bo$21bo7bo2b3o$21b3ob2o2b2ob2o$21b2o2b6ob2o$22b4o2b2o2b2o$23b3o
6b2o$23b3ob6o$25b7o18bo$27bo21b4o$50bobo$50b3o!Code: Select all
x = 53, y = 55, rule = R2,C2,S4,6-9,B6-8,N@03ddef
30b3o$30b3o$30b4o$31b2o4$35b3o$22b3o9bob3o$22b4o6b3o3bo$22b4o5bo2bo2b
3o$24bo6bo2b2ob2o$30b6ob2o$29bo3b2o2b2o$29b2o6b2o$29b2ob6o$30b7o$32bo
6$43b3o$44b3o$41bo2bob3o$9bo36b3o$8b3o28bo4b6o$8b4o32b2o3bo$9b4o24bo7b
o2b3o$11b3o23b3ob2o2b2ob2o$11bob2o22b2o2b6ob2o$11b4o23b4o2b2o2b2o$11b
5o23b3o6b2o$b2o6bobo2b2o23b3ob6o$4o4bo2bo2b3o24b7o$b3o7b2ob2o27bo$2b11o
b2o$3b2ob2o2b2o2b2o$4b4o5b2o12b3o$5b9o14b3o$7b6o12bo2bob3o$9bo20b3o$23b
o4b6o$28b2o3bo$21bo7bo2b3o$21b3ob2o2b2ob2o$21b2o2b6ob2o$22b4o2b2o2b2o
$23b3o6b2o$23b3ob6o$25b7o18bo$27bo21b4o$50bobo$50b3o!Code: Select all
x = 40, y = 25, rule = R2,C2,S4,6-9,B6-8,N@03ddef
10bo$8b3o$9bob2o$9bo2b2o$9bo3bo$9bo4bo$9bo5bo$15bo$bo6bo7bo$b6o2bob2o
2b2o$2o10bo2b3o$2bo6bo2b2ob2o$2b2o5b5ob2o$3b2o6b2o2b2o$5bo9b2o$6b2ob7o
$8b7o$10bo4$37b2o$37b3o$37b3o$39bo!Code: Select all
x = 35, y = 59, rule = R2,C2,S4,6-9,B6-8,N@03ddef
10bo2$10bo5$13b3o$12b5o$10bo5bo$obo6bobob2ob3o$10bo2b2ob3o$8bo5bo2b3o
$7b2ob2o2b2ob2o$7b2ob6ob2o$7b2o4b2o2b2o$8b4o4b2o$10b7o$10b6o$12bo3$23b
o$23b3o$22b3obo$23b2o2bo$27bo3$29bo$16bo11b3o$14b4o6b7o$15b3o5bo2bo2b
3o$15bo7bo2b2ob2o$16bo6b5ob2o$17b2o4bob2o2b2o$22b2o4b2o$21b8o$22b6o$24b
o16$32b2o$31b4o$31b4o$32b2o!Code: Select all
x = 51, y = 29, rule = R2,C2,S4,6-9,B6-8,N@03ddef
9bo$9b3o$8b3obo$9b2o2bo$13bo3$15bo$2bo11b3o$4o6b7o$b3o5bo2bo2b3o$bo7b
o2b2ob2o10b3o$2bo6b5ob2o10b3o$3b2o4bob2o2b2o10b4o$8b2o5b2o11b2o$7b9o$
8b7o$10bo$32b3o$19b3o9bob3o$19b4o6b3o3bo$19b4o5bo2bo2b3o$21bo6bo2b2ob
2o$27b6ob2o12b2o$26bo3b2o2b2o11b4o$26b2o6b2o11b4o$26b2ob6o13b2o$27b7o
$29bo!Code: Select all
x = 68, y = 40, rule = R2,C2,S4,6-9,B6-8,N@03ddef
20b3o$19b2ob2o$20bo2b2o$21b4o$21bo3bo$13b4o5bo3bo$12bob4o4b2o2b2o$11b
o2b3obo2b3o2b2o$10b2o2bo7b2o2b2o$10b2o2b2o2b2o3bo2b3o$10bo3b7o2b2ob2o
$9bo4bobob7ob2o$10b6o6b2o2b2o$9bob2o2b2o9b2o$17b10o$18b8o$21bo2$13b3o
$12b5o$10bo5bo$obo6bobob2ob3o$10bo2b2ob3o$8bo5bo2b3o$7b2ob2o2b2ob2o$7b
2ob6ob2o$7b2o4b2o2b2o$8b4o5b2o$10b8o$10b7o$12bo5$65bo$64b3o$63b2obo$64b
4o$66bo!Code: Select all
x = 33, y = 33, rule = R2,C2,S4,6-9,B6-8,N@03ddef
22b3o$21b5o$19bo5bo$18bobob2ob3o$19bo2b2ob3o$17bo5bo2b3o$16b2ob2o2b2o
b2o$16b2ob6ob2o$16b2o4b2o2b2o$17b4o5b2o$19b8o$19b7o$21bo4$6b3o$5b5o$3b
o5bo$2bobob2ob3o$3bo2b2ob3o$bo5bo2b3o$2ob2o2b2ob2o$2ob6ob2o$2o4b2o2b2o
$b4o5b2o$3b8o$3b7o$5bo$30b2o$29b4o$29b4o$30b2o!Code: Select all
x = 29, y = 29, rule = R2,C2,S4,6-9,B6-8,N@03ddef
22b3o$21b5o$19bo5bo$18bobob2ob3o$19bo2b2ob3o$17bo5bo2b3o$16b2ob2o2b2o
b2o$16b2ob6ob2o$16b2o4b2o2b2o$17b4o5b2o$19b8o$19b7o$21bo4$6b3o$5b5o$3b
o5bo$2bobob2ob3o$3bo2b2ob3o$bo5bo2b3o$2ob2o2b2ob2o$2ob6ob2o$2o4b2o2b2o
13b2o$b4o5b2o12b4o$3b8o13b4o$3b7o15b2o$5bo!Edit: Here are two more reactions that can help move the outputs apart.
Code: Select all
x = 47, y = 27, rule = R2,C2,S4,6-9,B6-8,N@03ddef
7b3o$7b3o$7b5o$7b2o2bo$7b5o$7b7o$6b4o3bo$7o2bo2b3o$7o2b2ob2o$3ob7ob2o
$2bob2o2b2o2b2o$2b4o5b2o$5bob5o14bo$5b6o15b3o$7bo17b5o$26bo3bo$26bo3b
o$26b6o$25b3o3bo$20bo3bo2bo2b3o$18b7o2b2ob2o$19b2o2b6ob2o$19b2o2bo2b2o
2b2o11b3o$20bo2bo5b2o12b3o$21b3ob5o14b3o$23b6o$25bo!Code: Select all
x = 58, y = 36, rule = R2,C2,S4,6-9,B6-8,N@03ddef
10bo$8b3o$9bob2o$9bo2b2o$9bo3bo$9bo4bo$9bo5bo$15bo$bo6bo7bo$b6o2bob2o
2b2o$2o10bo2b3o$2bo6bo2b2ob2o$2b2o5b5ob2o$3b2o6b2o2b2o$5bo8b2o$6b2ob6o
$8b6o16bo$10bo19b3o$29b5o$30bo3bo$30bo3bo$30b6o$29b3o3bo$24bo3bo2bo2b
3o$22b7o2b2ob2o$23b2o2b6ob2o$23b2o2bo2b2o2b2o$24bo2bo5b2o$25b3ob5o$27b
6o$29bo3$54b3o$54b3o$55b3o!Another edit: This is a predecessor of a hydrothermal vent that has six different levels at generation 31,000, eight different levels at generation 88,500, and nine different levels at generation 135,500. It finally stabilizes into a p2 oscillator at generation 173,823.
Code: Select all
x = 10, y = 10, rule = R2,C2,S4,6-9,B6-8,N@03ddef
2b3o$b2ob3o$4o3bo$ob7o$2obo2b3o$bobo3b2o$bob2o2bo$2b8o$3b3ob3o$7b3o!Yet another edit: Here is a way to shift a squid using a p30 sparker instead of a p14 sparker.
Code: Select all
x = 11, y = 24, rule = R2,C2,S4,6-9,B6-8,N@03ddef
2bo2b2o$bob4o$o3b2ob2o$bobobob2o$b2o2bob2o$5o2b2o$2o4b2o$2b5o$2b4o12$
8b2o$7b4o$7b4o$8b2o!I am tentatively considering myself back.