【´・ω・`】:sakudaさんも仰っていますが出題者は
先入観があるのか、いい解答が浮かばないようです。
(出題していない時もダメだろ、というツッコミは厳禁)
Aタイプ
三四郎(59文字)
=If(SumSq(Cols($F11:K16)-2,Rows(K$6:P11)-2) IN {2,8,9,10},"*")
Excel
最初にやったもの(61文字)
=LEFT("◆",OR(SUMSQ(COLUMNS(A:$F)-2,ROWS(1:$6)-2)={2,8,9,10}))
Excel
(60文字)
=LEFT("◆",OR(SUMSQ(COLUMN()-6,ROW()-6)={0,4,8,16,17,20,18}))
Bタイプ
三四郎(60文字)
=If(SumSq(Col(A1)-6,Row(A1)-6) IN {0,2,4,8,16,17,20,18},"*")
Excel
最初にやったもの(63文字)
=LEFT("◆",OR(SUMSQ(COLUMNS(A:$F)-2,ROWS(1:$6)-2)={0,2,8,9,10}))
Excel
(62文字)
=LEFT("*",OR(SUMSQ(COLUMN()-6,ROW()-6)={0,2,4,8,16,17,20,18}))
Aはminmaxさんが確立されたCOUNTものを
探っていて見つけた循環(反復計算)42文字
=MID("● ● ● ●● ●●",COUNTA(A1:$F$6),1)
BはいつものRCで54文字の
=MID(" ● ●●●",MOD(25,SUMSQ(COLUMN()-6,ROW()-6,2))+1,1)
minmaxさんのA-循環無しで43がとても楽しみですd
投稿情報: む印 | 2008年10 月18日 (土曜日) 午後 08時20分
二番煎じみたいなものですが。
普通のもの1個
=MID("◆ ◆ ◆ ◆◆ ◆◆",COUNTBLANK(L1:$Q$6),1)
46字
配列数式2個(a1に入力他セルにコピー)
{=MID("◆ ◆ ◆ ◆◆ ◆◆",COUNT(L1:$Q$6%),1)}
44字(y sakudaさん式でむ印と一緒かもしれませんが)
{=MID("◆ ◆ ◆ ◆◆ ◆◆",SUM(L1:$Q$6+1),1)}
43字
循環参照1個
=MID("◆ ◆ ◆ ◆◆ ◆◆",COUNTA(A1:$F$6),1)
42字(循環参照)
投稿情報: minmax | 2008年10 月18日 (土曜日) 午後 09時19分
ごめんなさい。む印さんを呼び捨てにしてしまいました。
投稿情報: minmax | 2008年10 月18日 (土曜日) 午後 09時26分
Aは、
51:=MID("◆ ◆ ◆ ◆◆ ◆◆",ROWS(1:$6)*COLUMNS(A:$F),1)
Bは、
59:=MID("◆ ◆ ◆ ◆ ◆◆◆ ◆",SUMSQ(ROW()-6,COLUMN()-6)+1,1)
57:=MID(" ◆ ◆◆◆ ◆",ABS(SUMSQ(ROW()-6,COLUMN()-6)-10)+1,1)
55:=MIDB(" ◆ ◆ ◆◆◆◆",ROWS(1:$6)^1.46+COLUMNS(A:$F)^1.46,2)
>{=MID("◆ ◆ ◆ ◆◆ ◆◆",SUM(L1:$Q$6+1),1)}
なるほど~。起点と中心点を対角にした、正方形のイメージでセル数をカウントするんですね。
COUNTのほうは%で空白を0に変えてると。
Aパターンだからこそ出来るとはそういうことだったんですね。脱帽です!
む印さんのBも、SUMSQに3番目をセットするとは!
そうやって数値をずらす方法もあったんだとびっくりしました。
投稿情報: kir | 2008年10 月18日 (土曜日) 午後 09時57分
今日は中央線が人身事故でとまり、ちょいと前に帰ってきました。
みなさんの今ざっと見ましたけどさっぱり理解できてない^^;
以外と奥が深い問題だったんですねーー
私は初日にやった59から一歩もすすみませんでした。
kirさんのと同じです。
A59
=MID("* * * *** *",SUMSQ(ROW()-6,COLUMN()-6)+1,1)
B59
=MID("* * * * *** *",SUMSQ(ROW()-6,COLUMN()-6)+1,1)
大体-2ってのさえ思い付いてないです^^;
投稿情報: y sakuda | 2008年10 月18日 (土曜日) 午後 10時29分
A51とB59は気付いたのですが…
%を配列数式でまとめるなんて、まさに、職人技ですね!
投稿情報: かず | 2008年10 月18日 (土曜日) 午後 10時29分
>・・・SUM(L1:$Q$6+1)
おおっ!ここでこの配列を思いつくとは、、
minmaxさん、アンタは天才だd
投稿情報: む印 | 2008年10 月18日 (土曜日) 午後 10時57分
kirさんのB55もいいですねd
>^1.46
でMIDB関数にうまくハマるのかー
私はAでMIDB無理やり使って
=TEXT(MIDB("●●●●●1 ●●1",COLUMNS(A:$F)*ROWS(1:$6),2),"●")
こんな事までしてました(^^ゞ
投稿情報: む印 | 2008年10 月18日 (土曜日) 午後 11時09分
今日は今までCATVで北斗の拳の
ラオウ外伝2本、ユリア外伝を見ていました。
>みなさんの今ざっと見ましたけどさっぱり理解できてない^^; ×2
本当に初期の頃に比べると理解を
越えた手法がたくさん出てきたと思います。
>>・・・SUM(L1:$Q$6+1)
本当にどこからこんなものが出てくるのか?
黒魔術師2代目ですね~
理解の域を超えています。
本当に◇\(o・Q・o)/◇降参!!
投稿情報: くまぷー | 2008年10 月18日 (土曜日) 午後 11時27分
>・・・SUM(L1:$Q$6+1)
も
>COUNT(L1:$Q$6%),
も思いつくというより、目の前に見せられても理解できるまでにずいぶんかかった・・・
配列数式だから意味が出てくるとは言え、なんちゅうもんを考え出すんだろ^^;
%を持ち込んだのは私ですけど、こういう使い方はまるで想定外w
1.こんなのやる人まともな頭じゃない
2.教科書的に言うと悪いプログラムの典型w⇒よいプログラムとは誰にでもわかりやすくですからねーー
投稿情報: y sakuda | 2008年10 月19日 (日曜日) 午前 12時57分
むむーーー、、
ちらっと見ただけでは、
皆さんの回答は、私からすると
別世界だ。
あとで、じっくり見てみたいが・・・
投稿情報: ジョー3 | 2008年10 月19日 (日曜日) 午前 09時02分
>皆さんの回答は、私からすると別世界だ。
そうなんですよ。この頃、特にそうです。
自分の限界を感じます。(>_<)
投稿情報: くまぷー | 2008年10 月19日 (日曜日) 午前 11時49分
>皆さんの回答は、私からすると別世界だ。
ですねーー
再開したころは、基本テクニックは出尽くしてるのではと思ってましたが、最近使われているCount方式なんかが飛び出してくるし^^;
この方式は理屈では分かりますが、今のところ使いこなせる自信がないです。
続ければまだなにが出てくるかわかったもんじゃないですが、関係者一同問題が出尽くし気味ですねーー
ま、尤も、こういう状態になってくるとフツウの方が覗いてもなんの話かわからなくなってきますから、ここだけの村で孤立しそうですねーー
投稿情報: y sakuda | 2008年10 月19日 (日曜日) 午後 12時13分
>フツウの方が覗いてもなんの話かわからなくなってきますから、
最近はアクセス数もガタ落ちで
一時の半分から三分の一といったところで今週はランキング外です(T.T)
今までのように解答発表で
ただ式をUPするだけではダメでしょうね。
私なんかも、かなり詳しい解説をして頂かないと・・・
投稿情報: くまぷー | 2008年10 月19日 (日曜日) 午後 12時36分
なんだか、見ているだけの方のためにも式の解説をした方が良いみたいですので。
もっとも、その方が、次にみなさんが活用しやすくなるのは間違いないわけですしね。
私の式についてはkirさんが解説してくれていますが、エンジン部分についてあえて解説ってのをやってみますと、
■「COUNTA(A1:$F$6)」の場合、中心「F6」(固定)を基準に「A1」(変動)までの四角形の空白でないセルの数を計算します。
式を置き換えるなら「ROWS(1:$6)*COLUMNS(A:$F)」と同じになるかと思います。
ただし、COUNTAの場合入力されているセル自体も引数のセル範囲に含まれるため循環参照となります。
■循環参照とならないためには、11×11のセルの範囲外を利用する必要があります。
そこで「COUNTA(・・・」を「COUNTBLANK(L1:$Q$6)」に置き換えてセルの個数を計算します。
当然、文字数は長くなります。
■循環参照にせず、文字数を短縮するには、11×11のセルの範囲外を利用し、かつ、文字の数の短い関数を使う必要があります。
そこで、「COUNTBLANK(L1:$Q$6)」の代わりに「COUNT(L1:$Q$6)」に置き換えます。
このままですと、COUNTは数値以外のセルを無視しますので、「L1:$Q$6」の範囲のそれぞれのセルを数値化する必要があります。
そこで配列数式の登場となります。「{=COUNT(L1:$Q$6*0)}」とした場合は、L1:$Q$6という範囲のそれぞれのセルに0をかけて結果として「0」という数値に置き換わります。
「0」は数値ですから「COUNTBLANK」から「COUNT」に置き換えてもセルの個数を結果として返すこととなります。
※「{=COUNT(L1:$Q$6*0)}」のイメージ「=COUNT(L1*0,M1*0・・・,Q6*0)」→結果は36
ここで、「=COUNT(L1:$Q$6*0)」の「*0」を「%」に置き換えてみます。
この場合の「%」は0%を掛け算するという意味になり、結果としては「*0」と同じ意味になるとともに1文字節約出来ることとなります。
これで「{=COUNT(L1:$Q$6%)}」という式の完成です。
■さらに「COUNT」を「SUM」に置き換えてみます。SUMは数値を合計する関数ですので空白や0のセルをいくら足しても0になります。
そこで、それぞれのセルに1を足してやることでそれぞれのセルの合計がセルの個数となります。
式で表すと{=SUM(L1:$Q$6+1)}となります。
※「{=SUM(L1:$Q$6+1)}」のイメージ「=SUM(L1+1,M1+1・・・,Q6+1)」→結果は36
これによってCOUNTを使った場合より1文字節約出来ることとなります。
以上です。
まじめに解説すると長くなりますね。
悪児さんのように○○の道というような解説ブログが必要なくらいですね。
ここのみなさんが基本的に文字数を短くしようと考えて頑張っておられるのでしょうから、
y sakudaさんがおっしゃる
>教科書的に言うと悪いプログラムの典型w⇒よいプログラムとは誰にでもわかりやすくですからねーー
にならざるを得ないと思いますよ。
ただ、私の配列数式は、配列数式の仕組みさえ分かっていれば理解しやすいと思っていたのですが。
(配列数式は普段は使いませんし、私も苦手ですから配列数式の得意そうなkirさんやむ印さんなど以外の方にはわかりづらいことは確かですが)
それよりも、む印さんの「MOD(25,SUMSQ・・・・・」第1引数に固定値を持ってくるなんてなかなか思いつかないですね。さすがです。
なお、来週からは病院にも通わなければいけないので、たまにしか顔を出せないかもしれません。
長くなり失礼しました。
投稿情報: minmax | 2008年10 月19日 (日曜日) 午後 03時16分
>教科書的に言うと悪いプログラムの典型w⇒よいプログラムとは誰にでもわかりやすくですからねーー
ははっ・・・・
これは私もやっている方の立場ですから同罪なんですけどね。
大昔Bitという雑誌にナノピコ教室というコラムがあり、やはり、プログラムの作成コンテストでした。
ここに出てくる解答がまたみんなマニアックな代物で、やってる連中は楽しくやってたんですが、世間様からはひんしゅくを買っていたみたいです。
なんせ、出題者が回り持ちなんですが、東大、慶応、教育大とかの若手の先生がほとんどで、回答者もそのあたりの身内が多いので、全国販売の雑誌にもかかわらず、数か月後に発表される入選者(粗品がもらえた)の半分くらいはお互いにどこの誰だか分かっているという状態でしたw
P.S.
解説ありがとうございました。
昨晩↑の解説内容とほぼ同じ理解に達するのに一時間ばかりかかりました。
特に 配列+1と配列%は、??でしたねーー
投稿情報: y sakuda | 2008年10 月19日 (日曜日) 午後 03時30分
>特に 配列+1と配列%は、??でしたねーー
これについては、まず、循環参照はちょっと気がひけるよなっと思って、セル範囲に%かけてみようかなと思ったのですが、単純に%をかけてもダメだと分かったので、配列数式しかないなと考えなおしたものです。
さらに、SUMも配列を扱うよなと思って+1をやってみたのですが、やっぱり配列数式にしないと結果が求められなかったため、配列数式にしたものです。
それにしても、む印さんが44字で出来たとおっしゃっていましたが、式は%を使った式と同じだったのでしょうか。
結構気になっております。
投稿情報: minmax | 2008年10 月19日 (日曜日) 午後 04時07分
minmaxさん、解りやすい解説
ありがとうございます^^
>む印さんが44字で出来たとおっしゃっていましたが
あれも循環つかったやつで、そのとき書き忘れてただけです。
因みに、エンジン部分が
COUNT(A:$F 1:$6)
となるだけのものです。
投稿情報: む印 | 2008年10 月19日 (日曜日) 午後 05時43分
すいません、、正しくは
COUNTA(A:$F 1:$6)
です。
しかし
>SUM(L1:$Q$6+1)
は、一目見て、久しぶりの感動を得た式でしたdd
投稿情報: む印 | 2008年10 月19日 (日曜日) 午後 05時51分
>minmaxさん、解りやすい解説
ありがとうございます^^ ×2
minmaxさんの解説を読んで
ああ、そういうことなのかと膝を叩いている次第です。
>ここのみなさんが基本的に文字数を短くしようと考えて頑張っておられるのでしょうから、
>y sakudaさんがおっしゃる
>>教科書的に言うと悪いプログラムの典型w⇒よいプログラムとは誰にでもわかりやすくですからねーー
>にならざるを得ないと思いますよ。
可読性が悪くなるのは必然ですね~
そういう意味でminmaxさんのように
解説をつけてくれるのはとても有り難いです。m(__)m
投稿情報: くまぷー | 2008年10 月19日 (日曜日) 午後 05時52分
>久しぶりの感動を得た式でしたdd
たまたまです。
それより、私は、む印さん(&えくせるバカさん)ほかみなさんの数式に感動させられたこと数えきれずです。
また、y sakudaさんの熱心さにもいつも感服させて頂いております。
初めて参加させて頂いた頃からずいぶん成長させて頂きここに関しては、幾回りか成長させて頂きました。
くまぷーさん始め皆様に感謝申し上げます。
50回と言わず、ずっと継続されることを心より願っております。
投稿情報: minmax | 2008年10 月19日 (日曜日) 午後 06時09分
y sakudaさんに関してもう一言。
本来y sakudaさんはプログラマですよね。
その方が関数にここまで熱心に取り組まれるということは、ほんとに感心します。
本来であれば、VB、Java等のプログラム(私には全く分かりませんが)でやってしまえば簡単な事が多いと思いますし。
何度もいいますが、ほんとに感心してますし、頭がさがります。
投稿情報: minmax | 2008年10 月19日 (日曜日) 午後 06時21分
>50回と言わず、ずっと継続されることを心より願っております。
そこには当然minmaxさんもいないとねd
ところで、%のことで一言
かなり以前の事なので
みなさん覚えておられないのも無理ありませんが
えくせるバカは一筆書き以前から
ちょくちょく使ってました。
『田園』でも使ってたんですが・・・
投稿情報: む印 | 2008年10 月19日 (日曜日) 午後 06時24分
>本来y sakudaさんはプログラマですよね。
には違いありませんが、業務としてプログラムをいじっていたのはPCではなく、ラージですし、20年位前までです。
私もVB,C、Java、JScriptはわかりませんです。
まあ、JScriptは見れば見当がつく程度には分らないでもないですけど・・・・
別に関数に取り組んでいるわけではなく、こういうパズル的な頭の体操がきらいじゃないだけですよーー
ここに出てきたテクニックがExcelを通常使用するときの役に立つことはほとんどなさそうですから、私も含めて、ここに顔出してる方たちもどこかで実用上使ってやろうと思っていろんな手を考えてらっしゃるわけじゃないと思いますけどね。
ジョー3じゃないですが、楽しければなんでもいいですw
投稿情報: y sakuda | 2008年10 月19日 (日曜日) 午後 06時31分
>ところで、%のことで一言かなり以前の事なので
本当だ、田園で使ってらしゃいますねーー
まるっきり覚えがなかった。
これを演算子として使うというのは普通じゃないので、印象に残っててもよさそうなものなんですが、不思議と言えば不思議ですねーー
投稿情報: y sakuda | 2008年10 月19日 (日曜日) 午後 06時39分
>%のことで一言
ついでに私も一言
%に関しては、以前からいつか使おうと考えておりました。
ただし、この前にy sakudaさんが使っておられた「・・)%」のような使い方は、む印さんが使っておられたのかよく分かりませんが、この間初めて知りました。
目から鱗でした。
投稿情報: minmax | 2008年10 月19日 (日曜日) 午後 06時42分
%は案外利用価値がある演算子ですよねd^^
かなり以前にEWでも
からくちさんが日記で
「A1にある数値で一番右端に出てくるゼロいがいの数字を求めるには」
という問題を出されたので
=RIGHT(A1%%%%%)*1 とか =RIGHT(-(1%&A1))*1 なんて返して
遊ばせてもらいました^^
投稿情報: む印 | 2008年10 月19日 (日曜日) 午後 06時50分
さすがむ印さん
投稿情報: maxmin | 2008年10 月19日 (日曜日) 午後 06時58分
あらら、、
いつの間にイッパイ・・・・・
おもしろかった。=書き込み。
投稿情報: ジョー3 | 2008年10 月19日 (日曜日) 午後 08時37分
>関係者一同問題が出尽くし気味ですねーー
出題者が絶対勝つのを出してみたいけど・・・
たまにはねーーー
今度その方式でやってみようかなーー
わたしは、おおざっぱには勝負できることが
あったとしても、減量では、もう、、、
全然自信がありません。からねーー
投稿情報: ジョー3 | 2008年10 月19日 (日曜日) 午後 08時51分
>今度その方式でやってみようかなーー
おお、是非やって下さい!!
第50問のキリ番をゲットして下さい (^O^)
投稿情報: くまぷー | 2008年10 月19日 (日曜日) 午後 09時10分
>第50問のキリ番をゲットして下さい (^O^)
あ、、うーーーそのーーー
すぐには出来ないかも、
投稿情報: ジョー3 | 2008年10 月19日 (日曜日) 午後 10時13分
>第50問のキリ番をゲットして下さい (^O^)
餌撒いてますけど、今週はなんとかなるんでしょうか?
投稿情報: y sakuda | 2008年10 月20日 (月曜日) 午前 12時05分
>今週はなんとかなるんでしょうか?
49問目は大丈夫です(^O^)
投稿情報: くまぷー | 2008年10 月20日 (月曜日) 午前 06時01分