c*****t 发帖数: 1879 | 1 发信人: coconut (可可), 信区: Unix
标 题: easy problem
发信站: The unknown SPACE (Tue Jun 6 05:42:09 2000), 站内信件
Use perl/sh or whatever language of your choice to write
a program that is smaller than the following (476 bytes).
#!/bin/sh
cat << PASCAL
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
1 6 15 20 15 6 1
1 7 21 35 35 21 7 1
1 8 28 56 70 56 28 8 1
1 9 36 84 126 126 84 36 9 1
1 10 45 120 210 252 210 120 45 10 1
1 11 55 165 330 462 462 330 165 55 11 1
1 12 66 220 495 792 924 792 495 220 66 12 1
1 13 7 |
t****t 发帖数: 6806 | 2 这是啥, 只有更短, 没有最短?
【在 c*****t 的大作中提到】 : 发信人: coconut (可可), 信区: Unix : 标 题: easy problem : 发信站: The unknown SPACE (Tue Jun 6 05:42:09 2000), 站内信件 : Use perl/sh or whatever language of your choice to write : a program that is smaller than the following (476 bytes). : #!/bin/sh : cat << PASCAL : 1 : 1 1 : 1 2 1
|
c*****t 发帖数: 1879 | 3 en
【在 t****t 的大作中提到】 : 这是啥, 只有更短, 没有最短?
|
w****i 发帖数: 964 | 4 #!/usr/bin/python
x= [1]
for i in range(16):
....for j in x+['\n']: print j,
....x = [(x+[0])[j]+([0]+x)[j] for j in range(i+2)] |
t****t 发帖数: 6806 | 5 看我写个不一样, 用(read: abuse)RE写的
#!/usr/bin/perl
$a="1";
for $i (1.. 16) {
print "$a\n";
$a=~s/(\d+)(?= (\d+))/$1+$2/ge;
$a="1 $a";
}
【在 w****i 的大作中提到】 : #!/usr/bin/python : x= [1] : for i in range(16): : ....for j in x+['\n']: print j, : ....x = [(x+[0])[j]+([0]+x)[j] for j in range(i+2)]
|
c*****t 发帖数: 1879 | 6 有人写的比你少。。。说是能 54 byte (不算 #!/usr/bin/perl)
【在 t****t 的大作中提到】 : 看我写个不一样, 用(read: abuse)RE写的 : #!/usr/bin/perl : $a="1"; : for $i (1.. 16) { : print "$a\n"; : $a=~s/(\d+)(?= (\d+))/$1+$2/ge; : $a="1 $a"; : }
|
t****t 发帖数: 6806 | 7 肯定有, 我是随便写的.
【在 c*****t 的大作中提到】 : 有人写的比你少。。。说是能 54 byte (不算 #!/usr/bin/perl)
|
t****t 发帖数: 6806 | 8 来, 再随便改一下, 第二行宽66
#!/usr/bin/perl
$_="1\n";for$i(1..16){print;s/(\d+)(?= (\d+))/$1+$2/ge;$_="1 $_";}
【在 t****t 的大作中提到】 : 肯定有, 我是随便写的.
|
h*********o 发帖数: 62 | 9 sub pascal {
while (s/\d+(?= (\d+))/$&+$1/eg < shift) { s/^/1 /; print; }
}
from my code collection. not mine. Do not know whom to credit to. |
m******t 发帖数: 2416 | 10 Well, here's in 58 ruby bytes:
s=[];16.times{t,l=[],0;s.each{|n|t< |
|
|
h***z 发帖数: 233 | 11 33 bytes in Matlab is enough:
L=1
for i=1:15
L=[0,L]+[L,0]
end |
w****i 发帖数: 964 | 12 This does not produce the exact output
【在 h***z 的大作中提到】 : 33 bytes in Matlab is enough: : L=1 : for i=1:15 : L=[0,L]+[L,0] : end
|
r****t 发帖数: 10904 | 13 after u: (in python, but without imports, 有import 肯定不行了)
from numpy import array as a
from numpy import r_ as r
L=a([1])
for i in range(1,16):
....L=r[0,L]+r[L,0]
....print L
每行多俩[ ], 格式还不太对。。
【在 h***z 的大作中提到】 : 33 bytes in Matlab is enough: : L=1 : for i=1:15 : L=[0,L]+[L,0] : end
|
l***8 发帖数: 149 | 14 80 bytes written in C :-)
main(x,y,z){for(y=z=x;x<17;(z=z*--x/y++)||(puts(&z),x=y,y=++z))printf("%d ",z);} |
l***8 发帖数: 149 | 15 大家琢磨一下吧,我猜perl/python不用数组可能可以做到更短。反正用C语言声明数组
再加二重循环肯定搞不到80字符一下…… |
c*****t 发帖数: 1879 | 16 quote xiangqi's solution (see Unix board JHQ):
print "@_\n" while(@_=(1, map$_[$_-1]+$_[$_], 1..@_)) < 16;
60 bytes:) and sure it can be shrinked to 54 bytes:)
【在 l***8 的大作中提到】 : 大家琢磨一下吧,我猜perl/python不用数组可能可以做到更短。反正用C语言声明数组 : 再加二重循环肯定搞不到80字符一下……
|
t****t 发帖数: 6806 | 17 hailongniao的思路跟我的是基本一样的, 我参考他的改了改.
$_="\n";while(s/\d+(?= (\d*))/$&+$1/ge<16){s/^/1 /;print}
57 bytes.
【在 c*****t 的大作中提到】 : quote xiangqi's solution (see Unix board JHQ): : print "@_\n" while(@_=(1, map$_[$_-1]+$_[$_], 1..@_)) < 16; : 60 bytes:) and sure it can be shrinked to 54 bytes:)
|
c*****t 发帖数: 1879 | 18 They all look like corrupted bytes transferred from modem to me.
【在 t****t 的大作中提到】 : hailongniao的思路跟我的是基本一样的, 我参考他的改了改. : $_="\n";while(s/\d+(?= (\d*))/$&+$1/ge<16){s/^/1 /;print} : 57 bytes.
|
t****t 发帖数: 6806 | 19 xiangqi明显是高手, 他的去掉空格是52...
print"@a\n"while(@a=(1,map$a[$_-1]+$a[$_],1..@a))<16
【在 c*****t 的大作中提到】 : They all look like corrupted bytes transferred from modem to me.
|
r****t 发帖数: 10904 | 20 Even the Matlab and python version?
【在 c*****t 的大作中提到】 : They all look like corrupted bytes transferred from modem to me.
|
t****t 发帖数: 6806 | 21 matlab要格式也可以
L=1;for i=1:16,disp(sprintf('%d ',L));L=[0,L]+[L,0];end
55 bytes. that is, if you don't count the trailing " " of each line...
【在 w****i 的大作中提到】 : This does not produce the exact output
|