« 表計算一筆書き(第52問)・・・7人の美女 | メイン | もう一つの「7人の美女」 »

2008年11 月15日 (土曜日)

コメント

y sakuda

Excel35です。
=LEFT("Q",MOD(ROW()*2,19)=COLUMN())
>いづれにしても、完敗だからねーー
×2 www

で、7人ではなく11人美女が居るやつ2種類
Excel38
=LEFT("Q",OR(ROW()+{1,12}=COLUMN()*2))
Excel39
=LEFT("Q",MOD(ROW()*2-2,11)=COLUMN()-1)

kir

45:=LEFT("Q",ISREF($K$8 (A1,C2,E3,G4,I5,K6,B8)))
31:=LEFT("Q",ISREF($K$8 A1))&C2&B8
29:=IF(ISREF($K$8 A1),"Q",C2&B8)

32:=IF((B1=0)*(A2=0),"Q","")&C2&B11
31:=LEFT("Q",(B1=0)*(A2=0))&C2&B11
30:=LEFT("Q",COUNT(B1-A2))&C2&B11
28:=IF(COUNT(B1-A2),"Q",C2&B11)
27:=IF(-(B1<>0)=A2,"Q",C2&B11)
26:=IF(-(B1>0)=A2,"Q",C2&B11)
23:=IF(B1>0>A2,C2&B11,"Q")
22:=IF(B1>0>A2,C2&J9,"Q")

ほぼminmaxさんと同じだと思います。
B11→J9で一文字短縮になかなか気付きませんでした。

くまぷー

Excel45・・・
=LEFT("Q",ISREF($K$9 (K7,C9,H5,G2,F4,E6,D3)))

何の芸もございません(^^ゞ

くまぷー

ところでkirさんの22文字・・・

B3のQとI10のQがケンカをするのでは?

minmax

kirさんとほぼ同じようですが。

29文字2種
=MID("Q",TYPE(B1+A2),1)&B3&K8
=REPT("Q",COUNT(B1+A2))&B3&K8

紙に書いたもの
27文字
=IF(COUNT(B1+A2),"Q",B3&K8)
26文字
=IF(B1=(A2>0)*1,"Q",B3&K8)
ここまでは理屈が分かります。

ここからは実際にパソコンに入力してから
無駄を省いたのですが理屈が分かりません。
24文字
=IF(B1=(A2>0),"Q",B3&K8)
22文字
=IF(A2>0=B1,"Q",B3&K8)
(=FALSE=0→FALSEですよね。
なのに
=FALSE=空欄セルはTRUEになる)

ついでにこれだと11クイーンは28でした。
=LEFT(IF(A2>0=B1,"Q",B3&G2))

やっぱりkirさんはすごいです。

あ、kirさんの22はちょっと直せば何とかなりそうですね。

y sakuda

二人ともトンデモネーナ・・・・
>ここまでは理屈が分かります。
分からんw
前の時もそうだけど、ぜんぜーーんわかんないw

y sakuda

こうやってみるとジョー3もくまぷーさんも私も正常人というか凡人と言うか、なぜか安心してしまうw

む印

kirさん、minmaxさんお二人とも
究極ですねぇ~、ついていけません^^;

私は平凡にRC36文字で、、
=IF(MOD(COLUMN()*7+ROW(),17),"","Q")


くまぷー

>kirさん、minmaxさんお二人とも
究極ですねぇ~、ついていけません^^; ×2

ほんと。頭の中はどうなってんだろ?
かち割って中を見てみたい(^^ゞ

くまぷー

minmaxさんの・・・

=LEFT(IF(A2>0=B1,"Q",B3&G2))

・・を見て初めて気づきました。

leftの第2引数を省略できるのを
知りませんでした。(^^ゞ

くまぷー

ところで出題者はどこにいってしまったんだ?

ジョー3

>ところで出題者はどこにいってしまったんだ?
ぽかーーん・・・・・・
みんな凄い。

>こうやってみるとジョー3もくまぷーさんも私も正常人というか凡人と言うか、なぜか安心してしまうw

安心、安心、

ジョー3

名前まで忘れた。↑

ジョー3

二つのセルを
&で
結んで、、、
ちょっとやってはいたが、
でも、うまく行かなかった。
思考がついて行かなかった。

y sakuda

kir、minmaxご両氏の毒気に当てられて立ち直れてませんがw
常連さんがだいたい出そろったみたいなので(かずさんがまだかな?)
基本形のプログラム(対称チェック等一切なし)をアップします。
4~11のボードでできるようになってますが、いきなり11なんかは
やらない方がよろしいかと思います(少々時間がかかるかも)

今ご覧の方たちにはどうやって動かすかの説明は不要と思いますが
一応・・・・
1.新規ブックを立ち上げ、ALT+F11でVBEを立ち上げます
2.挿入⇒標準モジュール で標準モジュールを一つ追加し
  ↓のコードを丸ごと貼り付け
3.VBEを閉じてExcel画面に戻り、ALT+F8 でマクロダイアローグを出し、
  mainを選択して実行
4.InputBoxが出ますので、4~11の数字を入力してOK

なお、まともな(対称等をはずしたもの)バージョンができたら、差し支えなければ、
くまぷーさんに送ります。(本当に回して比較する気もないので、回転対称の排除に少々難航チュウw)

Dim wBord(11) As Long, wNo As Long
Sub ListProc(ByVal pN As Long)
Dim wSht As Worksheet
wNo = wNo + 1
Set wSht = Worksheets.Add(after:=Worksheets(Worksheets.Count))
With wSht
.Name = pN & "Queen No " & wNo
.Range(.Columns(1), .Columns(pN)).ColumnWidth = 2
With .Range(.Cells(1, 1), .Cells(pN, pN))
.Borders(xlEdgeLeft).Weight = xlMedium
.Borders(xlEdgeRight).Weight = xlMedium
.Borders(xlEdgeBottom).Weight = xlMedium
.Borders(xlEdgeTop).Weight = xlMedium
End With
End With
For I = 1 To pN
With wSht
.Cells(I, wBord(I)) = "Q"
End With
Next
End Sub
Function QCheck(ByVal pI As Long, ByVal pN As Long)
Dim I As Long
QCheck = True
For I = 1 To pI - 1
If wBord(I) = wBord(pI) Then
QCheck = False
Exit Function
Else
If Abs(wBord(I) - wBord(pI)) = pI - I Then
QCheck = False
End If
End If
Next
End Function
Sub Queen(ByVal pI As Long, ByVal pN As Long)
Dim I As Long
For I = 1 To pN
wBord(pI) = I
If QCheck(pI, pN) Then
If pI = pN Then
ListProc pN
Else
Queen pI + 1, pN
End If
End If
Next
wBord(pI) = 0
End Sub
Sub Main()
Dim wSObj As Worksheet, wFlg As Boolean, wN As Variant
Application.ScreenUpdating = False
Application.DisplayAlerts = False
For Each wSObj In ThisWorkbook.Worksheets
If InStr(wSObj.Name, "Queen") > 0 Then
wSObj.Delete
End If
Next
Application.DisplayAlerts = True
Application.ScreenUpdating = True
wFlg = True
wNo = 0
Do While wFlg
wN = InputBox("ボードサイズ(4~11)を入力してください", "N Queen")
If IsNumeric(wN) Then
wFlg = wN < 4 Or wNo > 11
Else
If wN = "" Then
Exit Sub
End If
End If
If wFlg Then
MsgBox "ボードサイズが異常です", vbOKOnly
End If
Loop
Application.ScreenUpdating = False
Queen 1, wN
Application.ScreenUpdating = True
End Sub

不等号は全角に直しましたが、ブランクまでは手が回らずインデントが無くなっちゃってるとこはご勘弁願います^^;

ジョー3

F9で、遊んでも見た。
もっと色々の不規則に見える
パターンまではいかなかった。
で、これも、不満足。

=IF(OR(ROW()*11+COLUMN()-MID(NOW(),12,1)={12,25,38,51,64,77,90}),"Q","")

ジョー3

>いきなり11なんかは
>やらない方がよろしいかと思います(少々時間がかかるかも)
4,5,6,9・・・・そして、
11を、やってみました。
これも面白い。

くまぷー

sakudaさん、さっそく遊んでみました。

Q11でやったら、仰せの通りけっこう
時間がかかり、シート数が2600だか2800だかになりました。

>差し支えなければ、くまぷーさんに送ります。

お待ちしています。

くまぷー

>F9で、遊んでも見た。

これも面白いです。(^O^)

悪児

超人的な解答を見てしまっては恥ずかしいのですが、
表明したので、平凡なRCですが、一応紹介します。(^^)ゞ

三四郎35
=If(Row(A1)*2 MOD 17+Col(A1)=9,"*")

Excel化すると37になるようです。
=LEFT("*",MOD(ROW()*2,17)+COLUMN()=9)

「桂馬」で、原形の37は直ぐに作れましたが・・・

三四郎37
=If((Row(A1)*2+Col(H1)) MOD 19=1,"*")

かず

いやいや凄いことに…
σ(・・)は全く圏外でした。
この土日はネットも圏外なので…

くまぷー

悪児さん、久しぶりに参加してくれて
うれしいです。

>超人的な解答

本当に超人的ですね。
レベルが高くなって私には理解できません。(T.T)

くまぷー

かずさん、お早うございます。

>σ(・・)は全く圏外

私も今日はバドの試合で
一日中、圏外です。(^^ゞ

くまぷー

sakudaさんから、改訂版のプログラムを
頂きました。これから、体育館に行かなければ
ならないので帰って来たら、みなさんに
紹介させて頂きます (^.^/~~~

kir

おはようございます。
>ところでkirさんの22文字・・・
あ~やっちまった~!ホント爪が甘い。

>前の時もそうだけど、ぜんぜーーんわかんないw
1)基点作成:=IF((B1=0)*(A2=0),"Q","")
  K11にQを作る。(未入力セル=0なので、右隣も下もそうなのはK11のみ)
2)基点複製(桂馬):&C2
  K11をI10で、I10をG9で・・・C2をA1でというように、最初のK11をコピーしていきます。
3)基点複製(残り)&B11
  桂馬だけだと一個たりない。I1セルでK11を参照させた。
・・・A1の数式だと一見?かもだけど、Qが表示されてるセルの式を見ると分かりやすいかも。
  別の言い方をすればK11に数式入力で11×11へコピペという感じ?

y sakuda

>前の時もそうだけど、ぜんぜーーんわかんないw

空セルを&で文字列化して、見かけは空で0ではない物を作ってるなど、個々の動きはわかるのですが、全体として、ああいう図柄になるというイメージが頭の中にできませんです・・・・・
一種の再帰式で、プログラムでの再帰式にはなれているのですがねwww

ジョー3

みなさんどうも、ありがとうございました。
minmaxさん & kirさん  
配置まで見つけるってことで、
少し苦しんでいただこうと思ったんですが、
・・・・・楽に解かれたようで、、

sakudaさん、
思いがけない、力作まで作っていただき感謝!!
ん、ん、、さらっと作ったようにも見える。
すごいことです。

悪児さん、
やはり、あの式の図は特徴を
分かっておられたようで、、ささっと、
でしたね、

くまぷーさん、、
供に悩んでいただいて、感謝。

・・・・・・
わたし・・
F9で、100種類ぐらいのたくさんの型を
簡単に出せないかと考えたが、、
力不足でした。

皆さんお付き合いいただき感謝でした。

くまぷー

sakudaさんから頂いたファイルを
アップしました。
みなさん、ご覧下さい。

コメントの確認

コメントのプレビュー

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

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

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

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

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

処理中...

コメントを投稿

アカウント情報

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

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 メニュー