台球
* * * *
拉格朗日计划
* * * *
台球

给定台球桌的大小,画出从左上角向右下方45度角击球后球的路径。

例如大小为4 14时路径应为

\  /\  /\  /\
 \/  \/  \/  \
 /\  /\  /\  /
/  \/  \/  \/
每组输出之间用一个空行隔开。

注:本题中的台球桌只有四个角上有洞,输入保证球只会从左下,右上和右下的洞离开,且同一个格子不会被两次访问。
本题难度:



解答

直接模拟,用二维数组表示球桌,坐标越界时先判断是否离开球桌,若未离开改变行进方向和符号(符号只会在正反斜杠间交替)。

最终代码有11行。

代码长度:278字节 vs. 全站第一:148字节。

import sys
s="\\/"
for a in sys.argv[1:]:
  m,n=map(int,a.split());b=[[" "]*n for i in range(m+1)];u=v=1;x=y=c=0
  while 1:
  b[x][y]=s[c];x+=u;y+=v;p,q=0<=x<m,0<=y<n
  if p==q==0:break
  if 1-p:u=-u;x+=u
  if 1-q:v=-v;y+=v
  if 2-p-q:c=1-c
  print("\n".join("".join(r)for r in b))