예전에 풀어본 문제를 기록을 남기는 의미에서 다시 정리해봄
문제)
http://kldp.org/node/112089
예를 들어, A.csv는
1 2 3 4 5 6
B.csv는
2 3 4 5 6 7
라면 같은 위치의 요소끼리 사칙연산 하려면?
답)
같은요소끼리 더하기
$ paste A.csv B.csv | perl -alpe '$_="@{[map$F[$_]+$F[$_+@F/2],0..$#F/2]}"'
3 5 7 9 11 13
문제)
http://codegolf.stackexchange.com/questions/3095/paint-that-fence
Paint the fence.
각 라인은 S L C 의 형태로 되어있다. S는 시작위치 L을 길이 C는 색깔을 뜻한다. (시작위치는 0부터시작) 다음과 같은 라인에 대해서 규칙을 적용해서 펜스를 칠해나가면 펜스의 색은 오른쪽과 같을 것 이다. 0 3 1 111........... 2 4 2 112222........ 1 2 3 133222........ 0 4 1 111122........ 7 3 5 111122.555.... 다 칠하고 난 다음 어떤색의 펜스가 얼만큼 있는지 다음과 같이 1 4 2 2 5 3 출력하는 코드를 작성하라.
답)
$ cat input.txt
0 3 1
2 4 2
1 2 3
0 4 1
7 3 5
$ cat input.txt | perl -anE '@a[$F[0]..$F[0]+$F[1]]=($F[2])x$F[1];END{$i[$_]++for@a;$i[$_]&&say"$_ $i[$_]"for 1..$#i}'
1 4
2 1
5 3
아마 Perl 아니면 이보다 짧게 만들 수 있는 언어는 없을듯...
(요즘 보니 J란 언어가 다크호스 같긴 하지만서도..)