標籤雲
2010年1月17日 星期日
2009年7月16日 星期四
文字定位控制練習
Public Class Form1
Dim i
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim s = ""
Dim a = "明天會更好"
For i = 1 To 5
'左下至右上()
s = vbNewLine & Space(i * 3) & Mid(a, i, 1) & s
Next
For i = 1 To 5
'左上至右下()
s = s & vbNewLine & Space(i * 3) & Mid(a, i, 1)
Next
For i = 1 To 5
'右上至左下
s = s & vbNewLine & Space((6 - i) * 3) & Mid(a, i, 1)
Next
For i = 1 To 5
'右下至左上
s = vbNewLine & Space((6 - i) * 3) & Mid(a, i, 1) & s
Next
MsgBox(s)
End Sub
End Class
2009年7月6日 星期一
系統工程從複雜問題的總體入手
系統工程的目的是解決總體優化問題,從複雜問題的總體入手,認為總體大於各部分之和,各部分雖較劣但總體可以優化。有的問題,如電話網路,不能只研究個別電話的質量問題,必須從總體網路入手,這種思路是和笛卡兒的方法論相左的。
ref: http://zh.wikipedia.org/w/index.php?title=%E7%B3%BB%E7%BB%9F%E5%B7%A5%E7%A8%8B&variant=zh-tw
研究問題的方法分四個步驟
笛卡兒在方法論中指出,研究問題的方法分四個步驟:
- 永遠不接受任何我自己不清楚的真理,就是說要盡量避免魯莽和偏見,只能是根據自己的判斷非常清楚和確定,沒有任何值得懷疑的地方的真理。就是說只要沒有經過自己切身體會的問題,不管有什麼權威的結論,都可以懷疑。這就是著名的「懷疑一切」理論。例如亞里士多德曾下結論說,女人比男人少兩顆牙齒。但事實並非如此。
- 可以將要研究的複雜問題,盡量分解為多個比較簡單的小問題,一個一個地分開解決。
- 將這些小問題從簡單到複雜排列,先從容易解決的問題著手。
- 將所有問題解決後,再綜合起來檢驗,看是否完全,是否將問題徹底解決了
Ref : http://zh.wikipedia.org/w/index.php?title=%E6%96%B9%E6%B3%95%E8%AB%96&variant=zh-tw
2009年6月25日 星期四
97技藝競賽第8題 -- VB2008版
Public Class Form1
Dim r1Str = ""
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim fileContents As String
fileContents = My.Computer.FileSystem.ReadAllText(Application.StartupPath & "\Test8.txt")
Dim recArray() = Split(fileContents, vbNewLine)
For k = 0 To recArray.Length - 1
proc_one_rec(recArray, k)
Next
'MsgBox(r1Str)
My.Computer.FileSystem.WriteAllText(Application.StartupPath & "\result8.txt", r1Str, False)
End
End Sub
Sub proc_one_rec(ByVal recArray, ByVal k)
Dim s = recArray(k)
Dim n = Math.Ceiling(s.length ^ 0.5)
Dim a(n + 1, n + 1) As String
For i = 0 To n + 1
For j = 0 To n + 1
If i = 0 Or i = n + 1 Or j = 0 Or j = n + 1 Then
a(i, j) = "X"
Else
a(i, j) = "#"
End If
Next
Next
Dim sindex = 1
Dim x = 1
Dim y = 1
Dim dx = 1
Dim dy = 0
Dim dirN = 0
Dim prex = x
Dim prey = y
While sindex <= s.length
'非空位處理,退回原位置,轉向,前進至下一位置
If a(x, y) <> "#" Then
x = prex
y = prey
dirN = dirN + 1
dirN = dirN Mod 4
If dirN = 0 Then
dx = 1
dy = 0
End If
If dirN = 1 Then
dx = 0
dy = 1
End If
If dirN = 2 Then
dx = -1
dy = 0
End If
If dirN = 3 Then
dx = 0
dy = -1
End If
x = x + dx
y = y + dy
End If
a(x, y) = Mid(s, sindex, 1)
'保留上次位置
prex = x
prey = y
'取得下次位置,下一個字元
x = x + dx
y = y + dy
sindex = sindex + 1
End While
'一次結果
Dim rStr = ""
For y = 1 To n
For x = 1 To n
rStr = rStr + a(x, y)
Next
rStr = rStr & vbNewLine
Next
rStr = Replace(rStr, "#", " ")
r1Str = r1Str & rStr & vbNewLine
End Sub
End Class
