재미있는 코드 골프 - 이번에는 맥주99병을 해보아요~ ^^
글쓴이: raymundo / 작성시간: 화, 2007/06/12 - 12:31오후
http://codegolf.com/99-bottles-of-beer
Perl의 경우 170바이트가 1위인데,
저는 174바이트에서 막혔습니다.
뭐 당연히... 이것도 제 힘만으로 한 건 아니고 OTL
저 혼자 하는 걸로는 220바이트 정도에서 막히더군요. 이리저리 끙끙대 보다가, 이것만 붙잡고 하염없이 있을 수가 없다보니 컨닝 비스무리하게... http://99-bottles-of-beer.net/language-perl-727.html 여기 코멘트란에 있는 코드를 가지고 코드골프 사이트에서 요구하는 출력에 맞게 고쳤습니다.
4바이트를 도저히 못 줄이겠네요. 아니면 170바이트가 되려면 이 형태로는 안 되고 아예 새로 뜯어고쳐야 할지도?
sub b{[@b=(abs||99,bottle."s"x!!++$_,of,beer),on,the,wall]}print"@{+b}, @b. ",$_?"Take one down and pass it around":"Go to the store and buy some more",", @{+b}. "for-99..-1
(위 코드의 줄바꿈은 일부러 추가한게 아니라, 스트링 안에서 "\n"이 들어가는 자리를 그냥 편집기에서 엔터를 눌러 입력한 겁니다)
Forums:
이것도 한번
이것도 한번 도전해보려 했지만 너무 어려워보여서 못하고있었네요
ascii art(도저히 1바이트가 안줄어듬.. OTL)는 잠시 보류하고 이걸 해봐야겠습니다.. ㅋㅋ
ASCII art 때와 달리
ASCII art 때와 달리 이번 종목은 호응이 별로 없군요 ^^;
그나저나 1바이트가 남은 상태라면, vi로 편집하는 경우 제일 끝에 자동으로 "\n"을 붙여버리니까 그것 때문에 1바이트 손해보고 있는 건 아닌지 확인해보세요. ":set noeol binary"해 준 후 저장하면 (jg님이 가르쳐주신 거) 붙이지 않게 할 수 있습니다.
좋은 하루 되세요!
sub
이거면? 169인데요.. 뭔가 잘못했나.
http://codegolf.com/competiti
http://codegolf.com/competition/output/99-bottles-of-beer
제일 마지막 라인 보시면 다시 99병이 되어야 합니다. :-)
좋은 하루 되세요!
첫 시도인 204B짜리
첫 시도인 204B짜리 루비코드 입니다.
-ㅅ-a
아.. 어렵네요.
아.. 어렵네요. 엉뚱한 174B버전만 하나 더 만들었습니다. =_=
일단 gg..
--
perl -e's@@JEON Myoung-jin@;sub man{s| _|her e|}
sub see{s;^;Just;;u;s;e ;Perl ;;to;print$_,$/}$uperMan=M;
s=^....=U are not=;s~$uperMan~~;&admitIt;s=U are = A=;s|young|_|;&man;
sub admitIt{say;ye;s!-\w+! Hacker!};see U'
$Myoungjin_JEON=@@=qw^rekcaH lreP rehtonA tsuJ^;$|++;{$i=$like=pop@@;unshift@@,$i;$~=18-length$i;print"\r[","~"x abs,(scalar reverse$i),"~"x($~-abs),"]"and select$good,$day,$mate,1/$~for 0..$~,-$~+1..-1;redo}
간만에 기억이 나서
간만에 기억이 나서 더듬거리며 해봤는데 결과는 179B -_-;; 퇴행하고 있는??
그 사이에 1위는 165B 군요. 기가막힙니다.
$Myoungjin_JEON=@@=qw^rekcaH lreP rehtonA tsuJ^;$|++;{$i=$like=pop@@;unshift@@,$i;$~=18-length$i;print"\r[","~"x abs,(scalar reverse$i),"~"x($~-abs),"]"and select$good,$day,$mate,1/$~for 0..$~,-$~+1..-1;redo}
저녁 아르바이트를
저녁 아르바이트를 끝내고 뭔가 머릿속에 번뜩해서 짜보았지만..
또다른 174B 버전만을 양상했군요..
약오르네요;;
$Myoungjin_JEON=@@=qw^rekcaH lreP rehtonA tsuJ^;$|++;{$i=$like=pop@@;unshift@@,$i;$~=18-length$i;print"\r[","~"x abs,(scalar reverse$i),"~"x($~-abs),"]"and select$good,$day,$mate,1/$~for 0..$~,-$~+1..-1;redo}
오 잊고 있던 걸 다시
오 잊고 있던 걸 다시 물 위로 끄집어내셨네요ㅎ 근데 2007년이나 지금이나 제 실력이 달라진게 없어서 여전히 더 줄이려면 머리 빠개질 듯 ^^
좋은 하루 되세요!
문득 생각이 나서
문득 생각이 나서 해봤는데.. 이건 마약입니다. 지금 금단 현상을 겪고 있네요;;
codegolf 는 몇 년이 지나도 코드를 공개하지 않는군요. 헐.. 아직도 최단 코드를 찾고 있는 건가요..
원글에 쓰인 @{[]} 구문은 perl의 잘 알려지지 않은 기능입니다.
물론 중급이상의 perl 사용자라면 알고 있는 기능이지요. 가칭은 baby cart이구요.
${[]}는 array 내용을 copy하거나 반환된 readonly array를 수정하기 위해 쓰이는 것은
당연한 기능으로 보이지만 double quote 안에서도 동작한다는 것이 잘 알려지지 않았지요.
ruby에서는 비슷한 기능을 조금 더 간단한 구문을 통해 쓸 수 있다고 하네요.
--
2007년 말에 타국에 온 뒤로 2년간 거의 perl을 못하다가 최근에 짬이 나서
응용프로그램을 하나 만들고 있습니다. 진도는 지지부진 합니다만, 언젠가는 완성되겠죠. -_-;;
$Myoungjin_JEON=@@=qw^rekcaH lreP rehtonA tsuJ^;$|++;{$i=$like=pop@@;unshift@@,$i;$~=18-length$i;print"\r[","~"x abs,(scalar reverse$i),"~"x($~-abs),"]"and select$good,$day,$mate,1/$~for 0..$~,-$~+1..-1;redo}
173B 버전이
173B 버전이 가능하군요.. 본래 글에서 글자 배치를 바꾸고 한 글자만 빼면 되네요. 헉.
$Myoungjin_JEON=@@=qw^rekcaH lreP rehtonA tsuJ^;$|++;{$i=$like=pop@@;unshift@@,$i;$~=18-length$i;print"\r[","~"x abs,(scalar reverse$i),"~"x($~-abs),"]"and select$good,$day,$mate,1/$~for 0..$~,-$~+1..-1;redo}