中秋节已经开始了!
不幸的是,我所有的月饼都被偷了--对像我这样的小人物来说,月饼太贵了,我恐怕今年吃不下了!
所以我求助于你。你能给我做一些吗?
对于那些不知道的人,让我教你月饼是什么样子的。
月饼有很多种大小!
所以当我想要的时候,我会给你我的意见。
下面是我想要的输出的一些例子:
大小月饼n= 3:
(@@@@@)
(@MAF@)
(@@@@@) 大小月饼n= 6:
(@@@@@@@@@@@)
(@ @)
(@ M @)
(@ F @)
(@ @)
(@@@@@@@@@@@) 也就是说,大小为n的月饼是:
你最好别把你的小月饼扔给我!
假设输入总是n >= 3。
月饼还包括下列装饰之一:
哪个不重要,只要它是垂直的和水平的中心。
它可以是垂直的也可以是水平的!
我要多样化!
如果你真的要给我做两个同样的月饼,装饰最好是不同的!
也就是说,具有完全相同输入的程序的多次执行不一定总是产生相同的装饰。
我等不及要吃你的月饼了,所以我越早收到它们(你的代码越短)越好!
祝好运!
对于那些对这些装饰品感到好奇的人:
它们是中秋节所有其他名字的首字母.
在这篇文章的顶部链接的维基百科页面上可以找到一个列表。
没有关于前导和尾随空格的规则。
想吃多少就吃多少!
这些装饰品一定在你月饼的正中!
在水平装饰品上,这意味着它必须在蛋糕的中线上,装饰字符串左右的字符数必须相等。
在垂直装饰上,这意味着它必须驻留在蛋糕的中间栏中,并且装饰上面和下面的字符数必须相等。
不是所有的装饰品都必须使用!
唯一的要求是,对于任何给定的输入,必须有一种以上的可能性。这些可能性也不需要是偶数。
功能是可以接受的。
发布于 2016-09-15 18:56:17
从这里开始应该可以把这个打下去.
A="HMFMAFCF";i,j,k,t;f(n){t=time();char*S=n&1?t&1?A:A+3:t&1?A+1:A+6;for(;i<n;i++,puts(")"))for(j=0,k=2*n-1,putchar(40);j<k;putchar(0==i*j|i==n-1|j==k-1?64:n&1&i==n/2&j>n-3&j<n+1?*S++:n&1?32:(i==n/2-1|i==n/2)&j>n-2&j<n?*S++:32),j++);}巨大的挑战,这是困难和丑陋的代码。
用这个主要功能运行;
main(c,v)char**v;
{
f(atoi(v[1]));
}发布于 2016-09-15 19:27:46
@echo off
set/pn=
set f=HMAC
set/ao=n%%2,u=n/2,l=h=u+1,d=%random%%%2*2+1
if %o%==1 set/al=u=0,d/=2
set c=
for /l %%i in (4,1,%n%) do call set c= %%c%%
call:l %n%
for /l %%i in (2,1,%n%) do call:l %%i
exit/b
:l
set s=
if %1==%h% call set s=%%f:~%d%,2%%F
if %1==%u% call set s= %%f:~%d%,1%%
if %1==%l% set s= F
set s=(@%c%%s%%c%@)
if %1==%n% set s=%s: =@%
echo %s%只会酌情输出HMF、MAF、MF或CF。注意:某些行以空格结尾。变量:
n输入参数(从STDIN读取)f装饰前缀(暗含F后缀)o奇怪的n (只使用一次,但if语句不接受表达式)l行,或水平装饰的0行u行,或水平装饰的0行h行(被垂直装饰覆盖)d指数(水平为0/1,垂直为1/3 )c字符串n-3空间s输出字符串%1行号,但是对于第一行也设置为n,所以第一行和最后一行都使用@s而不是空格。发布于 2016-09-20 11:48:57
高尔夫球:
var v=n%2==0;int l=n+n-3,h=n-2,e=v?0:1,c=e+2;var c2=v?"MFZJLFRFCF":"MAFHMFJCJTTT";var r=new Random().Next(3+e);var f=new String(c2.Skip(c*r).Take(c).ToArray());var mc="";for (var i=0;i < h;i++) {var x="";if (!v && i==((h / 2))) { x=f;} else if (v && ((i==h / 2) || (i==(h/2)-1))) { x +=f[i%2==1?0:1];} var es=x.PadLeft((l/2)+1+e,' ').PadRight(l,' ');mc +="(@"+es+"@)\n";}var b="("+"".PadLeft(l+2, '@')+")";mc=b+"\n"+mc+ b; Console.WriteLine(mc);测试它这里
未高尔夫球:
var v = n % 2 == 0;
int l = n + n - 3, h = n - 2, e = v ? 0 : 1, c = e + 2;
var c2 = v ? "MFZJLFRFCF" : "MAFHMFJCJTTT";
var r = new Random().Next(3 + e);
var f = new String(c2.Skip(c * r).Take(c).ToArray());
var mc = "";
for (var i = 0; i < h; i++)
{
var x = "";
if (!v && i == ((h / 2)))
{
x = f;
}
else if (v && ((i == h / 2) || (i == (h / 2) - 1)))
{
x += f[i % 2 == 1 ? 0 : 1];
}
var emptySpace = x.PadLeft((l / 2) + 1 + e, ' ').PadRight(l, ' ');
mc += "(@" + emptySpace + "@)\n";
}
var b = "(" + "".PadLeft(l + 2, '@') + ")";
mc = b + "\n" + mc + b;
Console.WriteLine(mc);https://codegolf.stackexchange.com/questions/93288
复制相似问题