2007. 12. 11. 03:01

코드골프 grid-computing

새로운 코드골프 문제가 나왔습니다.
http://codegolf.com/grid-computing
http://kldp.org/node/89102

문제의 내용은 다음고 같은 2자리 숫자로 이루어진 10x10 테이블을 받아서


01 34 46 31 55 21 16 88 87 87
32 40 82 40 43 96 08 82 41 86
30 16 24 18 04 54 65 96 38 48
32 00 99 90 24 75 89 41 04 01
11 80 31 83 08 93 37 96 27 64
09 81 28 41 48 23 68 55 86 72
64 61 14 55 33 39 40 18 57 59
49 34 50 81 85 12 22 54 80 76
18 45 50 26 81 95 25 14 46 75
22 52 37 50 37 40 16 71 52 17

가로 세로 합(총 20개) 중에 최대값을 출력하는 것.

예전에도 몇번 코드골프문제를 풀어본 적이 있지만 순위권에 들기가 너무 힘들어서 좌절 한 적이 있었는데
이 문제는 나온지 얼마 안되기 때문에 이때다 하고 달려들었습니다.
다행히 53글자로 순위권에 안착~~.
시간이 지나면 밀려나겠지만 일단 4위에서 캡춰!! 현재는 6위 -_-;;;;

코드를 공개하고 싶어서 입이 아니 손이 근질근질 거리지만 혹시라도 이 포스트를 읽으실 분의 즐거움을 위해서 당분간 공개하지 않기로 합니다.  비공개 포스트라도 만들어서 임금님 귀는 당나귀 귀라도 외쳐야 겠네요.
2007. 12. 11. 02:39

여러파일을 sorting 하기

갑자기 몇개 파일을 소트해야 할 일이 생겨서

하나의 파일을 sort 하는 방법

perl -i.bak -ne'push@L,$_;END{print sort @L;}' filename

여러 파일을 sort하려면

perl -i.bak -ne'push@L,$_;if(eof){print sort@L;@L=();}' file1 file2 file3

또는

for file in file1 file2 file3;do perl -i.bak -ne'push@L,$_;END{print sort@L;}' $file;done

더 좋은 방법은 당장 생각이 안난다.

find를 이용해서 만든 리스트들이 소트되어 있지 않아서 만든 것인데 실제로는 필요없는 디렉토리가 몇개 들어가 있었다. 필요없는 디렉토리들의 공통점은 숫자로 끝나지 않는다는 것이 었기 때문에 간단히

perl -i.bak -ne'/\d$/ or next;push@L,$_;eof and print sort@L and @L=();' input*10k.txt

다시 생각해 보니 펄을 안쓰는게 더 간단하다
for x in input*10k;do grep -v '[0-9]$' $x | sort > $x.tmp;mv $x.tmp $x;done;

이런....
뭐.. 더 빠르겠지 ㅎㅎ