« 表計算一筆書き・・・「中禅寺湖シリーズⅠ:中級?初級?」 | メイン | 表計算一筆書き・・・皇帝 【問題】 »

2007年11 月10日 (土曜日)

コメント

ジョー3

=LEFT("*",(MAX((ROW()-6)^2,(COLUMN()-6)^2-21)=4)+(COLUMN()=6))

同じ発想の方、多いと思いますが、
62より短くなりませんでした。

長方形と、縦棒の2分が・・・悔しいです。スパッと切れなかった感じで、残念。

y sakuda

うーーん、今回は全くダメ。
ジョー3、悪児さんのはなぜか全く頭にうかばなかったです。
最終的にはくまぷーさんと同じような路線で検討してましたが形にならない内に時間切れ・・・・

私は、最後まで長方形を一組でやるところが上手く行きませんでした。

一応一番短くなった69を出して恥をさらしときます。

=LEFT("*",OR(MOD((COLUMN()-6)^2+ROW(),33)>29,COLUMN()=6,ROW()={4,8}))

minmax

悪児さんの解答すばらしいです。
ほかの皆さんも苦労されたあとがよく見えてすばらしいです。
私のエクセルの解答はこちらです。
文字数59=LEFT("*",LEN(MIN((9-ABS(6-ROW()))*(6-COLUMN())^2/7,25))<3)
文字数51=MID("*",LEN(ABS(6-COLUMN())*(2-ABS(6-ROW()))/5),1)
文字数50=MID("*",LEN((6-COLUMN())^2*(4-(6-ROW())^2)/25),1)
(悪児さんの解答を参考にROWSを使うと51が49文字になります)
LENを使わない方法を模索したのですがだめでした。
みているだけの人のためにも文字数51だけ簡単に説明します。
(文字数50は応用で説明が長くなるので省略)

列は真ん中がゼロとして左右に1づつ増加するように設定(両サイドは5になる)
行は、4と8行目が0になるようにして内側はプラス、外側はマイナスになるように設定
行と列を掛け算した結果を5で割ると両サイドの列は元々5の倍数なので整数になるがその他の4、8行以外のセルは端数が生じる。
両サイドの掛け算の結果を5で割ったものがプラスの場合のみ、文字数1文字となる。
結果として「*」を表示したいセルは0から9の数値となり、文字数1の場合のみ「*」を表示させるのにMIDを使っている。

y sakudaさんの式もそういう方法もあるのかと勉強になりました。
長短関係なくほかの皆さんのみたいです。

きっちー

三四郞です。

56文字。すぐ出来たもの。
=If(Max(Cols(A1:$F6)-6,Rows(A1:F$6)-3)*(Col(A1)-6),,"*")
=If(Min(6-Cols(A1:$F6),3-Rows(A1:F$6))*(Col(A1)-6),,"*")

52文字。48文字までぜいにく落とし。
=If(Fp((3^(5-Rows(A1:F$6))/9+4)*(Col(A1)-6)/5),,"*")
=If((3^(5-Rows(A1:F$6))/9+4)*(Col(A1)-6) MOD 5,,"*")

48文字。
=If((8/2^Rows(A1:F$6)-1)*(Col(A1)-6) MOD 5,,"*")

列方向は、中心が0。両端が5の倍数。
行方向は、4と8行が0、中心側が5の倍数以外の整数、外側が少数以下がある。

もう少し詰めていきたかったのですが、出遅れた上に体力がいまいち。

ジョー3

minmax さん、力作ですねーー
文字数59の
/7  と
それに続く、
,25 が、とっても、面白いです。
a5からa7と、右側の3個・・・上手です。

えくせるバカ

お久しぶりです
頼まれもののクレジット集計システムを
Accessで作っていたら夢中になってしまい、今日までExcelさわってませんでした。(^_^;)
「あっ今日は解答日だ」と
夕方携帯で久しぶりに覗いたら・・・。
とんでもない文字数の話になってて
とりあえず二つだけ
62文字
 =IF((COLUMN()<>6)*MAX(ABS(COLUMN()-6)-5,(ROW()-6)^2-4),"","*")

59文字は配列もので
A1:E8に
 =IF((COLUMN()<>6)*({3;3;3;0;1;1;1;0}-{2,0,0,0,0})<1,"*","")
Ctrl+Shift+Enterしてから
まずK列までつぎに11行までコピペ
・・・無理やりです。

ジョー3

わーーー、きっちーさんも、すごすぎですーー。

で、48文字を予想した人??・・・大当たりーー。

ジョー3

えくせるバカ  さん、ご苦労様ですーーー

62文字ねーー、
おなかま、おなかま、、、

y sakuda

みなさんのうなりながら解析してます・・・
minmaxさんのは魔術的ですね。
Lenを使う手法は何度か見せてもらってますが、うまいですねーー
きっちーさんのはModの使い方がExcelと違うので理解するのに苦労しました^^;
Excelに直してみても50ですね。すごい!
Excel族のために翻訳してみました
=IF(MOD((8/2^ROWS(1:$6)-1)*(COLUMN()-6),5),"","*")

えくせるバカさんのもパーツごとの意味は分かるんですが、全体で理解しようとするとだまされたみたいな気がします^^;

ジョー3

>Excel族のために翻訳してみました
>=IF(MOD((8/2^ROWS(1:$6)-1)*(COLUMN()-6),5),"","*")
sakudaさん、どうもですーー
きっちーさん、数学的ですーー
左右を5の倍数にして、あまりがゼロ、、
きっちり、うつくしいですーー

では、美しいで賞と、勝手に・・・・

ジョー3

>minmaxさんのは・・・・
>Lenを使う手法は・・・・・うまいですねーー
苦労して出来たのなら、力作で賞!!
さらさら、出来たのなら、マジックで賞!!

悪児さん!!あなたは、、
回答もさることながら、
今回も、良い問題だったで賞!!


minmax

きっちーさんのような発想は自分にはできないと思います。
エクセルに変換するため考えている間にy sakudaが翻訳してくれました。ありがとうございます。
48文字はすごいです。

ジョー3

くまぷーさん、まだ呑んでる解!!
何のかんの言って、きっちり、エクセルも
三四郎も仕上げましたね。

minmax

ジョー3さん恐れ入ります。
自分自身に賞を付けるとしたら
何となくできたんで賞です。

悪児

こんばんは。
今、帰ってきました。
今回は楽できる、
と思っていたのですが・・・(^^)(^^)

まだ皆さんの解答ほとんど見ていませんが、解答者悪児の解答をアップします。

三四郎50
=If(Fp((2^(3-Rows(A1:A$6))-1)*(Col(A1)-6)/5),,"*")
三四郎47
=If(Fp((2^(3-Rows(A1:A$6))-1)*Col(AI1)/5),,"*")
Excel52
=IF(MOD((2^(3-ROWS(1:$6))-1)*(COLUMN()-6),5),"","*")
Excel51
'=IF(MOD((2^(3-ROWS(1:$6))-1)*COLUMN(AI1),5),"","*")

ジョー3

sakudaさんも、すごいですーーー
あれーーー、あれーーーー
ROW()={4,8}))
これは、どのように動いてるのだろう・・・
・・・・これから、解析します・・・・

それにしても、sakudaさん、解析が早いですねーーー。

悪児

まだ詳しく見ていませんが、
きっちーさんと似ているようですね。(^^)ゞ

最後に3文字一気に減らせたときは、
我ながら感動しました。(^^)(^^)

(三四郎では3文字減だけど、Excelでは、1文字減にしかならない・・・)

かず@岡山

まったく、皆さんの発想は凄いですね。

今回は、全然考え付きませんでした。(ーー;)

ジョー3

sakudaさんの、
>ROW()={4,8}))
分かりましたーーー、
or(   が、あるから、
4だけでなく、8にも反応してるんだった。
なんか、前、自分も真似してたのに、
混乱してました。
・・・(今度、忘れないうちに使おうっと、また)

ジョー3

>三四郎47
どひゃーーーー、
回答者悪児!!恐るべし!!
これが出てこなければ、
48、、、、ピッタリ賞だったのにぃーー・・・
がっくり!!。

きっちー

>Col(AI1)

今回は、そこまで詰め切れず、負けました。

ただ、悪児さんの数式は、まだ若干の余裕があります。

三四郞 45文字。
べき乗の内側を展開しました。

=If(Fp((8/2^Rows(A1:A$6)-1)*Col(AI1)/5),,"*")

どこまで行けるんでしょうね。

minmax

回答者悪児!!恐るべし!!×2
何でAI1になるんだ
よくわからん
もうちょっと見てみます。

きっちー

ついでに、
Excel 49文字。

=IF(MOD((8/2^ROWS(1:$6)-1)*COLUMN(AI1),5),"","*")

y sakuda

質問です
三四郎のFPってどんなんでしたっけ?
前どなたかがどこかで解説してたと思いましたが見つからない^^;

悪児

>三四郎のFP

小数部分を返します。

ジョー3

>ついでに、
>Excel 49文字。

きちんと、減量すると、ますます、、
美しくなってくると言うことだ。
皆さんに、感心、感心!!

きっちー

>三四郎のFPってどんなんでしたっけ?

小数部分を抽出する関数です。

数で割って小数部分を抽出すると
MOD と同じ答えが返ってきます。

a mod b = fp(a/b)

文字数は同じですので互換関数となります。

y sakuda

>小数部分を抽出する関数です。
ありがとうございました。
そうですね。ExcelでもMod 1 で小数点以下が出せればと何度か思いました^^

y sakuda

変なこと書きました。
Excelの関数のModは小数点以下返しますね。
返してくれないのはVBAの時でした^^;

minmax

悪児さんには完全に参りました。
言葉もありません。

くまぷー

みなさん、お早うございます。
みなさんの発想の豊かさに本当に
言葉を失ってしまいました。

特に・・・
>Col(AI1)
・・・とか
>2^(3-Rows(A1:A$6))-1)
・・・とか
アルコールの残っている頭には
刺激が強すぎます・・・

いやー、本当に勉強になります。

・・・今日はバドの市民大会です。
1日中、体育館にいます。
それではこれから、行って参ります。(^o^)/~~~


悪児

>べき乗の内側を展開しました。

悪児ときっちーさんの解答は、
似ているどころか、
エンジン部分は全く同じ
だったんですね。(^^)(^^)
Cを詰めた、悪児と、
Rを詰めた、きっちーさん。

合体すると、45文字だったのか・・・(^_^)(^_^)/~

悪児

>悪児さんには完全に参りました。

minmaxさんの、50文字宣言がなければ、悪児は文字で終わっていました。(^^)ゞ

やっぱり、競り合ってこそ、
アイデアも出てきますね。(^_^)(^_^)/~

悪児

>今回も、良い問題だったで賞!!

色んな解き方が出ましたし、
最後で競り合いになりましたし、
結果的にとても面白い問題になりましたが、
出題時に想定していたシナリオとは、
全然違った展開になりました。(^^;)(^^;)

ジョー3

>出題時に想定していたシナリオとは、
>全然違った展開になりました。(^^;)(^^;)
みなさん、本気で・・・・凄かったです。
今回は、最初のもので、半分満足で、
頑張れませんでした。

くまぷー

今日は朝8時から夕方6時まで
体育館にいました。(そんな科白が多いな・・・)

いや~、正直、疲れました・・・

さて、みなさんの超絶ウルトラC級の技を駆使した式の他に
やはり、こういう式を掲示しておかないと・・・(^。^)

三四郎82文字
=If(Col(A1) IN {1,11} AND Row(A1) IN {5,6,7} OR Row(A1) IN {4,8} OR Col(A1)=6,"*")

Excel82文字
=IF(OR(MOD(ROW(),4)=0, COLUMN()=6,AND(MOD(COLUMN(),10)=1, ABS(ROW()-6)<3)),"*","")

こういうシンプルな式もいいと思います。(^。^)

きっちー

>やはり、こういう式を掲示しておかないと・・・(^。^)

これは、シンプル部門のシンプルで賞!

くまぷー

>これは、シンプル部門のシンプルで賞!


ありがとうございま~す!!

悪児

>こういうシンプルな式もいいと思います。(^。^)

(・_・)(._.)(・_・)(._.)

段階別、というのも面白いかも知れませんね。Row()とCol()を何セット使っているかで、段階を分け、その中での短さ、美しさを競う。

今回の最短は、RC1組の「1段階」
悪児の用意した三四郎56などは、
RC1組+Cの「2段階」

上のくまぷーさんのシンプル式は
RC+R+Cの「三段階」ですね。

でも、orとandを駆使したかなりハイレベルな解法だと思います。(^_^)(^_^)/~

悪児も、三段階の非常に初歩的なものを作っていますので、紹介します。

殺陣三本・横二本を書き、
上下3行ずつを消して、
最後に真ん中の縦棒を書き直しています。

三四郎72
=If((Row(A1) MOD 4*(Col(J1) MOD 5)+((6-Row(A1))^2>4))*(Col(A1)<>6),,"*")

悪児

「「中」への道01」

をアップしました。(^^)ゞ
ぜひご覧下さい。(^_^)(^_^)/~

http://akuji.justblog.jp/blog/2007/11/01_47aa.html

minmax

悪児さんとこさっと見てきました。
続きもすごく楽しみです。
もう一回見にいってきまーす。

くまぷー

「「中」への道02」希望(^^)

k@自転

最近は、、、いや最初からだ^^;
思いつきがない^^;

=IF(OR(ROW()={4,8},COLUMN()=6,(COLUMN()={1,11})*(ROW()>3)*(ROW()<9)),"■","")

ジョー3

おーーーーk先生!!
まってました!!!

・・OR(ROW()={4,8},COLUMN()=6・・・
これ、これ、いいなーーーまた真似します。ね、、
・・・COLUMN()={1,11})*( ・・・
おーーー2カ所もサービスね、
どなたにでも分かるような(意味がすぐ)
親切な回答、、やはり、現場で鍛えた、、
たまものですね、、あなたのファン・・・
ジョー3より。・・・・

悪児

「「中」への道02」
アップしました。(^_^)(^_^)/~

http://akuji.justblog.jp/blog/2007/11/02_49e9.html

くまぷー

Kさん、ジョー3さん、どもです。(^^)
おいらの82文字もそうですが
見やすいのはいいですよね。

悪児さんのところの
見てきました。
あそこでうちわ話として書かれている通り
悪児さんは追加問題を出そうと考えていたのでした。

つまり、ご自分の数字が最短だと
確信していらっしゃったようで・・・

それなら、それより短いのを
作ってやろうじゃないの、として
ひねりだしたのが、くまぷーの三四郎55文字でした。

kir

今回アイデアがこれだけでした。
A1:K11を選択して、
=LEFT("*",{1,0,0,0,0,2,0,0,0,0,1}+{0;0;0;2;1;1;1;2;0;0;0}>1)
Ctrl+Shift+Enterで確定
{}が付いて62文字

くまぷー

配列数式による解答は
えくせるバカさんとkirさんの
お二人ですね。

えくせるバカさんのはコピーする手順に指定があり
kirさんのものは一発・・・

どちらがどうというのではなく
配列数式は不思議です(^^ゞ

悪児

「「中」への道03」
アップしました。(^_^)(^_^)/~

http://akuji.justblog.jp/blog/2007/11/03_22f3.html

悪児

>ひねりだしたのが、くまぷーの三四郎55文字でした。

黒魔術ですな。(^^)(^^)
正に、「ひねり出した」感じ。(^_^)(^_^)/~

minmax

「「中」への道03」
見に行ってきました。
悪児さんが事故に・・・?
詳しくは悪児さんのとこへいってみてください。

悪児

「「中」への道04」です。

http://akuji.justblog.jp/blog/2007/11/04_f525.html

どうぞ、よろしく。(^_^)(^_^)/~

悪児

「「中」への道05」です。

http://akuji.justblog.jp/blog/2007/11/05_e61e.html

やっと、おしまい。(^^)ゞ

くまぷー

悪児さん、お疲れ様でした。
あまりにも面白かったので
このシリーズ+αを
「もうひとつの表計算一筆書き」として
こちらからリンクを張ってしまいました。(^O^)

http://kumapooh2007.hp.infoseek.co.jp/

コメントの確認

コメントのプレビュー

プレビュー中です。コメントはまだ投稿されていません。

処理中...
コメントを投稿できませんでした。エラー:
コメントを投稿しました。 さらにコメントを投稿する

入力された文字と数字は画像と一致していません。再度入力してください。

最後に、下の画像の中に見える文字と数字を入力してください。これはプログラムを使ってコメントを自動的に投稿するのを防ぐために行われています。

画像を読み取れない場合は 別の画像を表示してください。

処理中...

コメントを投稿

アカウント情報

(名前は必須です。メールアドレスは公開されません。)

2024年8 月

        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

TOP メニュー