Ivo*_*zel 26 language-agnostic code-golf rosetta-stone
您的程序通过标准输入接收以下级别(没有换行符).
然后它必须打印出成功完成关卡所需的命令.
所有级别都是4行高,每行63个字符宽.这使得每个级别总共252个字符.
> ______ ____ ________ ___ <
> C ______| | | | C __| | | | ____E<
>S______ __ ____| | | |_____| |__| |___| <
> xx xx xx <
Run Code Online (Sandbox Code Playgroud)
注意: > <仅用于说明边框,它们不包含在程序的输入中.还要注意你的文本编辑器,因为我多次搞乱了空白
连续命令堆叠在一起.
F表示你会摔倒的地方(记住你在跌倒时不能做任何事情),
MMMF MMMF
M MMMMMMJ MMMMF M MMMMMMMMJ MMMF
M J MMMFMMMF MMMMMMJ| | | |F J MMJ| | | |F MMMMME
SMMMJMJ MJ MMMJ| | | |MMJMJ| |__| |MMJ|
xx xx xx
Run Code Online (Sandbox Code Playgroud)
产生的命令序列,长度为75个字符:
MMMMJJMMJMMMMJMMMMMMJMMMMMMJMMMMMMJMMMMMMMMMJJMMJMMJMMMMMMMMJMMMMMMMMJMMMMM
Run Code Online (Sandbox Code Playgroud)
希望这会产生一些有趣的结果......而不是大量的火焰:O
好吧,有比我最初想到的更多的可能性,我为所有的编辑道歉.
HoL*_*ieR 14
使用Javascript:
短版(334 280 256 240 238 236 233 223 207 205 196 184 182个字符)
a=prompt();j=i=0;while(a[++j*63]<(o="M"));while(++i<62){while(a[h=j*63+i]<"_")j++;if(a[h-63]>"B")o+="JJ";if(a[h+1]>"z")o+="J",j--;if(a[h+3]+a[h+1]=="_ ")o+="JMM",i+=2;o+="M"}alert(o)
Run Code Online (Sandbox Code Playgroud)
注意: Javascript方法提示符往往会删除某些浏览器上的空间(例如:Google Chrome).对于那些浏览器,它可能无法正常工作.在其他人(例如:Firefox)上,它会正常工作.
评论版
a=prompt(); // Read the input //
j=i=0;
while(a[++j*63]<(o="M")); // Place the cursor at the "S" //
while(++i<62){ // While we are not at the end point //
while(a[h=j*63+i]<"_")j++; // If we are on a space, we fall //
if(a[h-63]>"B")o+="JJ";// We jump for coins //
if(a[h+1]>"z")o+="J",j--; // We jump when we reach a wall //
if(a[h+3]+a[h+1]=="_ ")o+="JMM",i+=2; // We jump on gap //
o+="M" // We add the movemment in the output
}
alert(o) // Output
Run Code Online (Sandbox Code Playgroud)
Chr*_*heD 10
基本上与HoLyVieR相同的方法(我想知道是否有很多完全不同的方向解决方案).从stdin读取.
更新1(318 - > 302):不检查E但假设它在63位(如评论中所述).
更新2(302 - > 300):改变range(0,252,63)到(0,63,126,189)(两个完整字符)
更新3(300 - > 284):似乎raw_input还获取stdin这样import sys等可以被丢弃.
更新4(284 - > 277):[y][x+3]=="_"and p[y][x+1]==" "到p[y][x:x+4]==list("_ _")
更新5(277 - > 206):去了字符串,而不是2维列表处理,大救...
更新6(206 - > 203):实施建议的评论HoLyVieR的答案(由Nabb提供)
更新7(203 - > 191):通过使用布尔字符串构建来打破200字符限制...
更新8(191 - > 184):小调整
欢迎所有意见或建议!
注意:我添加了一个(不需要的)\并newline在下面的代码中(EOL 5-> 6)(以避免滚动条在这里)
l=raw_input()
x,y,o=0,l.index('S')//63,''
while x<62:
while l[y*63+x]==" ":y+=1
b=y*63+x;g=l[b+1]>"z";h=l[b:b+4]=="_ _";o+=(l[b-63]>"A")*"JJ"+g*"J"+h*"JMM"+\
"M";y-=g;x+=1+h*2
print o
Run Code Online (Sandbox Code Playgroud)
用法: python 2dplatform.py < level.txt