coconutsfineの日記

2009-02-25

勉強会 in BKC を構想中です

01:02

BKCで勉強会などをやることができれば素敵ですねとid:hitode909と相談しています。


現在考え中なのが、LT(Lightning Talks)形式で、短い持ち時間で多くの人に喋ってもらおうというものです。ただでさえクローズドな感じの勉強会になると予想されるのに、あまり限定的なテーマで勉強会を開いてしまうと人が集まらないと思われるので、初めて勉強会を開くのであればこの形式が最適なのではないかと考えました。普通のLT型の勉強会は話す側と聴く側に別れるようですが、学生同士の発表会でただ聞いているだけの人は得られる物が少ないと思うので、今回は全員になんらかを喋ってもらえば良いのではないだろうかと考えています。ただ、全員が全員同じ持ち時間で喋るだけ技術や能力がそろっているとは考えにくいので、持ち時間をLarge(20分くらい)とSmall(5分くらい)の二つにわけて、発表をすれば良いのではないのかと思います。


勉強会の内容

  • 予定日は適当な土曜日
  • もし自由だと喋りにくいというのであれば簡単なテーマを設定
  • 参加者は20分または5分の持ち時間で発表をし、その後数分間質疑応答をする
  • 休憩をはさみつつ全員が何らかの発表を終わらせたら終了
  • 後日感想や反省点などをブログ等で挙げてもらい、今後に生かす

必要な物

  • 参加者(最低8名くらい?外部からも当然OK)
  • スクリーンに映写できる環境のある会場(BKCのどこかを借ります)
  • お菓子(勉強会には必須らしい。あとで参加者で割り勘)

得られるもの

  • BKCで勉強会を開催するためにはどのようなことをすれば良いのかがわかり、今後の足がかりとなる。
  • 自分のテーマを話す為に客観的にまとめることで勉強になる
  • 人前で話すスキルが得られる
  • 自分の知らない分野の話が聞けるので浅く広い知識が得られる

予想される失敗

  • 人が集まらない
  • 馴れ合って緊張感がなくなりぐだぐだになる
  • 運営の力不足でぐだぐだになる
  • 学生の発表なのでどうしてもレベルの低いものになってぐだぐだになる

こんな感じで考えています。もし開催することになったらいろいろな方に声をかけさせていただくつもりです。


【追記】

外部からの人も大歓迎です。

むしろ来ていただいた方が緊張感が上がって良い感じです。

よろしくお願いします

hitode909hitode9092009/02/26 07:21よくわかりませんが、お見合いのようなものですか?
がんばってください^^

UDONCHANUDONCHAN2009/02/26 17:15彼女とかできますか?

PollyPolly2011/06/06 09:20AFAIC that's the best awnser so far!

fmedovyrudfmedovyrud2011/06/06 18:15GvvQMO <a href="http://ugumouqxksai.com/">ugumouqxksai</a>

phfjcjnhqtzphfjcjnhqtz2011/06/06 23:30bKSUsy , [url=http://ivfkryiipghh.com/]ivfkryiipghh[/url], [link=http://vrhcgynkryby.com/]vrhcgynkryby[/link], http://calwegpvixaq.com/

ttjpmjjttjpmjj2011/06/09 00:11TDnG7a <a href="http://rcmspfixpatl.com/">rcmspfixpatl</a>

owjosllowjosll2011/06/10 22:55h1afH5 , [url=http://nncmstxaorbh.com/]nncmstxaorbh[/url], [link=http://vmluvjegccot.com/]vmluvjegccot[/link], http://whgvurheknxe.com/

2009-01-23

学科仮申請

18:48

2008年度 情報理工学部 2回生進級時学科選択

学生証番号:

氏名 :

============================================================

■ 希望学科を以下の内容で受け付けました。

【第1希望】:情報コミュニケーション学科

【第2希望】:情報システム学科

【第3希望】:メディア情報学科

【第4希望】:知能情報学科

============================================================

CassaraCassara2011/10/09 02:08God, I feel like I slohud be takin notes! Great work

xvtjgvtpctxxvtjgvtpctx2011/10/10 21:07Wuugq6 , [url=http://ivbtiocnetol.com/]ivbtiocnetol[/url], [link=http://ndwztgkebswu.com/]ndwztgkebswu[/link], http://nlgiqdexmovs.com/

lebkqeelebkqee2011/10/12 00:359E5v9O <a href="http://exsxraoecjoo.com/">exsxraoecjoo</a>

ijxljnlvhpqijxljnlvhpq2011/10/13 02:44EcDhey , [url=http://wwvnibhckodv.com/]wwvnibhckodv[/url], [link=http://tlkqkdlutzne.com/]tlkqkdlutzne[/link], http://honknmndausf.com/

2008-12-13

オブジェクト指向の練習

22:29

任意の三点からなる三角形の面積を求め,任意の点がその領域内に入っているかどうかを調べる


id:hitode909 が三角形ではなく円でやった例題を参考にして書いたのですぐに書くことが出来た。

オブジェクト指向で何かを書き上げたのは初めてだけど、思ったよりも簡単だと思った。


今までは「classとか意味はわかるんだけど、どうやって書けば良いの?最初っからこんなにいろいろと機能を詰め込んで書き始めるとか無理だろ」と思っていたのだが、id:hitode909 がやりたいことが出てきてから必要なメソッドをクラスに実装するみたいな感じで書いていくのを見て、ようやく理解できた。

今回のように書く手順を解説しながら示すのは非常にわかりやすくて、素晴らしかった。プログラムを書く過程を動画で見れるようなエディタとかが欲しいと思った。


今後サークル活動に置いて、素人が素人にrubyとかオブジェクト指向を教えなければならなくなるので、教え方を系統だってまとめておく必要があると思った。

NollieNollie2011/06/07 01:07I'm not easily impressed. . . but that's imrepssing me! :)

lqfmbbfbknlqfmbbfbkn2011/06/08 17:38GXYg45 , [url=http://vajnsqkezprn.com/]vajnsqkezprn[/url], [link=http://okilvkprsgiz.com/]okilvkprsgiz[/link], http://lvhdgwjuczzn.com/

wywdnipwywdnip2011/06/10 22:37Yk0NAC , [url=http://qkaldrietnjx.com/]qkaldrietnjx[/url], [link=http://ehlukeujqkdv.com/]ehlukeujqkdv[/link], http://ysuebuvkcnso.com/

2008-10-13

オセロのコマをベクトルで判定する方法メモ

18:10

メモ

オセロを打った座標が(1,4)だったときに、打った色と異なる色の周囲のオセロの座標が(2,5)だったとすると、

(2,5)-(1,4)=(1,1)

のために(1,1)の方向に調べていけば良い

原点は座標左上で考える


つまり、配列[x,y]にx,yにそれぞれに1を足していくようにする

配列とベクトルの書き方は似ているけれども、計算式は異なるので注意

オセロ少し進んだ

| 17:51

打ったマスの周囲にあるオセロの色を判定するメソッドを動くように直した。

周囲の色で異なる色があったらenemyに配列として格納して返す。

# -*- coding: utf-8 -*-
require 'pp'

#boxの指定された座標の内容を返す
# box: 盤面のArray
# point: 座標([x, y], x:0~7, y:0~7)
def analysis(box, point)
  x, y = point[0], point[1]
  if x >= 0 and x <= 7 and
      y >= 0 and y <= 7
    box[x][y]
  else
    raise "範囲外のpointです"
  end
end

#指定された座標を入れ替える
def blackchange(box, point)
  x, y = point[0], point[1]
  if x >= 0 and x <= 7 and
      y >= 0 and y <= 7
    box[x][y]= "|●"
    box
  else
    raise "範囲外のpointです"
  end
end

def whitechange(box, point)
  x, y = point[0], point[1]
  if x >= 0 and x <= 7 and
      y >= 0 and y <= 7
    box[x][y]= "|○"
    box
  else
    raise "範囲外のpointです"
  end
end





#指定したマスの周りに何かがあるかどうかを判定する
enemy=[]
def somethingsearch(box, point, target)
  enemy=[]
  x,y = point[0],point[1]
  j=0,k=0
  for j in -1..1
    for k in -1..1
      if analysis(box,[x+j,y+k])== target
        enemy << [x+j,y+k]
      end
    end
  end
  enemy
end

def whitesearch(box, point)
  somethingsearch(box, point, "|○")
end

def blacksearch(box, point)
  somethingsearch(box, point, "|●")
end

colorcount=0
box = []
#配列でマス目を定義
9.times{|i|
  box << []
}

box.map do |line|
  9.times do
    line << "| "
  end
end

#盤面の初期値を設定
blackchange(box,[3,3])
blackchange(box,[4,4])
whitechange(box,[3,4])
whitechange(box,[4,3])

loop{

  print("  a b c d e f g h\n")
  print(" ┌─┬─┬─┬─┬─┬─┬─┬─┐\n")

  8.times{|n|
    print n+1
    9.times{|i|
      print box[n][i]
    }
    print "\n"
    
    if n==7
      break
    end
    
    print(" ├─┼─┼─┼─┼─┼─┼─┼─┤\n")
  }

  print(" └─┴─┴─┴─┴─┴─┴─┴─┘\n")

  puts "オセロを置きたい場所を入力してください(例:3 d)"
  choice=gets.chomp
  input=choice.split(" ")

  x=input[0].to_i-1
  y=input[1][0]-"a"[0]
  
  if analysis(box, [x, y]) == "| "

    if colorcount%2==0 
      box[x][y]="|○"
      enemy=blacksearch(box, [x,y])   # 周りの黒を探す
      p enemy

    elsif colorcount%2==1
      box[x][y]="|●"
      enemy=whitesearch(box,[x,y])
      p enemy
    else
      raise "カウンターが数値ではありません"
    end
    colorcount+=1
  else
    puts "そこには打てません"
  end


}
  a b c d e f g h
 ┌─┬─┬─┬─┬─┬─┬─┬─┐
1| | | | | | | | | 
 ├─┼─┼─┼─┼─┼─┼─┼─┤
2| | | | | | | | | 
 ├─┼─┼─┼─┼─┼─┼─┼─┤
3| | | | | | | | | 
 ├─┼─┼─┼─┼─┼─┼─┼─┤
4| | | |●|○| | | | 
 ├─┼─┼─┼─┼─┼─┼─┼─┤
5| | | |○|●| | | | 
 ├─┼─┼─┼─┼─┼─┼─┼─┤
6| | | | | | | | | 
 ├─┼─┼─┼─┼─┼─┼─┼─┤
7| | | | | | | | | 
 ├─┼─┼─┼─┼─┼─┼─┼─┤
8| | | | | | | | | 
 └─┴─┴─┴─┴─┴─┴─┴─┘
オセロを置きたい場所を入力してください(例:3 d)
3 e
[[3, 3]]
  a b c d e f g h
 ┌─┬─┬─┬─┬─┬─┬─┬─┐
1| | | | | | | | | 
 ├─┼─┼─┼─┼─┼─┼─┼─┤
2| | | | | | | | | 
 ├─┼─┼─┼─┼─┼─┼─┼─┤
3| | | | |○| | | | 
 ├─┼─┼─┼─┼─┼─┼─┼─┤
4| | | |●|○| | | | 
 ├─┼─┼─┼─┼─┼─┼─┼─┤
5| | | |○|●| | | | 
 ├─┼─┼─┼─┼─┼─┼─┼─┤
6| | | | | | | | | 
 ├─┼─┼─┼─┼─┼─┼─┼─┤
7| | | | | | | | | 
 ├─┼─┼─┼─┼─┼─┼─┼─┤
8| | | | | | | | | 
 └─┴─┴─┴─┴─┴─┴─┴─┘
オセロを置きたい場所を入力してください(例:3 d)
3 d
[[2, 4], [3, 4]]
  a b c d e f g h
 ┌─┬─┬─┬─┬─┬─┬─┬─┐
1| | | | | | | | | 
 ├─┼─┼─┼─┼─┼─┼─┼─┤
2| | | | | | | | | 
 ├─┼─┼─┼─┼─┼─┼─┼─┤
3| | | |●|○| | | | 
 ├─┼─┼─┼─┼─┼─┼─┼─┤
4| | | |●|○| | | | 
 ├─┼─┼─┼─┼─┼─┼─┼─┤
5| | | |○|●| | | | 
 ├─┼─┼─┼─┼─┼─┼─┼─┤
6| | | | | | | | | 
 ├─┼─┼─┼─┼─┼─┼─┼─┤
7| | | | | | | | | 
 ├─┼─┼─┼─┼─┼─┼─┼─┤
8| | | | | | | | | 
 └─┴─┴─┴─┴─┴─┴─┴─┘
オセロを置きたい場所を入力してください(例:3 d)

terminal上の文字をブログに引用する方法がよくわからなかったので汚くなっている。enemyにはいった配列と自分がオセロを打つように指定した配列をベクトルで考えて、その先にあるものが空白か壁だったらそのまま、同じ色だったら裏返すような感じにしたかいけれども、書いていてよくわからなくなったのでもう少し頭を整理する。

2008-10-10

rubyでオセロ

00:12

# -*- coding: utf-8 -*-
require 'pp'

#boxの指定された座標の内容を返す
# box: 盤面のArray
# point: 座標([x, y], x:0~7, y:0~7)
def analysis(box, point)
  x, y = point[0], point[1]
  if x >= 0 and x <= 7 and
      y >= 0 and y <= 7
    box[x][y]
  else
    raise "範囲外のpointです"
  end
end

#指定された座標を入れ替える
def blackchange(box, point)
  x, y = point[0], point[1]
  if x >= 0 and x <= 7 and
      y >= 0 and y <= 7
    box[x][y]= "|●"
    box
  else
    raise "範囲外のpointです"
  end
end

def whitechange(box, point)
  x, y = point[0], point[1]
  if x >= 0 and x <= 7 and
      y >= 0 and y <= 7
    box[x][y]= "|○"
    box
  else
    raise "範囲外のpointです"
  end
end

=begin
#指定したマスの周りに何かがあるかどうかを判定する
j=0,k=0
def somethingsearch(box, point, target)
x,y = point[0],point[1]
  for j in -1..1
    for k in -1..1
      if analysis(box,[x+j,y+k])== target
        return 1
      end
    end
  end
  return 0
end
def whitesearch(box, point)
  somethingsearch(box, point, "|○")
end
=end


#指定したマスの周りに黒があるかどうかを判定する
j=0,k=0
def blacksearch(box, point)
x,y = point[0],point[1]
  for j in -1..1
    for k in -1..1
      if analysis(box,[x+j,y+k])=="|●"
        return 1
      end
    end
  end
  return 0
end

#上の白を探す方
def whitesearch(box, point)
x,y = point[0],point[1]
  for j in -1..1
    for k in -1..1
      if analysis(box,[x+j,y+k])=="|○"
        return 1
      end
    end
  end
  return 0
end

colorcount=0
box = []
#配列でマス目を定義
9.times{|i|
  box << []
}

box.map do |line|
  9.times do
    line << "| "
  end
end

#盤面の初期値を設定
blackchange(box,[3,3])
blackchange(box,[4,4])
whitechange(box,[3,4])
whitechange(box,[4,3])

loop{

  print("  a b c d e f g h\n")
  print(" ┌─┬─┬─┬─┬─┬─┬─┬─┐\n")

  8.times{|n|
    print n+1
    9.times{|i|
      print box[n][i]
    }
    print "\n"
    
    if n==7
      break
    end
    
    print(" ├─┼─┼─┼─┼─┼─┼─┼─┤\n")
  }

  print(" └─┴─┴─┴─┴─┴─┴─┴─┘\n")

  puts "オセロを置きたい場所を入力してください(例:3 d)"
  choice=gets.chomp
  input=choice.split(" ")

  x=input[0].to_i-1
  y=input[1][0]-"a"[0]
  
  if analysis(box, [x, y]) == "| "

    if colorcount%2==0 

      if blacksearch(box,[x,y])==1
        box[input[0].to_i-1][input[1][0]-"a"[0]]="|○"
      elsif blacksearch(box,[x,y])==0
        break
      end

    elsif colorcount%2==1
      
      if whitesearch(box,[x,y])==1
        box[input[0].to_i-1][input[1][0]-"a"[0]]="|●"
      elsif whitesearch(box,[x,y])
        break
      end

    else
      raise "カウンターが数値ではありません"
    end
    colorcount+=1
  else
    puts "そこには打てません"
  end


}

とりあえず白黒交互に打てるようにした。

一度置いたところにはおけないようにもした。


きちんと裏返るところ以外は打てないようにしようと思って、打つときに周囲一マスに異なる色がないと打てないようにしたのだけれども、それでは裏返るとか関係なく打ててしまうので失敗だった。

結局裏返すことを先に考えないと駄目だと思った。


裏返すためには周囲一マス以内に異なる色のオセロがあった場合にその方向を調べていって、同じ色のオセロがあれば調べたオセロ全てその色にすればいいのかなーとかぼんやりと考えた。


たのしいrubyを半分読んだだけでは厳しいので、せめてArrayクラスのところまでは読んで配列の知識を仕入れないといけないなと思った。