Better BF function conversions
This commit is contained in:
parent
ffcd0000c2
commit
3044ef91e3
|
@ -209,9 +209,11 @@ impl Value {
|
||||||
Value::Int(i) => Functio::BfFunctio {
|
Value::Int(i) => Functio::BfFunctio {
|
||||||
instructions: {
|
instructions: {
|
||||||
let instruction_mappings = [b'[', b']', b'+', b'-', b',', b'.', b'<', b'>'];
|
let instruction_mappings = [b'[', b']', b'+', b'-', b',', b'.', b'<', b'>'];
|
||||||
std::iter::successors(Some(i), |i| Some(i >> 3))
|
std::iter::successors(Some(i as usize), |i| {
|
||||||
|
Some(i / instruction_mappings.len())
|
||||||
|
})
|
||||||
.take_while(|&i| i != 0)
|
.take_while(|&i| i != 0)
|
||||||
.map(|i| instruction_mappings[(i & 0x07) as usize])
|
.map(|i| instruction_mappings[i % instruction_mappings.len()])
|
||||||
.collect()
|
.collect()
|
||||||
},
|
},
|
||||||
tape_len: crate::brian::DEFAULT_TAPE_SIZE_LIMIT,
|
tape_len: crate::brian::DEFAULT_TAPE_SIZE_LIMIT,
|
||||||
|
|
Loading…
Reference in a new issue