我正在尝试解决Code Golf: Build Me an Arc问题。我的解决方案还不错,但我认为,有一种更简单的方法。在给定nxn
的情况下,是否有人知道如何生成这样的n
矩阵?我花了57个字来得到它!
3 0 0 0 2 0 0 0 1
0 3 0 0 2 0 0 1 0
0 0 3 0 2 0 1 0 0
0 0 0 3 2 1 0 0 0
4 4 4 4 8 8 8 8 8
0 0 0 5 6 7 0 0 0
0 0 5 0 6 0 7 0 0
0 5 0 0 6 0 0 7 0
5 0 0 0 6 0 0 0 7
我想打败其中一些matrices。
这就是我现在的方式。
%%# Create the grid
[X Y]=meshgrid(-r:r);
%%# Compute the angles in degrees
T=atan2(-Y,X)/pi*180;
%%# Get all the angles
T=T+(T<=0)*360;
如您所见,我不需要T
中的大多数条目。
答案 0 :(得分:1)
由于这与Code Golf问题有关,请考虑:
[X Y]=meshgrid(r:-1:-r,-r:r);
T=180+atan2(Y,X)*180/pi;
可以节省3个字符......
答案 1 :(得分:0)
此帖中列出的是一个包含bsxfun
的单行解决方案代码,可以避免使用临时变量,因为它在内部执行expansion
meshgrid
明确执行并同时给出我们能够提到在bsxfun
中列出的两个输入之间执行的数学运算。通过这些内部操作,基于bsxfun
的解决方案似乎非常适合使用 43 characters
解决方案来解决上述问题的代码高尔夫问题 -
T=180+bsxfun(@atan2,[-r:r]',r:-1:-r)*180/pi