乔是你的普通BF开发人员。当他接到老板的电话时,他正准备在他们的存储库中签入代码更改。“乔!新客户端的机器坏了!brainfuck解释器在程序执行前将所有单元格设置为随机值。没有时间修复它,您的代码将不得不处理它。”乔并不怎么想,他正准备编写一个程序,把第一个100万个细胞设置为零,这时他的老板又打断了他的话--“.不要考虑使用暴力,代码必须尽可能小。”现在你必须帮助可怜的乔!
您的分数是编译器大小(以字节为单位)的10倍,加上测试用例大小的总和。最低分数明显降低了wins.To对测试用例优化的影响,如果我怀疑任何事情,我保留更改测试用例的权利,并且可能会在选择胜利者之前这样做。
(我从艾索朗格网页和这个网页:http://www.hevanet.com/cristofd/brainfuck/获得了这些信息。)还感谢@Sparr提供最后一个测试用例。
++++++++[>++++[>++>+++>+++>+<<<<-]>+>+>->>+[<]<-]>>.>---.+++++++..+++.>>.<-.<.+++.------.--------.>>+.>++.>,[>,]<[.<]>++++++++++>>+<+[[+++++[>++++++++<-]>.<++++++[>--------<-]+<<]>.>[->[ <++>-[<++>-[<++>-[<++>-[<-------->>[-]++<-[<++>-]]]]]]<[>+<-]+>>]<<]++++[>+++++<-]>[<+++++>-]+<+[>[>+>+<<-]++>>[<<+>>-]>>>[-]++>[-]+>>>+[[-]++++++>>>]<<<[[<++++++++<++>>-]+<.<[>----<-]<]<<[>>>>>[>>>[-]+++++++++<[>-<-]+++++++++>[-[<->-]+[<<<]]<[>+<-]>]<<-]<<-]>++++++++++>+>+[[+++++[>++++++++<-]>.<++++++[>--------<-]+<<<]>.>>[[-]<[>+<-]>>[<<+>+>-]<[>+<-[>+<-[>+<-[>+<-[>+<-[>+<-[>+<-[>+<-[>+<-[>[-]>+>+<<<-[>+<-]]]]]]]]]]]+>>>]<<<],[.[>+<-]>-] (这个序列需要根据输入改变单元号)发布于 2015-04-24 23:00:56
s/</<</g
s/>/>[->[-]>[-]+<<]>/g
s/^/[-]>[-]+</直到编写完程序之后,我才注意到输出也应该是高尔夫球,所以我会选择简短的编译器。而且它的测试工作量太大了,所以如果它不能正常工作,请通知:)
发布于 2017-11-08 17:47:21
编译器大小: 630字节( -10字节,多亏了Zachar)
Hello编译结果大小: 139
10000 : 319正方形
编译器:
#include<string>
#include<map>
#include<stack>
#define B break
#define C case
#define S 30000
#define R m[(p<0)?(p%S)+S:p]
using s=std::string;using P=std::pair<int,int>;s a(s c){char m[S];memset(m,0,S);int p=0,i=0;P r{0,0};std::map<int,int>j;std::stack<int>t;for(int d=0;d<c.size();++d){if(c[d]==91)t.push(d);if(c[d]==93){j[d]=t.top();j[t.top()]=d;t.pop();}}while(i<c.size()){switch(c[i]){C'>':++p;B;C'<':--p;B;C'+':++R;B;C'-':--R;B;C'[':if(!R)i=j[i];B;C']':i=j[i]-1;B;default:B;}++i;r.first=p<r.first?p:r.first;r.second=p>r.second?p:r.second;}s n;for(int i=r.first;i<r.second;++i){n+="[-]>";}n+="[-]"+s(r.second,60)+c;return n;}随机脑功能解说员:
void interpret(const std::string& code) {
char memory[30000];
for (int i = 0; i < 30000; ++i)
memory[i] = std::rand()%256;
int memPtr = 0, insPtr = 0;
std::map<int, int> jump_map;
{
std::stack<int> jstack;
for (int i = 0; i < code.size(); ++i) {
if (code[i] == '[')
jstack.push(i);
if (code[i] == ']') {
jump_map[i] = jstack.top();
jump_map[jstack.top()] = i;
jstack.pop();
}
}
}
while (insPtr < code.size()) {
switch (code[insPtr]) {
case '>': ++memPtr; break;
case '<': --memPtr; break;
case '+': ++memory[memPtr]; break;
case '-': --memory[memPtr]; break;
case '.': std::cout << memory[memPtr]; break;
case ',': std::cin >> memory[memPtr]; break;
case ']': if (memory[memPtr] != 0) insPtr = jump_map[insPtr]; break;
case '[': if (memory[memPtr] == 0) insPtr = jump_map[insPtr]; break;
default:break;
}
++insPtr;
}
}一些注意事项:
发布于 2015-04-27 00:46:04
https://codegolf.stackexchange.com/questions/49185
复制相似问题