
perl-developers YAPC :: Europe 2013ã®å®æäŒè°ã8æ12ã14æ¥ã«ããšãã§éå¬ãããŸãããæèçãªå ±åãPerl 5ããã³Perl 6éçºè ããã®ã€ã³ãµã€ããŒæ å ±ãPerlã®äžçïŒLarry Wallèªèº«ãå«ãïŒã®äŒèª¬ããªããŒã¯ã«ãŒãºãš
ããããperlããã°ã©ããŒã¯ãéåžžã®äººéã®åã³ã«å ããŠãåžžã«ç解å¯èœã§å¯æ¥ã§ã¯ãªãç¹å¥ãªéåžžã®ããã¢ãµããšã³ã¹ãã§æ¥œããŸããåŸåãããããšã¯ããç¥ãããŠããŸãã
ããã§ãã©ããã£ãŠPerl GolfãYAPCã«å ¥ããã®ãããããŠãããäœããããããã®ãã
REG.RUã¯ã¹ãã³ãµãŒãšããŠäŒè°ããµããŒãããŸããã ããŒã¹ãšããŒã«ã®ã¹ã¿ããã¯ãçŽ æŽãããTã·ã£ããäŒç€Ÿã«é¢ããæçãªæ å ±ãç¬é¡ãååããªé°å²æ°ãããããããšãªããããã«ãæã匷åãªPerlããã°ã©ããŒãã®ã³ã³ãã¹ããéå¬ããŸããïŒ REG.RUã®ãŠã§ããµã€ãã§ãã¹ãŠã®è©³çŽ°ãšåçãå ±åããŠãã ããïŒ ïŒ

ãããããã¡ãããããã§æ¢ãŸãããšã¯ã§ããŸããã§ããã ãPerl-event-perl-activityãä»ã«ã¯äœããããŸããïŒã-ç§ãã¡ã¯èªåèªèº«ã«èšãèãããŠãããããå®éã«äœãæå³ããã®ãèãå§ããŸããã
Perl Golfãšã¯äœã§ããïŒ
äžè¬ã«ãPerl Golfã¯ããã°ã©ãã³ã°ã®ç«¶äºã§ãïŒãã¡ãããPerlã§ã¯ãä»ã®èšèªã§ããŽã«ãããè©Šã¿ãŠããŸããïŒãåé¡ãæ£ãã解決ããæçã®ããã°ã©ã ãåã¡ãŸãã åæã«ãè¿œå ã®ã¢ãžã¥ãŒã«ãšå€éšããŒã«ã®äœ¿çšã¯èš±å¯ãããŠããŸããã ãšã³ã¿ãŒãã€ã³ã¡ã³ãã¯ãJAPHãé£èªåãã³ãŒãè©©ããã®ä»ã®ãšããµã€ãã£ã³ã°ãªïŒããããå®çšçã§ã¯ãªããããããŸãããïŒã¢ã¯ãã£ããã£ãšãšãã«ãPerlããã°ã©ããŒã®ãæ°ã«å ¥ãã®1ã€ã§ãã ããã«ãPerl Golfã«ã¯çµ¶å¯Ÿã«æ確ãªè©äŸ¡åºæºïŒããã°ã©ã å ã®æå°æåæ°ïŒãããããã競äºåœ¢åŒãšããŠå®å šã«é©åããŸãã

ããŒã ã«ã¯çµéšè±å¯ãªãŽã«ãã¡ãŒãããªãã£ãã®ã§ãç§ã¯äžããã¯ã©ãããç¿åŸããªããã°ãªããŸããã§ããã ãããŠãç§ã¯èšããªããã°ãªããªããå€éšã®ãšããŸãã£ãºã ã«ããããããïŒãããŠéåžžã®ã³ãŒããã©ã®ããã«èŠããã¹ãããç解ããããã°ã©ããŒã®èŠ³ç¹ããã¯æããããã®ã§ããïŒããŽã«ãã¯èå³æ·±ãæçšãªæŽ»åã§ããããšãå€æããèšèªã®æ·±ããŠæçœã§ãªãæ©èœãšèœåãåŠã³ãç解ããã®ãå©ããŸãããåé¡ãšãã®è§£æ±ºçãæ確ãã€ç°¡æœã«å®åŒåããèœåãèšç·ŽããŸãã å€ãã®èããšåµé çãªèŠçã®çµæãšããŠã次ã®ç©èªãçãŸããŸããã
å¡äŸ
ããªãã¯æ±æžæ代ã®è²Žæã®è²Žæã®æ¯åã§ãã ããªãã¯åžžã«ããã°ã©ãã«ãªãããšã倢èŠãŠããŸãããã家æã®äŒçµ±ããã匷åã§ããããšãå€æããŸãã-ããªãã¯èšç·Žã®ããã«éããã¹ã¿ãŒããããã«éãããŸããã çãçè«ç玹ä»ã®åŸããã¹ã¿ãŒã¯ç³ãæç²ããã¿ã¹ã¯ãå°ãå§ããŸããã
ã¿ã¹ã¯ã¯ç°¡åã§ãããGoã®èœåããªãããšã¯æããã§ãã ããã«ããã¹ã¿ãŒã¯èª€ã£ãŠè§£æ±ºãããã¿ã¹ã¯ããšã«ç«¹ã®æ£ã§çãã»ã©ããªããå©ãã1æ¬ã®æ£ã ãã§é£äºããããŸãã æŽè¡ãšæ ¢æ§çãªæ é€å€±èª¿ã«ããããããŠããããªãã¯ãããªãã®ããã«åé¡ã解決ããããã°ã©ã ãæžãããšã«ããŸãã ãããŠãæ±æžæ代ã®çŽã¯é«äŸ¡ãªã®ã§ãããã°ã©ã ã¯ã§ããã ãçããã¹ãã§ãã

Goã²ãŒã ã®åºæ¬
éã¯ãæ°å幎åã«äžåœã«ç»å Žããæ¥æ¬ã§å šçæãçã延ã³ãæå€ã®ããŒãæŠç¥ã²ãŒã ã§ãã 2人ã®ãã¬ãŒã€ãŒãã²ãŒã ã«åå ãã亀äºã«ããŒãã°ãªããã®äº€ç¹ã«é»ãšçœã®ç³ã眮ããŸãã ç³ïŒãŸãã¯ç³ã®ã°ã«ãŒãïŒã¯ãæµã®ç³ã«åæ¹ãå²ãŸããŠããå Žåãæç²ãããŠããŒãããåãé€ããããšã¿ãªãããŸãã ããšãã°ã次ã®å³ã§ã¯ãé»ïŒãbãïŒããxãã§ç€ºããããã€ã³ãã«ç§»åãããšãçœãç³ïŒãwãïŒãŸãã¯ç³ã®ã°ã«ãŒããããŒãããåé€ãããŸãã

å©çšèŠçŽ
å ¥å ïŒã²ãŒã ããŒããè¡šã9è¡ãSTDINã§æäŸãããŸãã è¡ã¯ã¹ããŒã¹ïŒããŒãäžã®ç©ºã®ãããã瀺ãïŒãæå "w"ïŒçœãç³ïŒããã³ "b"ïŒé»ãç³ïŒã§æ§æãããæ¹è¡æåïŒ "\ n"ïŒã§çµãããŸãã
åºå£ ïŒãã€ã³ãã®åº§æšïŒã¹ããŒã¹ãéãè¡çªå·ãšåçªå·ã1ããçªå·ä»ãïŒããããžã®ç§»åã¯çœãç³ã®æç²ã«ã€ãªãããŸãã STDOUTã«1è¡ã«1ãã€ã³ã衚瀺ããå¿ èŠããããŸãã ããŒãäžã®ãã¹ãŠã®æœåšçãªåããæšæž¬ããŠãçœãç³ãæç²ããå¿ èŠããããŸãã ãã€ã³ãã¯ãããŒãäžã§å·Šããå³ãäžããäžã®é ã«è¡šç€ºãããŸãã
競æã¯ãPerl Golfã®éåžžã®ã«ãŒã«ã«åŸã£ãŠéå¬ãããŸãã
- ã¿ã¹ã¯ã¯9Ã9ã®çåŸäŒã§è¡ãããŸãã
- å³ã®åãã¯é»ãç³ã§ãã
- ãã§ã«æç²ãããŠããç³ãããŒãäžã«ãªãããšãä¿èšŒãããŠããŸãã
å ¥å ïŒã²ãŒã ããŒããè¡šã9è¡ãSTDINã§æäŸãããŸãã è¡ã¯ã¹ããŒã¹ïŒããŒãäžã®ç©ºã®ãããã瀺ãïŒãæå "w"ïŒçœãç³ïŒããã³ "b"ïŒé»ãç³ïŒã§æ§æãããæ¹è¡æåïŒ "\ n"ïŒã§çµãããŸãã
åºå£ ïŒãã€ã³ãã®åº§æšïŒã¹ããŒã¹ãéãè¡çªå·ãšåçªå·ã1ããçªå·ä»ãïŒããããžã®ç§»åã¯çœãç³ã®æç²ã«ã€ãªãããŸãã STDOUTã«1è¡ã«1ãã€ã³ã衚瀺ããå¿ èŠããããŸãã ããŒãäžã®ãã¹ãŠã®æœåšçãªåããæšæž¬ããŠãçœãç³ãæç²ããå¿ èŠããããŸãã ãã€ã³ãã¯ãããŒãäžã§å·Šããå³ãäžããäžã®é ã«è¡šç€ºãããŸãã
競æã¯ãPerl Golfã®éåžžã®ã«ãŒã«ã«åŸã£ãŠéå¬ãããŸãã
- ãã¹ãã«åæ Œããæçã®ããã°ã©ã ãåã¡ãŸãã
- Shebangã¯ïŒïŒPerlãŸãã¯ïŒïŒPerl -flagsã®ããã«èŠããã¯ãã§ãã ïŒïŒperlã¯æåæ°ãã«ãŠã³ãããéã«èæ ®ãããŸããããã-ãæåãå«ãæå®ããããã©ã°ã¯èæ ®ãããŸãã
- ã¹ããŒã¹ãæ¹è¡ãªã©ãä»ã®ãã¹ãŠã®æåãã«ãŠã³ããããŸãã
- ããã°ã©ã ã¯ãä»ã®ã¢ãžã¥ãŒã«ã䜿çšããããå€éšããã°ã©ã ãåŒã³åºããããå€éšããŒã¿ãœãŒã¹ã«ã¢ã¯ã»ã¹ãããããããšã¯ã§ããŸããã
- ãã®ãœãªã¥ãŒã·ã§ã³ã¯ãSTDERRã«äœã衚瀺ããã«ãPerlããŒãžã§ã³5.18.0ã§æ£åžžã«åäœããã¯ãã§ãã
åé¡ã®ç¶æ ãšæ€èšŒã®ããã®äžé£ã®ãã¹ããcontest.reg.ruã«å ¬éãããŸãã ã ãã¹ãã«åæ Œããããšã¯ããœãªã¥ãŒã·ã§ã³ã®æ£ç¢ºãã®åºæºãšèŠãªãããŸããã ãããã競æåŸãåå è ã¯ããã€ãã®è¿œå ã®æŽç·Žããããã¹ãã±ãŒã¹ãææ¡ãããã®äžã§ããã€ãã®æ±ºå®ãã€ãŸãããŸããã ãã®ãããè¿œå ã®ãã¹ãã±ãŒã¹ã«åæ Œããªãå Žåãæå®ããããœãªã¥ãŒã·ã§ã³ã¯åå¥ã«ããŒã¯ãããŸãã
äŒè°ã®æ¥äžïŒããã³å€æ¹ãšå€ïŒã«åå è ã®æŽ»çºãªå°éçããã³ç€ŸäŒçç掻ã«ãããããããç§ãã¡ã¯ããã€ãã®éåžžã«èå³æ·±ã解決çãåãåããŸãããããã¯ç§èªèº«ã®æ³šéã§ããã«äžããŸãïŒç§ã®ç解床ã¯ãŸã ãŽã«ãã§ããã®ã§å²åŒããŠïŒ ïŒ
競äºåã®ãããœãªã¥ãŒã·ã§ã³
205æå-ãã©ã€ã¢ã³ããã³ãŒãªãŒ

#!perl $b=++$/x11 .<>;for$i(9..99){if(($x=$b)=~s/^(.{$i}) /$1x/s){while($x=~/w/g){$_="$`W$'";1while s/w((?<=W.{10})|(?<=W.)|(?=.{9}W|W))/W/s;/W((?<= .{10})|(?<= .)|(?=.{9} | ))/s||$i=~/./+(print"$& $'\n")+last}}}
泚é
#!perl # $/ «1», «<>» # ( ). # 11 ( / # . $b = ++$/ x 11 . <>; # . for $i ( 9 .. 99 ) { # . , . . , # «x» ( , , # , ) . if ( ( $x = $b ) =~ s/^(.{$i}) /$1x/s ) { # («w»). while ( $x =~ /w/g ) { # $_, «w» «W» # ( while # $` , $' â ). $_ = "$`W$'"; # , . 1 while s/w((?<=W.{10})|(?<=W.)|(?=.{9}W|W))/W/s; # ( ) - . /W((?<= .{10})|(?<= .)|(?=.{9} | ))/s # , . # «/./» $& ( # ) $' ( , # ), . , # . || $i =~ /./ + ( print "$& $'\n" ) + last; } } }
ãã©ã€ã¢ã³ã¯åœŒã®æ±ºå®ãšåœŒèªèº«ã®æ³šéãPerlMonksã§å ¬éããŸãã ã ããã«ã圌ã¯çš²åŠ»ãããã¯ã§ãã®æ±ºå®ã説æããã¬ããŒããäœæããŸããã
競äºã§ã®åå©ã®ããã«ããã©ã€ã¢ã³ã¯ãããŽã«ãã®çŽ æŽãããã»ãããåãåã£ãã®ã§ãä»ã§ã¯è·å Žã§éå±ã«çŽé¢ããããšã¯ãããŸããã

212æå-Sergey MozhayskyïŒè¿œå ã®ãã¹ãã±ãŒã¹ã¯åæ ŒããŸããïŒ
ç¡éã®ååž°ãåé¿ããããã«ãé£æ¥ãã€ã³ããååž°çã«èµ°æ»ãããã§ãã¯ãã€ã³ãã«é¢ããæ å ±ãä¿åãããœãªã¥ãŒã·ã§ã³ã
#!perl @g=(d..n,map{/./g,''}<>);sub n{my($i,$j,$r)=@_;map{$_=1and map{$r=n($i,$j+1)+n($i,$j-1)+n($i+1,$j)+n($i-1,$j)==1if/w/;$r=1and$0="$i $j\n"if/ /}$g["$i$j"]if!$_}$s{"$i$j"};$r}map{print$0if$g[$_]eq'w'&&n(/./g)}0..99
泚é
#!perl # d .. n, # . @g = ( d .. n, map { /./g, '' } <> ); # sub n { my ( $i, $j, $r ) = @_; # %s # ( ). # %s $_ map. map { # %s # , . $_ = 1 and map { # â , # , # # (. . ). $r = n( $i, $j + 1 ) + n( $i, $j - 1 ) + n( $i + 1, $j ) + n( $i - 1, $j ) == 1 if /w/; # , # $0. $r = 1 and $0 = "$i $j\n" if / / } $g["$i$j"] if !$_ } $s{"$i$j"}; # $r } # . map { # , # . print $0 if $g[$_] eq 'w' && n(/./g) } 0 .. 99
æ®å¿µãªãããè¿œå ã®ãã¹ãã§ã¯ããœãªã¥ãŒã·ã§ã³ã«èª€æ€åºããããŸãã
279æå-ãã³ã©ã€ã·ã¥ãªã£ã³ãã¹ããŒ
ååž°çãœãªã¥ãŒã·ã§ã³ã§ããããŸãããç¡éååž°ãšçµæã®ç¹°ãè¿ãåºåã«å¯Ÿããä¿è·ã®ããžãã¯ãç°ãªããŸãã
#!/usr/bin/perl while(<>){tr/ wb\n/2133/;$str.=$_.'3'}@m=split//,('3'x12).$str;for(@m){%l=();$r=1;z($i);$o{$w[0]}=1if/1/&&$r&&(@w=%l)==2;$i++}printf"%d %d$/",$_/11,$_%11for sort keys%o;sub z{my$c=$_[0];for(qw/11 1 -11 -1/){$x=$c+$_;$n=$m[$x];$l{$x}=1if$n==2;if($n==1){z($x)if!/-/;$r=0if$i>$x}}}
泚é
#!/usr/bin/perl while (<>) { # , tr/ wb\n/2133/; # . $str .= $_ . '3'; } @m = split //, ( '3' x 12 ) . $str; # # for (@m) { %l = (); $r = 1; z($i); # . $o{ $w[0] } = 1 # , if /1/ # ( ), && $r # , && ( @w = %l ) == 2; # . $i++; } printf "%d %d$/", $_ / 11, $_ % 11 # # 11 for sort {$a > $b} keys %o; # . sub z { my $c = $_[0]; for (qw/11 1 -11 -1/) { # $x = $c + $_; # , $n = $m[$x]; # . $l{$x} = 1 if $n == 2; # , â if ( $n == 1 ) { # â , z($x) if !/-/; # . $r = 0 if $i > $x # , # # ( ) } } }
è¿œå ã®ãã¹ãã±ãŒã¹ã§ã¯ãããªãæãããªãã°ãèŠã€ãããŸããããã£ãŒã«ãã®æåŸã®è¡ã«ããšããµã€ãã£ã³ã°ãªãäœçœ®ïŒ100以äžã®é åå ã®äœçœ®ïŒããããšãããŒãäžã®æ©ãäœçœ®ã®åã®åºåã«å°éããŸãã ããã¯ã䞊ã¹æ¿ããçµæã®äžŠã¹æ¿ãã«äœ¿çšããããšããäºå®ãåå ã§ãããããã©ã«ãã§ã¯æååæ¯èŒã¢ãŒãã§æ©èœããŸããã€ãŸããã100ãã¯ã99ãæªæºã«ãªããŸãã
370ãã£ã©ã¯ã¿ãŒ-ãã«ã©ã€ã»ãªãªãã³ã+ããã¹ã»ã·ãã³ã
ååž°ãœãªã¥ãŒã·ã§ã³ã®å¥ã®ããªãšãŒã·ã§ã³ã å¥ã®ãã䜿çšãããããªãã¯ãããã«è¡šç€ºãããŸããåãã€ã³ãããã§ãã¯ããã«ã¯ãããŒãã®ã³ããŒãäœæããããã«é»ãç³ãåãä»ãããã®åŸããŒãã«çœãç³ããã£ããã£ãããŠãããã©ããããã§ãã¯ããŸãã
#!perl $s='b'x12; while(<>){s/\n/bb/;s/ /0/g;$s.=$_;}$s.='b'x10;@q=(-1,+1,11,-11);@a=split//,$s; for(@a){++$i;if(!$a[$i]){$res=0;$p=[];for(@q){$c=$_+$i;if($a[$c]eq'w'){$p=[@a];$p->[$i]='b';$res+=b($p,$c);}}if($res){printf"%d %d\n",$i/11,$i%11;}}} sub b{my($e,$w)=@_;$r=1;for(@q){$z=$_+$w;return 0 if!$r||!$e->[$z];if($e->[$z]eq'w'){$t=[@$e];$t->[$w]='b';$r&=b($t,$z)}}return$r}
泚é
#!perl # , . # 0, . $s = 'b' x 12; while (<>) { s/\n/bb/; s/ /0/g; $s .= $_; } $s .= 'b' x 10; @q = ( -1, +1, 11, -11 ); # . @a = split //, $s; # . for (@a) { # . ++$i; if ( !$a[$i] ) { # . $res = 0; $p = []; for (@q) { # . $c = $_ + $i; if ( $a[$c] eq 'w' ) { # . $p = [@a]; # $p->[$i] = 'b'; # . $res += b( $p, $c ); # «». } } if ($res) { # , printf "%d %d\n", $i / 11, $i % 11; # . } } } sub b { my ( $e, $w ) = @_; $r = 1; for (@q) { # . . $z = $_ + $w; return 0 if !$r || !$e->[$z]; if ( $e->[$z] eq 'w' ) { $t = [@$e]; $t->[$w] = 'b'; $r &= b( $t, $z ) } } return $r; }
390æå-Dmitri L.
ã«ãŠã³ã¿ãŒã®åœ¢ã§é£æ¥ããã§ãã¯ããçµæã®ç¹å®ã®éèšã䜿çšããå¥ã®ååž°çãªãœãªã¥ãŒã·ã§ã³ã
#!perl push@t,split//,'b'x11;for(<>){chomp;push@t,split//,"b$_"."b"}push@t,@t[0..10];for(;$r++<11;){for($c=0;$c++<11;){$i=$r*11+$c;if($t[$i]eq' '){for($i-11,$i+1,$i+11,$i-1){next unless$t[$_]eq'w';$t[$i]='b';if(f($_)>7){print"$r $c\n";last}$t[$i]=' '}}}}sub f{my($r,$e,$k)=@_;$d{$r}?return$e||$dr:($d{$r}=2);for($r-11,$r+1,$r+11,$r-1){$k+=1+f($_,1)if$t[$_]eq'w';$k+=2if$t[$_]eq'b'}$e?$k>7?$e:0:$k}
泚é
#!perl # , push @t, split //, 'b' x 11; for (<>) { chomp; push @t, split //, "b$_" . "b" } push @t, @t[ 0 .. 10 ]; # for ( ; $r++ < 11 ; ) { for ( $c = 0 ; $c++ < 11 ; ) { # $i = $r * 11 + $c; # - , if ( $t[$i] eq ' ' ) { for ( $i - 11, $i + 1, $i + 11, $i - 1 ) { next unless $t[$_] eq 'w'; $t[$i] = 'b'; if ( f($_) > 7 ) { # 7 (. . 8) print "$r $c\n"; # last } $t[$i] = ' ' } } } } sub f { my ( $r, $e, $k ) = @_; $d{$r} ? return $e || $dr : ( $d{$r} = 2 ); for ( $r - 11, $r + 1, $r + 11, $r - 1 ) { # $k += 1 + f( $_, 1 ) if $t[$_] eq 'w'; # - 1 $k += 2 if $t[$_] eq 'b'; # 2 } $e ? $k > 7 ? $e : 0 : $k; }
404æå-Philippe BruhatïŒBooKïŒ
æçã§ã¯ãããŸããããããããæãã¢ã«ãŽãªãºã çã«è€éã§ãæãè€éã§è§£æãé£ãããœãªã¥ãŒã·ã§ã³ã®1ã€ãªã®ã§ã泚éããå®å šãªæ確ããæåŸ ããªãã§ãã ããã
#!perl #!perl -ln sub M{$k=pop;my%t;$l[$k]=[grep!$t{$_}++,@{$l[$k]},@_]}sub S{($m,$n)=@_;($M,$N)=sort$$m,$$n;M@{delete$l[$N]},$M if$N!=($$m=$$n=$M)}$i=1;for(split//){$b[$c=$..$i]=/w/?++$e:$_;$x=($R=$.-1).$i;$y=$..($C=$i-1);/w/&&do{$b[$_]>0&&S\$b[$c],\$b[$_]for$x,$y;M$b[$x]eq$"?"$R $i":(),$b[$y]eq$"?"$. $C":(),$b[$c]};/ /&&map{$b[$_]>0&&M"$. $i",$b[$_]}$x,$y;$i++}}{print for sort grep!$s{$_}++,map@$_-1?():@$_,@l
泚é
#!perl -ln sub M { $k = pop; my %t; # «». $l[$k] = [ grep !$t{$_}++, @{ $l[$k] }, @_ ] } sub S { ( $m, $n ) = @_; ( $M, $N ) = sort $$m, $$n; # # «» M @{ delete $l[$N] }, $M if $N != ( $$m = $$n = $M ); } $i = 1; # . for ( split // ) { $b[ $c = $. . $i ] = # $. . /w/ ? ++$e : $_; # # . $x = ( $R = $. - 1 ) . $i; # . $y = $. . ( $C = $i - 1 ); # . # â /w/ && do { # $b[$_] > 0 && S \$b[$c], \$b[$_] for $x, $y; # «». M $b[$x] eq $" ? "$R $i" : (), $b[$y] eq $" ? "$. $C" : (), $b[$c]; }; # â «» . / / && map { $b[$_] > 0 && M "$. $i", $b[$_] } $x, $y; $i++; } }{ # . print for sort grep !$s{$_}++, map @$_ - 1 ? () : @$_, @l
幞ããªããšã«ããã£ãªããã¯åé¡ãçå£ã«åãæ¢ãã解決çã«åœŒèªèº«ã®è©³çŽ°ãªèª¬æãæäŸããŸããã
èè
ããã®èŠçŽ
ã¢ã«ãŽãªãºã ã®äžæ žã¯ãç³ã®ã°ã«ãŒããäœæããæŽæ°ããããšã§ã
åã°ã«ãŒãã®èªç±ã®ãªã¹ãã æåŸã«ãèªç±ã®ã¿
ãœãŒããããåŸãåäžã®èªç±ãæã€ã°ã«ãŒãããå°å·ãããŸã
ãããŠéè€æé€ã
ã¢ã«ãŽãªãºã ã¯ãããŒãã«@bã䜿çšããããã
9x9ããŒãã ãããã£ãŠã座æšã¯00..99ãš$ xã®ç¯å²ã«ãããŸãã$ Yã¯
ä»»æã®äº€å·®ç¹ãæããŸãã ããŒããæ§ç¯ãããšããå
è¡0ã«ã¯äœãæžã蟌ãŸããŸããïŒundefãŸã㯠''ïŒã
ããŒãã¯1è¡ã§1è¡ã§è¡šç€ºãããŸãïŒ-lnã«æè¬ïŒã
åã»ã«ã«ã€ããŠãäžãšå·Šã®ã»ã«ãèŠãŸããã
çŸåšã®ã»ã«ããwãã®å Žåã次ã®å©çšå¯èœãªã»ã«ã«å€ãããŸã
çªå·ãããã³åé£äººã«ã€ããŠããããçªå·ã®å Žåãäž¡æ¹ãæå¹ã«ãªããŸã
2ã€ã®æ°å€ã®æå°å€ã«å ¥ãããããã®èªç±ã®ãªã¹ãã¯
å䜵ããŸããã ''ã®é£äººã¯ã次ã®èªç±ã®ãªã¹ãã«è¿œå ãããŸãã
çŸåšã®ã»ã«ã
çŸåšã®ã»ã«ã ''ã®å Žåããã®ã»ã«ã«èªç±ãšããŠè¿œå ãããŸã
æ°åã§ããé£äººã
ãbãã»ã«ã«ã€ããŠã¯ãäœãããŸããã
æ°å€ã¯ããã¯ã€ãã°ã«ãŒãã®ãç䟡ã¯ã©ã¹ãã§ãã
åãçªå·ã®2ã€ã®ã»ã«ã¯åãã°ã«ãŒãã®äžéšã§ãã
ããŒãã®å°å·ã¯ãã¢ã«ãŽãªãºã ããããã°ããã®ã«éåžžã«åœ¹ç«ã¡ãŸããã
ã»ã«ã®ããŒãžããªãå Žåãã2ãã°ã«ãŒãã¯å®éã«ã¯æ¬¡ã®ããã«ãªããŸãã
ãã¹äžã次ã®ããã«é²åããŸãã
ïŒæ¬¡ã®çœãŸã§ãã¹ãŠã®ã»ã«ã蚪åïŒ
çŸåšã®ã»ã«ïŒ4ïŒã2ã«ããŒãžïŒ
çŸåšã®ã»ã«ïŒ2ïŒã3ã«ããŒãžïŒ
çŸåšã®ã»ã«ïŒ5ïŒã2ã«ããŒãžïŒ
ãµãMã¯èªç±åºŠãè¿œå ããéè€ãåé€ããŸãã
sub Sã¯ç䟡ã¯ã©ã¹ã®ããŒãžãè¡ããåŒã³åºããŸã
Mã¯åœŒãã®èªç±ãçµ±åããŸãã
400ã§ã¯ãåã€ããšãæåŸ ããŠããŸããã§ããã ãŽã«ãã®æåãªäºå®
競äºã¯æ£èŠè¡šçŸããŒã¹ã®ã¢ã«ãŽãªãºã ãåžžã«åã€ããšã§ãã :-)
åã°ã«ãŒãã®èªç±ã®ãªã¹ãã æåŸã«ãèªç±ã®ã¿
ãœãŒããããåŸãåäžã®èªç±ãæã€ã°ã«ãŒãããå°å·ãããŸã
ãããŠéè€æé€ã
ã¢ã«ãŽãªãºã ã¯ãããŒãã«@bã䜿çšããããã
9x9ããŒãã ãããã£ãŠã座æšã¯00..99ãš$ xã®ç¯å²ã«ãããŸãã$ Yã¯
ä»»æã®äº€å·®ç¹ãæããŸãã ããŒããæ§ç¯ãããšããå
è¡0ã«ã¯äœãæžã蟌ãŸããŸããïŒundefãŸã㯠''ïŒã
ããŒãã¯1è¡ã§1è¡ã§è¡šç€ºãããŸãïŒ-lnã«æè¬ïŒã
åã»ã«ã«ã€ããŠãäžãšå·Šã®ã»ã«ãèŠãŸããã
çŸåšã®ã»ã«ããwãã®å Žåã次ã®å©çšå¯èœãªã»ã«ã«å€ãããŸã
çªå·ãããã³åé£äººã«ã€ããŠããããçªå·ã®å Žåãäž¡æ¹ãæå¹ã«ãªããŸã
2ã€ã®æ°å€ã®æå°å€ã«å ¥ãããããã®èªç±ã®ãªã¹ãã¯
å䜵ããŸããã ''ã®é£äººã¯ã次ã®èªç±ã®ãªã¹ãã«è¿œå ãããŸãã
çŸåšã®ã»ã«ã
çŸåšã®ã»ã«ã ''ã®å Žåããã®ã»ã«ã«èªç±ãšããŠè¿œå ãããŸã
æ°åã§ããé£äººã
ãbãã»ã«ã«ã€ããŠã¯ãäœãããŸããã
æ°å€ã¯ããã¯ã€ãã°ã«ãŒãã®ãç䟡ã¯ã©ã¹ãã§ãã
åãçªå·ã®2ã€ã®ã»ã«ã¯åãã°ã«ãŒãã®äžéšã§ãã
ããŒãã®å°å·ã¯ãã¢ã«ãŽãªãºã ããããã°ããã®ã«éåžžã«åœ¹ç«ã¡ãŸããã
...wb.... ...1b.... ...b..... ...b..... ......... ......... ..b...... would ..b...... .bwb..... become .b2b..... bwwwb.... b222b.... ......... ......... ......... ......... .......bw .......b6
ã»ã«ã®ããŒãžããªãå Žåãã2ãã°ã«ãŒãã¯å®éã«ã¯æ¬¡ã®ããã«ãªããŸãã
2 345
ãã¹äžã次ã®ããã«é²åããŸãã
..b...... .b2
ïŒæ¬¡ã®çœãŸã§ãã¹ãŠã®ã»ã«ã蚪åïŒ
..b...... .b2...... b3
..b...... .b2b..... b34
çŸåšã®ã»ã«ïŒ4ïŒã2ã«ããŒãžïŒ
..b...... .b2b..... b32
çŸåšã®ã»ã«ïŒ2ïŒã3ã«ããŒãžïŒ
..b...... .b2b..... b22
..b...... .b2b..... b225
çŸåšã®ã»ã«ïŒ5ïŒã2ã«ããŒãžïŒ
..b...... .b2b..... b222
ãµãMã¯èªç±åºŠãè¿œå ããéè€ãåé€ããŸãã
sub Sã¯ç䟡ã¯ã©ã¹ã®ããŒãžãè¡ããåŒã³åºããŸã
Mã¯åœŒãã®èªç±ãçµ±åããŸãã
400ã§ã¯ãåã€ããšãæåŸ ããŠããŸããã§ããã ãŽã«ãã®æåãªäºå®
競äºã¯æ£èŠè¡šçŸããŒã¹ã®ã¢ã«ãŽãªãºã ãåžžã«åã€ããšã§ãã :-)
500æå-ãµããªã»ããããª
ãããŠãå空ã®ã»ã«ã«é»ãç³ãåãä»ããåãšåãä»ããåŸã®ããŒãäžã®ãéèªç±ãïŒé»ãŸãã¯æç²ãããçœïŒã®ç³ã®æ°ãæ¯èŒãããã1ã€ã®ååž°çãªãœãªã¥ãŒã·ã§ã³
#!perl my$X=121;my$m;sub z{my($s,$x,$m)=shift;while($x<$X){$m+=f($x++,$s);}$m;}sub f{my($n,$t,$d)=@_;my$c=substr($t,$n,1);return 0 if $c eq ' '||!$d&& $c ne 'w';return 1 if $c eq 'b';substr($t,$n,1)='b';(!(($n+1)%11)||f($n+1,$t,1))*(!(($n-1)%10)||f($n-1,$t,1))*f($n+11,$t,1)*f($n-11,$t,1);}my$y='b'x11;while(<>){$y.="b$_";}$y=~s/\n/b/g;$y.='b'x11;$d=z($y);my$i=0;while($i<$X){my$ch=substr($y,$i,1);if($ch eq ' '){$b=$y;substr($b,$i,1)='b';if(z($b)>$d){my$y=int($i/11);my$x=$i-($y*11);print"$y $x\n";}}$i++;}
泚é
#!perl my $X = 121; # . my $m; # «» ( ) . sub z { my ( $s, $x, $m ) = shift; # . while ( $x < $X ) { $m += f( $x++, $s ); } $m; } # «» sub f { my ( $n, $t, $d ) = @_; my $c = substr( $t, $n, 1 ); # . # 0 # . return 0 if $c eq ' ' || !$d && $c ne 'w'; # 1, . return 1 if $c eq 'b'; # . substr( $t, $n, 1 ) = 'b'; # . ( !( ( $n + 1 ) % 11 ) || f( $n + 1, $t, 1 ) ) * ( !( ( $n - 1 ) % 10 ) || f( $n - 1, $t, 1 ) ) * f( $n + 11, $t, 1 ) * f( $n - 11, $t, 1 ); # 0, # . } # , . my $y = 'b' x 11; while (<>) { $y .= "b$_"; } $y =~ s/\n/b/g; $y .= 'b' x 11; $d = z($y); my $i = 0; while ( $i < $X ) { # . my $ch = substr( $y, $i, 1 ); # . if ( $ch eq ' ' ) { # , $b = $y; # , substr( $b, $i, 1 ) = 'b'; # . # «» if ( z($b) > $d ) { # . my $y = int( $i / 11 ); my $x = $i - ( $y * 11 ); print "$y $x\n"; } } $i++; }
581æå-ãã£ãããªãŒã»ã€ã¯ãã
Savio Pimatteoã®ä»¥åã®ãœãªã¥ãŒã·ã§ã³ã«éåžžã«è¿ããœãªã¥ãŒã·ã§ã³ã
#!perl eval{ $a->[10]=$a->[0]=[('b')x11]; while(<STDIN>){chomp;@{$a->[++$i]}=('b',(split''),'b');last if $i>=9} sub f { my($x,$y)=@_; return $o[$j] if $n->[$x][$y]; return $o[$j]||2 if $a->[$x][$y]eq'b'; return 1 if $a->[$x][$y]ne'w'; $n->[$x][$y]=$j; $o[$j]=f($_,$y)for($x-1,$x+1); $o[$j]=f($x,$_)for($y-1,$y+1); return $o[$j]; } sub p { for $x(0..10){for $y(0..10){ f($x,$y,$j++) if $a->[$x][$y]eq'w'&&!$n->[$x][$y]; }} return grep{$_==2}@o; } my $t=p; for $x(0..10){for $y(0..10){ next if $a->[$x][$y]ne' '; $a->[$x][$y]='b'; @o=();$n=[]; print"$x $y\n" if $t<p; $a->[$x][$y]=' '; }} }
泚é
#!perl eval { # . $a->[10] = $a->[0] = [ ('b') x 11 ]; # , . while (<STDIN>) { chomp; @{ $a->[ ++$i ] } = ( 'b', ( split '' ), 'b' ); last if $i >= 9; } # . sub f { my ( $x, $y ) = @_; # , . return $o[$j] if $n->[$x][$y]; # 2, . return $o[$j] || 2 if $a->[$x][$y] eq 'b'; # , (. . ). return 1 if $a->[$x][$y] ne 'w'; # , , $n->[$x][$y] = $j; # . $o[$j] = f( $_, $y ) for ( $x - 1, $x + 1 ); $o[$j] = f( $x, $_ ) for ( $y - 1, $y + 1 ); # $o[$j] 1 # . return $o[$j]; } # . sub p { # . for $x ( 0 .. 10 ) { for $y ( 0 .. 10 ) { # , # . f( $x, $y, $j++ ) if $a->[$x][$y] eq 'w' && !$n->[$x][$y]; } } # # (. . ). return grep { $_ == 2 } @o; } my $t = p; # . for $x ( 0 .. 10 ) { # . for $y ( 0 .. 10 ) { next if $a->[$x][$y] ne ' '; # , . $a->[$x][$y] = 'b'; # . @o = (); # . $n = []; # . print "$x $y\n" if $t < p; # , # # (. . ). $a->[$x][$y] = ' '; # . } } }
競åä»ç€Ÿã®ãœãªã¥ãŒã·ã§ã³
競äºãçµç¹ãã競äºåé¡ã®è§£æ±ºçãæããªãã®ã¯å¥åŠã ããã ã ããããã«äž»å¬è ããã®è§£æ±ºçããããŸããããã¯ç§ã§ãïŒ
192æå-ãã£ã ãŒã«ã»ãã¶ããã§
ç°¡åãªååž°çãœãªã¥ãŒã·ã§ã³ã å¯ãªæå°åãšäžèŠãªãã¹ãŠã®åé€ããã©ã°ã䜿çšããå ¥åããŒã¿ã®è§£æã®ç¯çŽãããã³regexpãšç¹æ®å€æ°ã䜿çšããŠãã€ã³ãäœçœ®ã座æšã«å€æããååã«å¹æçãªããªãã¯ã«ãããè¯ãçµæãåŸãããŸããã
#!perl -ln0aF// sub c{my$s=pop;$s=~/-|9/||$g[$s]eq'b'||$g[$s]=~/w/*!grep{$g[$s]='b';!c($s+$_)}1,-1,10,-10}map{@g=@F;$g[$_]='b';/\d$/,print$`+1,$",$&+1if$F[$_]=~/ /*grep{$g[$_]eq'w'&&c$_}0..$#g}0..$#F
泚é
#!perl -ln0aF// # : # -n «while () { ⊠}» ; # -0 , ; # -a , @F; # -F// -a ; # -l print. # «» sub c { my $s = pop; # , # ( ), $s =~ /-|9/ # , || $g[$s] eq 'b' # . || $g[$s] =~ /w/ * !grep { $g[$s] = 'b'; !c( $s + $_ ) } 1, -1, 10, -10; } # . map { # . @g = @F; # . $g[$_] = 'b'; # , , # . /\d$/, print $`+ 1, $", $& + 1 if $F[$_] =~ / / * grep { $g[$_] eq 'w' && c $_} 0 .. $#g } 0 .. $#F
ãœãªã¥ãŒã·ã§ã³ã®ã¢ã«ãŽãªãºã ã®åçŽãã«ãããããããé©ãã¹ãããšã«ãåé¡ã®æ¬è³ªã«éäžããæ°ããå€æ°ãäœæãããå¯å€§ãªæã§ã³ãŒãã®éè€éšåãäœæããªãå Žåãå€ãã®å Žåãå€ãã®äœåãªã³ãŒããã³ãŒãããåé€ã§ããŸãã ãã®ãããGolfã§ã¯ãã³ãŒãã®ãµã€ãºãå°ããããã ãã§ãªããåé¡ãšãã®è§£æ±ºçã®è¡šé¢çãªç解ãããæ·±ããæ確ã«ããããšã«ãçŠç¹ãåœãŠãŠããŸãã
å®éãã³ã³ãã¹ãäžããã®çµæïŒ192æåïŒã¯è² ããŸããã§ããã ããããããã§çµããã§ã¯ãªããã³ã©ãã¬ãŒã·ã§ã³ãšçµéšã®äº€æã®æéã§ããã
197æå-Sergey MozhayskyïŒè¿œå ã®ãã¹ãã±ãŒã¹ã¯åæ ŒããŸããïŒ
ã»ã«ã²ã€ã¯äžéå€æ°ãåãé€ãã座æšã衚瀺ããããã®æ°ãããªãã·ã§ã³ãèãåºãã決å®ãæ¹åããŸããã
#!perl @g=(d..n,map{/./g,''}<>);sub n{my($i,$r)=@_;map{do{$_=1and$r=n($i+1)+n($i-1)+n($i+10)+n($i-10)==1if/w/;$_=$r=1and$0=$i if/ /}if/\D/}$g[$i];$r}map{printf"%s %s\n",$0=~/./g if$g[$_]eq'w'&&n($_)}0..99
泚é
#!perl @g = ( d .. n, map { /./g, '' } <> ); # . sub n { my ( $i, $r ) = @_; # , # . map { do { $_ = 1 and $r = n( $i + 1 ) + n( $i - 1 ) + n( $i + 10 ) + n( $i - 10 ) == 1 if /w/; $_ = $r = 1 and $0 = $i if / / } if /\D/ } $g[$i]; $r } map { # printf "%s %s\n", $0 =~ /./g if $g[$_] eq 'w' && n($_) } 0 .. 99
189æå-ãã£ã ãŒã«ã»ãã¶ããã§
ç§ã®æ±ºå®ã¯ãBrianã®çºèšã®ãããã§æ°æåæžããŸããã$ïŒãä»ããŠé åã®ãµã€ãºãååŸããããšã¯ãæ°å€å®æ°89ã«çœ®ãæããããæ£èŠè¡šçŸ
/\d$/
ã¯
/.$/
ã
#!perl -ln0aF// sub c{my$s=pop;$s=~/-|9/||$g[$s]eq'b'||$g[$s]=~/w/*!grep{$g[$s]='b';!c($s+$_)}1,-1,10,-10}map{@g=@F;$g[$_]='b';/.$/,print$`+1,$",$&+1if$F[$_]=~/ /*grep{$g[$_]eq'w'&&c$_}0..89}0..89
泚é
#!perl -ln0aF// # : # -n «while () { ⊠}» ; # -0 , ; # -a , @F; # -F// -a ; # -l print. # «» sub c { my $s = pop; # , # ( ), $s =~ /-|9/ # , || $g[$s] eq 'b' # . || $g[$s] =~ /w/ * !grep { $g[$s] = 'b'; !c( $s + $_ ) } 1, -1, 10, -10; } # . map { # . @g = @F; # . $g[$_] = 'b'; # , , # . /.$/, print $`+ 1, $", $& + 1 if $F[$_] =~ / / * grep { $g[$_] eq 'w' && c $_} 0 .. 89 } 0 .. 89
ãã®ã¢ãããŒãã®æ ¹æ¬çãªæ¹åã¯ã»ãšãã©æåŸ ã§ããŸããã
ãããŠãPerlmonksã§ã®ã¿ã€ã¿ã³ã®æŠããç®æããŸããã
175æå-ãã©ã€ã¢ã³ããã³ãŒãªãŒ
ãã©ã€ã¢ã³ã¯ãã»ã«ã²ã€ã®ã¢ããã€ã¹ãšç§ã®ãœãªã¥ãŒã·ã§ã³ããã®ããã€ãã®ã¢ã€ãã¢ã䜿çšããŠãçµæãçå£ã«æ¹åããŸããã
#!perl -ln0 map{$i=$-[0]+11;{map{1while s/w((?<=W.{10})|(?<=W.)|(?=.{9}W|W))/W/s;/W((?<= .{10})|(?<= .)|(?=.{9} | ))/s||$i=~/./+print("$& $'")+last}"$`W$'"while/w/g}}"$`x$'"while/ /g
泚é
#!perl -ln0 # , . map { $i = $-[0] + 11; # . { map { 1 while s/w((?<=W.{10})|(?<=W.)|(?=.{9}W|W))/W/s; /W((?<= .{10})|(?<= .)|(?=.{9} | ))/s || $i =~ /./ + print("$& $'") + last } "$`W$'" while /w/g } } "$`x$'" while / /g
127æå-ã°ãªããŒ
PerlMonksã䜿çšããGrimyãŠãŒã¶ãŒã¯Brianã®ã¢ã€ãã¢ãæŒãé²ããæ£èŠè¡šçŸãªãã·ã§ã³ã127æåãšããçŽ æŽãããçµæã«å°ããŸããïŒ
#!perl -ln0 map{1while$,=s=$,w=g=s?'(g|(?=.g|..{9}g)|g.{9})\K':/g/>/$, /s&&map{y!.! !;print;redo}/x/+"@+E-1"or y&g&b&}"$`x$'"while/ /g
泚é
#!perl -ln0 # «x». map { 1 while $, = # g. # ( $, , # .) s=$,w=g=s # . ? '(g|(?=.g|..{9}g)|g.{9})\K' # , , # . : /g/ > /$, /s && map { # @+ /x/, # . . . # (/x/) , # -1 (E-1). «.» « », # . y!.! !; print; redo } /x/ + "@+E-1" # â # . or y&g&b& } "$`x$'" while / /g
å®ãèšããšããã®è§£æ±ºçã¯ç¥ç§äž»çŸ©ã®äžéšã®èŠçŽ ãä¿æããŠããŸãããç§ã®æ³šéãçå®ããããã»ã©é ããªãããšãé¡ã£ãŠããŸãã
ããŠãæ£èŠè¡šçŸã®æ±ºå®ã®ç¡æµæ§ã«å¯Ÿããåºç¯ãªä¿¡å¿µã¯å®å šã«æ£åœåãããŸããããã¯é©ãã¹ãçµæã§ããããããæã€ããšã¯å°é£ã§ããããããè¡å人ã®ä¿¡ããããªãã»ã©ã®åæ°ãšæŠãã®è³è³ªãç¥ã£ãŠãç§ãã¡ã¯æãè©Šãããšãç³ãåºãŸããçŸåšã®ãªãŒããŒïŒ127æåïŒãããåªããïŒã€ãŸããçãïŒãœãªã¥ãŒã·ã§ã³ãææ¡ãã人ã¯ãæ倧6ãæéã.ruãŸãã¯.ãŸãŒã³ããã³VPSã®ãã¡ã€ã³ãREG.RUããã®ãããšããŠåãåããŸãã決å®ã¯contest@reg.ruã§è¡ãããŸããæŽæ°ããããã¹ãã¹ã€ãŒãã«æ£åžžã«åæ Œãã決å®ã®ã¿ãæž¡ãããŸããããã°ãïŒ