Lines Matching refs:Tape
10 bool tape;
16 // An infinite tape!
17 struct Tape {
18 constexpr Tape() : l(0), val(false), r(0) {}
19 constexpr Tape(const Tape &old, bool write) :
21 constexpr Tape(const Tape &old, Dir dir) :
26 const Tape *l;
28 const Tape *r;
30 constexpr Tape update(const Tape &old, bool write) { return Tape(old, write); }
31 constexpr Tape move(const Tape &old, Dir dir) { return Tape(old, dir); }
33 // Run turing machine 'tm' on tape 'tape' from state 'state'. Return number of
35 constexpr unsigned run(const State *tm, const Tape &tape, unsigned state) {
37 run(tm, move(update(tape, tm[state][tape.val].tape),
38 tm[state][tape.val].dir),
39 tm[state][tape.val].next) + 1;
48 static_assert(run(bb3, Tape(), 0) == 21, "");
56 static_assert(run(bb4, Tape(), 0) == 107, "");