2008/3/5  0:19 | 投稿者: minmax

=LEFT("Z",AND(J4=0,K1=0,B1<>0,OR(ROW()+COLUMN()=12,ROWS(1:$6)=5)))
が出来てから、これ以上の短縮は無理と判断していた。
仕事は終わり、土曜日になっていた。

 土曜は、入院している息子の病院に見舞いに行くことにしていた。
 ただ、長時間病院にいることにしていたので、結構暇な時間はある。金曜日に作った式を印字した紙を持って病院に行くことにした。
 暇な時間に紙に印字した式をまたじ〜とながめてみた。やっぱり違う手法は思いつかない・・・・。
 ん、待てよ・・・。
 「式の結果で空欄("")となっているセルは足し算とかするとエラーになるよな〜。」
 「ということは、J4+K1とした場合一方が式によって空欄("")となっているものであればエラーになるな。」
 これでよけいな「=0」の部分を省略し、足し算に置き換え、さらにCOUNTを使うことでエラー値を無視してカウント出来る。つまり、COUNT(J4+K1)としたときにJ4とK1の両方が完全に空白(Blank)のときはエラーにならないので結果が1となり、一方が式によって空欄("")の時0になる。
 ただ、ANDとCOUNTは文字数が2字多いからその分挽回しなければならない。

さらに・・・
 エラーにするといえば、数値を0で割ってもエラーになるなぁ。そこでB1<>0がFALSE(数値化すると0)だったときにエラーを発生させるため、「数値/(B1<>0)」でエラーを発生させることに。つまりB1が完全に空白(Blank)のときには、(B1<>0)がFALSE(0)となり0で割るからエラーとなるのだ。
 ここまでを整理すると、「COUNT(J4+K1/(B1<>0))」でJ4とK1がともに完全空白でB1が計算結果で空欄になっている場合に1をカウントする事になる。
 さらに、これの応用で「/OR(ROW()+COLUMN()=12,ROWS(1:$6)=5)」を追加することにし、結果として
=LEFT("Z",COUNT(J4+K1/(B1<>0)/OR(ROW()+COLUMN()=12,ROWS(1:$6)=5)))
という式が出来た。しかし、66文字はかわらなかった。

 もし、パソコンのみでやっていたら、こういった発想は出てこなかったかもしれない。
 紙技というのは、結構当たり前の事なのだが気づかせてくれる技なのかもしれない。
 常にうまくいくとは限らないが・・・。

 決して黒魔術とは違うと思う。ただ、紙には魔法がかかっているものなのかも。

 最後に、ほんとは、COUNTを使って64文字にしたかったのだがうまくいかなかった。残念!
0

2008/3/4  23:29 | 投稿者: minmax

 さて、本筋に戻って・・・
 先週金曜日・・・
 仕事で家には帰って来れないが、多少の時間はある。その時間を使って紙でやってみることに。
 実際に紙に書いてみる。
 A4の紙におおざっぱに大きな四角を書いてから、上側にA〜Kまで、左側に1〜11まで書いて、その四角形の中に格子上に適当に線を入れる。
 ここから、ひとまず考える。
 「昨日は、ハイブリッドでやっていたなぁ〜」
 「ハイブリッドの核となる所はROW()+COLUMN()=12とROWS(1:$6)だったな。うん」
 「うーん何か良い方法ないかなぁ〜」
 紙でやる限り、難しい計算は困難である。自分のようなポンツク頭には暗算で難しい計算が出来るわけもなし。(逆に難しいことが出来ない方が単純な短い案が浮かぶのかも?)
 紙をじーっと目をこらして見つめてみた。
 「何かないかな〜」
 5分くらい眺めたであろうか。ふと、けしてまっすぐではない外枠の四角の線を見つめた。そうだ、枠の中のセルは結果として空欄となっていても、文字列として認識するはず。一方、枠の外側は本当の空欄のはずだ。
 式で空欄にしているのと本当の空欄の違いは、「本当の空欄=0」の結果がTRUEになり、「数式での空欄=0」はFALSEになるはず。これを利用することによって、参照セルが枠の中か外で結果が別れる。セルの参照を相対参照にしておけば、これを利用出来る。
 そこで元々の核と組み合わせて出来たのが、
=LEFT("Z",AND(J4=0,K1=0,B1<>0,OR(ROW()+COLUMN()=12,ROWS(1:$6)=5)))
だった。手で数えたら66文字だった。
〜続く〜
0

2008/3/4  0:33 | 投稿者: minmax

 金曜日には、仕事のため家には帰れないことがわかっていた。しかし、多少一筆書きの事を考える時間はある。ただ、基本的には、パソコンは使えない。これはもう紙に書いて考えてみるしかない。以前にもやったな〜。

(以前の話)
 数ヶ月前、表計算一筆書きに、実力もないのに無謀にも有能な参加者の輪の中に混じっていった。その頃、紙でやったことがあった・・・
 そのときのお題も、くしくも今回紙でやったのと同じ「中禅寺湖シリーズ」の「T」だった。しかもあのときも金曜日に家に帰れず紙で考えていた。その結果、未熟者の私が結構短い数値で出来てしまった。
 あのときは、ほんとに「こんな自分が文字数トップになって良いのだろうか」ってまじめに考えてしまった。
 結果的には、三四郎で50を切った強者がいたのですが・・・
 このときから、紙には魔法がかかっていたのかも。
 ついでに・・・あの頃からLENつかっていたな〜
0

2008/3/3  0:18 | 投稿者: minmax

〔はじめに〕
くまぷーさんとこの「表計算一筆書き」で紙を使って解答を考えた時のエピソードを書いてみたくなり、放置していたブログに紙で作った式への歩みを書き留めておくことにした・・・
出題URL
http://kumapooh.justblog.jp/blog/2008/02/3-d8dc.html

〔あゆみその1〕
 表計算一筆書きで悪児さんの「乙(Z)」の出題に際して当初はハイブリッド、A系(J式とも言う。以下ここではA系と呼ぶことにする)で考えていた。

〜A系とは、関数AREASを使って指定したセル範囲がいくつあるかを判定してその個数を求め、それによって図形を描画するというもの。最近では、発案者のジョー3さんの名を借りてJ式とも呼ばれている〜

さて・・・
 A系では、58文字になるが、それ以上の発展はなさそうであった。やはり、A系は万能である。
 また、ハイブリッドでは当初73文字ちょっといじって71だった。これを工夫すれば60代の後半になると思ったが、ほかの方がすでにやっているし、ハイブリッドでA系を超えることは無理だと思われ、ハイブリッドを追求することには気合いが入らず、この手法はほかの方に任せようと思った。
 そんなこんなで金曜日を迎えた。
0




AutoPage最新お知らせ