EightQueensに嵌ってます 2015/07/18 姫路IT系勉強会 2015.07 さとう.

Slides:



Advertisements
Similar presentations
N クイーン問題 N×N のチェス盤の上に、将棋の飛車と角 行の動きを同時にできる駒(クイーン) をお互いに動きを妨げないように N 個置 け。
Advertisements

J: Magical Switches JAG 模擬地区予選 2013 原案:保坂 解答:保坂・楠本 解説:保坂.
3次元nクイーン問題の 解に関する研究 論理工学研究室 伊藤精一
情報・知能工学系 山本一公 プログラミング演習Ⅱ 第3回 配列(1) 情報・知能工学系 山本一公
2015/07/04 東海道らぐ 2015年7月オフな集まり in 名古屋 さとう
7/10 if 文課題 力作が多くて感心! 演習1:キーボードから2つの整数を入力し、小さい方の数字を 表示せよ。
ループで実行する文が一つならこれでもOK
F5 キーを押すか、または [スライド ショー] > [最初から] をクリックして、コースを開始してください。
稲葉 一浩 (k.inaba) Python と プログラミングコンテスト 稲葉 一浩 (k.inaba)
Lightweight Language Weekend ls-lRシェル
RaspberryPiをカメラに(仮) 姫路IT系勉強会 さとう 2015/12/19(一部改訂)
基礎プログラミングおよび演習 第8回.
情報工学概論 (アルゴリズムとデータ構造)
Bottle/Pythonによる Webアプリ入門
クロスワードゲームの 作り方を学ぼう/やってみよう ‐ボードゲームの動作機構‐
 Combinations(2)        古川 勇輔.
トマトはいくつありますか?.
PHP Framework Update symfony 編 株式会社ディノ 月宮紀柳.
第6章 2重ループ&配列 2重ループと配列をやります.
プログラミング論 II 電卓,逆ポーランド記法電卓
あなたのお店をもっと 「ブランディング」して、 あなた自身の時間を作るために 業務を「自動化」しよう!
Narcissus 自分自身を愛した美少年JavaScript
データ構造と アルゴリズム 第八回 知能情報学部 新田直也.
くらしのにほんご とよなか Ⅰ.自己紹介B       おおさかでんき        しゃいん 「わたしも 大阪電気の 社員です。」 次へ.
繰り返しのない二元配置の例 ヤギに与えると成長がよくなる4種類の薬(A~D,対照区)とふだんの餌の組み合わせ
モデリングシミュレーション入門(井庭崇)
CGと形状モデリング 授業資料 長井 超慧(東京大学)
C 言語について 補足資料 資料および授業の情報は :
Integration between GitLab and Fuego
梅澤威志 隣の芝は茶色いか 梅澤威志
1 T 行きがけ順: A B D F I J C G H 通りがけ順: D B I F J A G C H
意外と知らない植物の違い 後期 月曜3コース 2班 和泉健太 井野崎恵理      植田小晴 上西塔子.
【実践ワーク1】 新しいスライドを挿入しましょう。
AOYAMA スクリーンを見てください。これはユニフォームです。選手の名前はどこに書いてあるか分かりますか?
indentについて forやifの「中身」を右に寄せる. forやifの「外枠」は右に寄せない. int x; x = 3;
タグを使ったウェブページ作成 兵庫県立伊丹北高等学校 佐藤 勝彦.
Cプログラミング演習 第10回 二分探索木.
「入力」はInputBoxやテキストボックスに限らず、 セルからのデータの入力や、チェックボックス等からの入力全てを含める。
プログラミング 4 整列アルゴリズム.
15K1117 下窪 聖人 15K1013 坂本 倖輝 15K1112 黒川 晶太 15K1015 関根 修斗
シグナルとしての企業の債務 担当  岩永 剛 2005/7/11.
or-4. モンテカルロシミュレーション (オペレーションズリサーチを Excel で実習するシリーズ)
復習 一定回数を繰り返す反復処理の考え方 「ループ」と呼ぶ false i < 3 true i をループ変数あるいはカウンタと呼ぶ
3次元Nクイーン問題の 解の存在の検証 07-1-037-0106 前波 大貴 情報論理工学研究室 宜しくお願いします。
ファイルの読み込み #!/usr/bin/env perl #Perlスクリプトの指定 open(FILE, "food.txt");
アルゴリズムとプログラミング (Algorithms and Programming)
知能情報工学演習I 第11回( C言語第5回) 課題の回答
vc-2. Visual Studio C++ のデバッガー (Visual Studio C++ の実用知識を学ぶシリーズ)
復習 breakとcontinueの違い int i; for (i = 1; i <= 100; i++) { ・・・処理1・・・・
復習 Cにおけるループからの脱出と制御 break ループを強制終了する.if文と組み合わせて利用するのが一般的. continue
本当は消去できていない!? ~データを完全消去する方法~
本当は消去できていない!? ~データを完全消去する方法~
情報処理Ⅱ 2005年1月25日(火) レポート課題2の解説.
Classroom instructions
pf-5. 関数呼び出し,スコープ (Python プログラミング基礎を演習で学ぶシリーズ)
or-4. モンテカルロシミュレーション (オペレーションズリサーチを Excel で実習するシリーズ)
復習 breakとcontinueの違い int i; for (i = 1; i <= 100; i++) { ・・・処理1・・・・
or-4. モンテカルロシミュレーション (オペレーションズリサーチを Excel で実習するシリーズ)
オブジェクト指向 プログラミング 第四回 知能情報学部 新田直也.
pf-2. 条件分岐 (Python プログラミング基礎を演習で学ぶシリーズ)
第7章 そろそろ int 以外も使ってみよう! ~データ型 double , bool~
mi-5. プロダクションシステム 人工知能を演習で学ぶシリーズ(5)
CGと形状モデリング 授業資料 1,2限: 大竹豊(東京大学) 3,4限: 俵 丈展(理化学研究所)
君ならどうする – ls-lRシェル Python編
FPS(続き).
ソーシャルメディアの画像テンプレート このテンプレートを使用して、既存の画像のサイズを変更するか、 ソーシャル メディアで使用する新しい画像を作成します。 Twitter Facebook Instagram LinkedIn 既存の画像のサイズを変更するには 新しい画像を作成するには 次のページで、画像サイズを選択し、画像のプレースホルダーの中央にある写真アイコン.
知能情報工学演習I 第11回(後半第5回) 課題の回答
プログラミング 2 静的変数.
情報処理技法(Javaプログラミング)1 第8回 同じ処理を何回も繰り返すには?
画像の変更方法
Presentation transcript:

EightQueensに嵌ってます 2015/07/18 姫路IT系勉強会 2015.07 さとう

「えいとくいーん」とは ボードゲームのクイズです チェスの「クイーン」を並べてください 盤の大きさ(チェス盤なら8x8)と同じ数(8 個) クイーン同士を、互いに 効いてない位置に 蛇足: クイーン(♛)は 縦横斜めに、 目一杯動けます

Pythonでやってみました https://github.com/sato-makoto/8queens

で、実行結果はというと 最初にできたものは、はっきりいって面白くない です。 縦横の位置を表示するだけです。 $ python eightqueen.py [[4, 0], [1, 1], [7, 2], [0, 3], [3, 4], [6, 5], [2, 6], [5, 7]] もうすこし、なんとかやります...

やっつけな方法でやりました(0) はじめに、64個のマス目を全部リストアップ def makemylist(): listz = [] for f1 in range(width): for f2 in range(width): listz.append([f1, f2]) return listz

やっつけな方法でやりました(0)' 64個くらいなら、たぶん、そう大きくないです ね... >>> eightqueen_func.makemylist() [[0, 0], [0, 1], [0, 2], [0, 3], [0, 4], [0, 5], [0, 6], [0, 7], [1, 0], [1, 1], [1, 2], [1, 3], [1, 4], [1, 5], [1, 6], [1, 7], [2, 0], [2, 1], [2, 2], [2, 3], [2, 4], [2, 5], [2, 6], [2, 7], [3, 0], [3, 1], [3, 2], [3, 3], [3, 4], [3, 5], [3, 6], [3, 7], [4, 0], [4, 1], [4, 2], [4, 3], [4, 4], [4, 5], [4, 6], [4, 7], [5, 0], [5, 1], [5, 2], [5, 3], [5, 4], [5, 5], [5, 6], [5, 7], [6, 0], [6, 1], [6, 2], [6, 3], [6, 4], [6, 5], [6, 6], [6, 7], [7, 0], [7, 1], [7, 2], [7, 3], [7, 4], [7, 5], [7, 6], [7, 7]]

やっつけな方法でやりました(1) 次に、左端のマス目から、どれかを選びました def randselect(n): random.seed() return random.randrange(0,n)

やっつけな方法でやりました(2) そして、それより右にある、効いているマス目を 全部消しました。 if temp.count(l) and l[0] == x: temp.remove(l) if temp.count(l) and l[1] == y: if temp.count(l) and \ if(abs(l[0] - x) == abs(l[1] - y)):

やっつけな方法でやりました(3) それから、隣の行の、まだ消えてないマス目のど れかを選択です。 以下繰り返し。 def step(y, pairs, next_list, mylist): x = next_list[randselect(len(next_list))][0] mylist = remove_list(x, y, mylist) pairs.append([x, y]) y+=1 return y, pairs, mylist

やっつけな方法でやりました(3)' 以下繰り返し? いや、もし行き詰まったら?

やっつけな方法でやりました(4) もし行き詰まったら? はい、最初からやり直しです。 else: x, y, pairs = allclear() 同じ間違いを、何回繰り返すかわかりません いい方法がまだ浮かばない(めんどくさい)ので、 いずれは通ることを信じて、何度でもやり直しさ せています

もう少し工夫してみました(0) 出力を少し。 $ python eq2.py 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 | | | | | | ♕ | | | 1 | | | | | | | | ♕ | 2 | | ♕ | | | | | | | 3 | | | | ♕ | | | | | 4 | ♕ | | | | | | | | 5 | | | | | | | ♕ | | 6 | | | | | ♕ | | | | 7 | | | ♕ | | | | | |

もう少し工夫してみました(1) たとえばHTMLに。 <tr> <td class="left">6</td> <td class="white"></td> <td class="gray"></td> <td class="gray">♛</td> </tr>

もう少し工夫してみました(1)' たとえば白と黒両方を。 for y in queens_list: if y[0] == x and begin_color%2 == 0: q = '♕' elif y[0] == x and begin_color%2 == 1: q = '♛'

もう少し工夫してみました(2) selenium と組んでみました http://www.seleniumhq.org/ html_output(x) browser.get ('file://' + working_dir + output_html)

実はまだ...(0) 問題点多すぎです(汗 まず無駄だらけ。 $ python watch_try_and_error.py (略) [[3, 0], [0, 1], [4, 2], [7, 3], [5, 4], [2, 5]] [[3, 0], [0, 1], [4, 2], [7, 3], [5, 4], [2, 5], [6, 6]] [[3, 0], [0, 1], [4, 2], [7, 3], [5, 4], [2, 5], [6, 6], [1, 7]] 13回のエラーを経て、ようやくできました

実はまだ...(1) 見ておわかりの通り、HTMLの表示は汚いです。 (実はCSSもよく知らない...汗) 中はたぶん、もっと汚いです(汗

実はまだ...(2) git見様見真似で、こうなってしま いました。 $ git branch -a * lists master remotes/origin/8x8led remotes/origin/HEAD -> origin/master remotes/origin/at_random remotes/origin/lists remotes/origin/master remotes/origin/monte remotes/origin/multi_queen remotes/origin/step

何かツッコミはございませんか クリックしてテキストの挿入

それでは、まいど ご静聴だかご清澄だか、 ありがとうございます。 誰か、59点より 1点くらいおお くください... 終