Skip to content

Commit

Permalink
complementer
Browse files Browse the repository at this point in the history
  • Loading branch information
kostmo committed Jan 27, 2023
1 parent b5e1e78 commit 6077349
Show file tree
Hide file tree
Showing 3 changed files with 101 additions and 11 deletions.
20 changes: 18 additions & 2 deletions data/scenarios/Challenges/_dna/solution.sw
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@

def doN = \n. \f. if (n > 0) {f; doN (n - 1) f} {}; end;

def waitWhileHere = \item.
Expand All @@ -8,6 +7,13 @@ def waitWhileHere = \item.
} {};
end;

def waitUntilHere = \item.
hereNow <- ishere item;
if hereNow {} {
waitUntilHere item;
};
end;

def moveToPattern =
turn back;
move;
Expand All @@ -24,15 +30,23 @@ def moveToOtherRow =
move;
end;

def waitForItem : dir -> cmd text = \d.
item <- scan d;
case item (\_. waitForItem d) return;
end;

/**
Store the observed entities in the recursion stack.
*/
def replicatePattern = \standbyFunc. \n.
if (n > 0) {
_thing <- scan down;
thingTemp <- waitForItem down;
let thing = thingTemp in
move;
replicatePattern standbyFunc $ n - 1;

place thing;
move;
} {
standbyFunc;
}
Expand All @@ -46,6 +60,8 @@ def go =
waitWhileHere sentinel;
moveToPattern;
replicatePattern moveToOtherRow 32;
move;
_ <- grab;
end;

go;
85 changes: 79 additions & 6 deletions data/scenarios/Challenges/_dna/verifier.sw
Original file line number Diff line number Diff line change
Expand Up @@ -16,22 +16,84 @@ def getBaseForNumber = \n.
};
end;

def getNumberForBase = \n.
if (n == "guanine") {
return 0;
} {
if (n == "cytosine") {
return 1;
} {
if (n == "adenine") {
return 2;
} {
return 3;
};
};
};
end;

def getComplementNumber = \n.
if (n == 0) {
return 1;
} {
if (n == 1) {
return 0;
} {
if (n == 2) {
return 3;
} {
return 2;
};
};
};
end;

def waitForFlower =
flowerHere <- ishere "flower";
if flowerHere {} {

def waitWhileHere = \item.
stillHere <- ishere item;
if stillHere {
wait 2;
waitForFlower;
waitWhileHere item;
} {};
end;

def waitUntilHere = \item.
hereNow <- ishere item;
if hereNow {} {
wait 2;
waitUntilHere item;
};
end;

def myStandby =
teleport self (1, -4);
_flower <- grab;
teleport self (3, -11);
waitWhileHere "bit (0)";
teleport self (36, -11);
turn back;
end;

def waitForItem : dir -> cmd text = \d.
item <- scan d;
case item (\_. waitForItem d) return;
end;

def placeComplements = \n.
if (n > 0) {
item <- waitForItem left;
baseNumber <- getNumberForBase item;
complementNumber <- getComplementNumber baseNumber;
newItem <- getBaseForNumber complementNumber;
create newItem;
place newItem;
move;
placeComplements $ n - 1;
} {
selfdestruct;
};
end;

def placeBase = \standbyFunc. \n.

if (n > 0) {
Expand All @@ -52,14 +114,25 @@ def placeBase = \standbyFunc. \n.
};
end;

def spawnComplementer =
create "treads";
create "scanner";
_buddy <- build {
turn right;
move;
turn left;
placeComplements 32;
};
end;

def makeDnaStrand =
teleport self (5, -2);
spawnComplementer;
placeBase myStandby 32;

end;

def go =
waitForFlower;
waitUntilHere "flower";
makeDnaStrand;
end;

Expand Down
7 changes: 4 additions & 3 deletions data/scenarios/Challenges/dna.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ name: DNA
author: Karl Ostmo
description: |
Splice organisms
creative: false
creative: true
seed: 1
objectives:
- goal:
Expand Down Expand Up @@ -83,7 +83,7 @@ entities:
- One of the four nucleobases in DNA.
- Is paired with "adenine".
properties: [portable, known]
known: []
known: [bit (0), bit (1)]
world:
default: [grass]
upperleft: [0, 0]
Expand All @@ -102,6 +102,7 @@ world:
':': [blank]
'v': [blank, null, verifier]
'B': [stone, null, base]
'0': [blank, bit (0)]
map: |
..................................................................
.....┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬.............................
Expand All @@ -114,7 +115,7 @@ world:
..................................................................
..................................................................
.....┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬.............................
.....::::::::::::::::::::::::::::::::.............................
...0.::::::::::::::::::::::::::::::::.............................
.....::::::::::::::::::::::::::::::::..┌┐.........................
.....┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴──┤:.........................
.......................................└┘.........................
Expand Down

0 comments on commit 6077349

Please sign in to comment.