2014年5月17日土曜日

140517

Excelのシートにおいて、数式を含んでいるか調べる。


セル(1,1)からセル(100,100)までのシートの保護のかかっていない
セルについて、数式を含んでいるかを調べ、
数式を含んでいるセルは数式と表示する。

Sub 数式()
For i = 1 To 100
For j = 1 To 100
  If Cells(i, j).Locked = False Then
    If Cells(i, j).HasFormula Then
      Cells(i, j).Value = "数式"
    End If
  End If
Next
Next
End Sub

2014年5月11日日曜日

140511(2)

複数のファイルの名前を変更する方法


マクロを組む以外に単純な方法に今更ながら気づいたので記しておく。
①複数のファイルを選択。
②名前を変更。
すると、自動的に複数のファイルの名前が〇〇(1)、〇〇(2)、…に変更される。

きっかけ
同じものをダウンロードしたときや、複数のファイルを同じフォルダ内に保存するとき
に自動的に名前が付けられるのはなぜか不思議に思ったことから。

140511

証明もプログラムも簡潔な方がよい。

簡潔
=美しい+短い+わかりやすい
 質    量

わかりやすさを加えたのは、とりわけプログラミングにおいて、
「美しいまたは短い」からといっても「わかりやすい」とも限らないからだ。

2014年5月5日月曜日

140505

Ruby


140306でもArray#permutationを用いたが、また別の問題を解いてみよう。

1〜8を下のa〜hに「右にいくほど大きくなり、下にいくほど大きくなる」ように
書き込む方法は何通りあるか?

a,b,c,d
e,f,g
h

i = 0
(1..8).to_a.permutation do |a, b, c, d, e, f, g, h|
  if a<b and b<c and c<d and e<f and f<g and a<e and e<h and b<f and c<g then
    i += 1
    puts i
    puts "[#{a},#{b},#{c},#{d}],[#{e},#{f},#{g}],[#{h}]"
  end
end

これを実行すると、70通りであることがわかる。

ちなみに、(Frame-Robinson-Thrall による鉤公式を用いれば)
λ=(4,3,1)のとき、
dim Sλ = 8!/(6*4*3*1*4*2*1*1) = 70
となり、
#STab(λ) = dim Sλ = 70