编写一个对给定整数n“反应”的程序或函数(通过函数参数/args/stdin输入)
这个程序不关心负数,喜欢偶数,不喜欢奇数,害怕数字13。
它应输出以下内容:
--------------------------
| |
| |
(| _ _ |)
| |
| |
| |
| |
| oooooooooo |
| |
| |
| |
-------------------------- --------------------------
| |
| |
(| ^ ^ |)
| |
| |
| |
| o o |
| oooooooooo |
| |
| |
| |
-------------------------- --------------------------
| |
| |
(| > < |)
| |
| |
| |
| |
| oooooooooo |
| o o |
| |
| |
-------------------------- --------------------------
| |
| |
(| (O) (O) |)
| |
| |
| oooooooooo |
| o o |
| oooooooooo |
| |
| |
| |
--------------------------以字节为单位的最短解决方案获胜。
发布于 2014-09-13 02:44:27
S24*aB*2li_D=3{_0<2{_2%}?}?\;:X"^^<>__":s"(O)"a2*+2/=~6X3=-{S*_@+_,C\-S*2*+@@++}:F~t7'o5*_7F:MtX3={5Mt6'o_7Ft}*X2<{X2*6+'o_5Ft}*{" |"\+'|+}%S'-26*+aa2*\*_3=1>"()"\*3\tN*在http://cjam.aditsu.net/试一试
高级解释:
S24*aB*为没有边的面构造了一个充满空间的矩阵。
li_D=3{_0<2{_2%}?}?\;:X读取数字并将其转换为0(偶数)、1(奇数)、2(负)或3 (13),并将其存储在X中。
X"^^<>__":s"(O)"a2*+2/=~选择眼睛类型(2个字符串)
{S*_@+_,C\-S*2*+@@++}:F -函数F接受两个字符串(例如S1,S2)和一个数字(例如N),并生成一个包含N个空格、S2、其他空格、S1、N个空间的24字符字符串。
2 (eyes) 6X3=- (F)~t将眼睛线放置在矩阵中
7'o5*_7F:Mt在矩阵中放置常用的口线,并将其保存在M中。
X3={5Mt6'o_7Ft}*,如果X是3,它又将M放在矩阵中,高出2行,并将口边放在中间。
X2<{X2*6+'o_5Ft}*如果X为0或1,则将嘴角放置在适当的位置
{" |"\+'|+}%在每条线上增加垂直边和左边的空格。
S'-26*+aa2*\*添加水平边
_3=1>"()"\*3\t增加耳朵
N*添加换行符
发布于 2014-09-10 18:34:11
当然不会赢得任何奖项,而是一种不同的做事方式。
高尔夫球:
class P{static void Main(string[]A){int j=64,i,r=0,n=int.Parse(A[0]);for(var f=(n<0?"IDID-TDTD-":n==13?"HDHD(IDIDOJDJD)SDSD(TDTDOUDUD)KIRI JHSJo":n%2<1?"IDID^TDTD^HIHIoUIUIo":"IDID>TDTD<HKHKoUKUKo")+@"JJSJoCBZM BB[M|BA[N-ADAD(\D\D)AA\N AA]N"+"\n";j++<78;)for(i=64;i++<93;System.Console.Write(f[r]))for(r=0;f[r++]>i|f[r++]>j|i>f[r++]|j>f[r++];r++);}}较少的高尔夫球:
class P
{
static void Main(string[]A)
{
int j=64,i,r=0,n=int.Parse(A[0]); // everything is offset by 65 in this program
for(
var f=(n<0?"IDID-TDTD-": // this string describes a set of rectangles (x1,y1,x2,y2,ch)
n==13?"HDHD(IDIDOJDJD)SDSD(TDTDOUDUD)KIRI JHSJo":
n%2<1?"IDID^TDTD^HIHIoUIUIo":
"IDID>TDTD<HKHKoUKUKo"
)+@"JJSJoCBZM BB[M|BA[N-ADAD(\D\D)AA\N AA]N"+"\n";
j++<78;) // the loop then prints the rectangles to the screen
for(i=64;i++<93;System.Console.Write(f[r]))
for(r=0;f[r++]>i|f[r++]>j|i>f[r++]|j>f[r++];r++);
}
}发布于 2014-09-10 15:35:12
不算太短,但我还是会发出去的:
n=input()
o='o'
S=' '
w=y=7*S
b=' '+'-'*26+'\n'
p=' |%19s |\n'
E=p%y*2
v=S+o*10+S
u=z=o+6*S+o
A=a='^ '
if n%2:A='< ';a='> ';u=y;w=z
if n<0:A=a='_ ';u=w=y
if n==13:A=a='(O)';u=w=v;v=S+o+S*4+o+S
print b+E+'(|%8s%11s |)\n'%(a,A)+E+p%u+p%v+p%w+E+b我错过了Python!:中字符串的项分配(然后可以从字符矩阵开始,只需修改眼睛和嘴。
https://codegolf.stackexchange.com/questions/37561
复制相似问题