トップ «前の日記(2010-01-11) 最新 次の日記(2010-01-14)» 編集

はじめてのにき

ここの位置付け

2004|11|
2005|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|08|09|10|11|12|
2012|01|02|03|04|05|06|07|08|09|10|11|12|
2013|01|02|03|04|05|06|07|08|09|10|11|12|
2014|01|02|03|04|05|06|07|08|09|10|11|12|
2015|01|02|03|04|05|06|07|08|09|10|11|12|
2016|01|02|03|04|05|06|07|08|09|10|11|12|
2017|01|02|03|04|05|06|07|08|09|10|11|12|
2018|01|02|03|04|05|06|07|08|09|10|11|12|
2019|01|02|03|04|05|06|07|08|09|10|11|12|
2020|01|02|03|04|05|06|07|08|09|10|11|12|
2021|01|02|03|04|05|06|07|08|09|10|11|12|
2022|01|02|03|04|05|06|07|08|09|10|11|12|
2023|01|02|03|04|05|06|07|08|09|10|11|12|
2024|01|02|03|04|

ToDo:


2010-01-13

_ ReRe: 人材獲得作戦

http://d.hatena.ne.jp/ku-ma-me/20100112/p1

s=*$<
x=y=0
y+=1until x=/S/=~s[y]
q=[[a=s,x,y]]
(a,x,y=q.shift
a=a.map &:dup
a[y][x]=?$
4.times{|k|s[j=-(k^1)/2+1+y][i=-k/2+1+x]!=?*&&(s[j][i]=?*;q<<[a,i,j])}
)while/G/=~a*''
puts a

あんまマジメにやってないんだけど 適当に解いてて一応勝ってる (181B) ぽいので。

はじっこに壁があるのを仮定してるのはちょっとずるかったりするんかな。 あと S の位置が 1,1 というのを仮定してよかったらだいぶラクなんだけどなあ。 なんかそれを仮定してそうなコードをどっかで見た気がしたんだ

(00:43)

_ SysV IPC でチート

http://john.freml.in/codegolf-cheating

できそうと教えてもらったけど、 まぁ誰もやらんだろうと思ってたんだけど、やってくれた。

というわけで共有メモリとメッセージキューは殺したんだけど、 semaphore は mono が使うらしい。 アホかーと思ったんだけど、 まぁ数をギリギリの数にしておいた。

でもまぁ気持ち悪いし、 一個でも semaphore 作られたら C# のプログラムが動かなくなるので、 後で semaphore はクリアするようにしておこうと思う。 で、 Ruby は syscall 呼ばんと getsem とか無いかなぁ…とかいう。

(00:48)

_ 167B

s=*$<
x=y=0
y+=1until x=/S/=~s[y]
q=[a=s,x,y]
(a,i,j,*q=q
a=a.map &:dup
a[j][i]=9*4.times{|k|q+=[a,x,y]if s[y=-~k%3-1+j][x=-k/2+1+i]!=s[y][x]=?*})while/G/=~a*''
puts a

まだまだ縮みそうではある

(01:04)

_ 161B

s=*$<
x=y=0
y+=1until x=/S/=~s[y]
q=[a=s,x,y]
(a,i,j,*q=q
a=*a*''
a[j][i]=9*4.times{|k|q+=[a,x,y]if s[y=-~k%3-1+j][x=-k/2+1+i]!=s[y][x]=?*})while/G/=~a*''
puts a

よく考えるとどうせ 1.9 じゃ動かんしなぁ

(01:08)

_ 120B

q=a=gets(p),~/S/
(a,i,*q=q
a*=1
a[i]=9*4.times{|x|q+=[a,x]if$_[x=-~x%3*-~~/$/-~/$/+-x/2+i]!=$_[x]=?*})while/G/=~a
puts a

golf data structure is always linear は金言だなぁ…

しかしなんかむしろコードが間違ってたらはずかしいな

(01:32)

_ 124B

q=gets(p)*1,~/S/
(a,i,*q=q
a[i]<?S&&a[i]=?$
4.times{|x|q+=[a*1,x]if$_[x=-~x%3*-~~/$/-~/$/+-x/2+i]!=$_[x]=?*})while/G/
puts a

どうしても S を塗らない処理が大変だなぁ。 G を塗らないのはむしろ短くなった気がするんだけど…

(02:31)

本日のツッコミ(全4件) [ツッコミを入れる]
_ mame (2014-05-24 03:52)

おうおう。正規表現に取り付かれて普通の BFS を試そうともしませんでした。
細かいですが、S とか G とかは書き潰しちゃダメだと思います。そのへんにしょうもなく苦労してた。

_ shinh (2014-05-24 03:52)

うわ本当ですね。むしろ潰さんと駄目だと思ってました。どうしたもんかなー

_ ksk (2014-05-24 03:52)

4.times{...} は
[1,u=1+~/$/,-1,-u].map{|x|q+=[a*1,x]if$_[x+=i]!=$_[x]=?*}
ではどうですか?

_ shinh (2014-05-24 03:52)

おおいいですね。数秘術を無駄に使いたがってしまうのは悪いクセです。

[1,u= ~/$/,2*~u,u].map{|x|q+=[a*1,i]if$_[i+=x]!=$_[i]=?*}

の方向で縮まんかなーと思ったのですが同着でした。他も ksk さんがやればもっと縮みそうですね。

お名前:
E-mail:
コメント:
人生、宇宙、すべての答え
本日のリンク元

2010年
1月
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31
1.tekezo(2014-05-24 03:52) 2.shinh(2014-05-24 03:52) 3.tekezo(2014-05-24 03:52)
search / home / index

全てリンクフリーです。 コード片は自由に使用していただいて構いません。 その他のものはGPL扱いであればあらゆる使用に関して文句は言いません。 なにかあれば下記メールアドレスへ。

shinichiro.hamaji _at_ gmail.com / shinichiro.h