堅持與固執
轉貼自 http://www.ithome.com.tw/itadm/article.php?c=51601
沒有人是毅力驚人的鐵漢,在面對堅持這件事的時候,難免有些彈性,有點妥協,再加上一點點惰性。心胸要能放得開,有些時候退一步讓人與人之間的介面軟化,讓事情可以順利進行,才不會為了堅持卻反而變成了固執。 |
小伙子,你知道什麼是堅持,什麼是固執嗎?」一個業界的前輩突然問我。我常常被別人說是很固執,沒有人說我堅持,其實我也沒想過這兩者的差別,感覺上成功的人都會說自己有堅持,失敗的人都會被別人說他很固執。不過我做了一個比較頑皮的回答:「老人家看小朋友做事情,都會認為是固執;但是小朋友會自己覺得是堅持。」 畢竟,只要不聽我們勸告的人,通常就會被冠上固執的帽子。老一輩的人常常講堅持:堅持與客戶之間的關係,堅持品質,堅持良好信用……前輩說,事情沒有那麼複雜,他認為「堅持的人知道自己在做什麼,固執的人則是情緒在左右他做什麼」。 要能聽人家的勸告,並且把其中的道理納入到自己的決策,這件事情並不容易。身為工程師,先天就存在著相當強烈的固執成分,因為我們習慣跟電腦溝通,不習慣跟人溝通;習慣明確的邏輯,不習慣人跟人之間複雜的關係。但是事業經營說穿了就是人,不管是領導者還是小工程師,難免都會有一種「想要自己卯起來幹」的衝動,但是做法上只要參入了情緒的成分,就算是固執了。 情緒的產生,有很多原因,我們沒辦法要求所有人在溝通的過程中保持客觀冷靜,導致溝通之後,可能大家仍是各做各的沒有交集。 我們都會說自己知道自己在做什麼,但是在別人看來,我們是有點難以控制或者不好溝通的。如果結果是正面的,能得到的嘉獎不多,通常成果也不會被上級所接受。反之,如果是負面的,那就更不用說了。可是我們明明知道自己在做什麼,為什麼不被人接受,而且還會被說是固執呢? 我想問題是出在於我們對「知道自己在做什麼」的定義不同所導致。每個人在組織裡面,都有被賦予的職責,站在這個職責上做應該做的事情,是第一要務。按照這個方式來推論,就會演變成公司裡面的人害怕擔責任,所以事情都推來推去,不然就是前人說怎麼做就怎麼做,都不會去創新,這樣公司怎麼辦?彼得杜拉克說,只要有事情是任何人都做不好的,那這件任務或者執掌就必須要被重新定義。在自己分內仍然有相當多的創意可以發揮,如果我們真的以為被限制在職責這個框架裡面,接下來的所做所為就難免變成固執了。 「所以說,固執的人,眼睛只會直直看著前面;堅持的人,心在看前面,仍然可以眼觀四面。」一個學長這樣子評論底下的工程師。 當我們越做越窄的時候,當我們發現可以選擇的方案越來越少,或者所有事情都只有單一方向與必然結果的時候,我們就犯了固執的毛病。固執並沒有不好,凡是成功的人必然固執,差異應該在於格局的大小,還有重點的定義,當我們顧全大局,集中力量堅持於重點的時候,才有可能把原本狹隘的固執轉換為成就事業的堅持。 什麼是大局?從公司的角度來看,就是拿到訂單。我聽說有些公司為了做好手機,派了一組人將目標市場走透透,到處去測試訊號的靈敏度,這種接近變態的固執,算是堅持。也有知名的企業,雖然有機會上門,但是這個機會的風險太大,遠超過公司所能負荷,基於堅持原則而放棄,結果倖免於在金融風暴中被拖垮的命運。當然我們也常常聽說,為了要滿足客戶的需求,廠商想破腦袋改善製程,提升技術,甚至服務到家的種種變態的固執,這些都是堅持。 可是如果我們把格局縮小,只看到利益而沒有注意到風險,演變成不聽旁人的規勸,只想固執小利,結果反而深受其害。 任何企業的資源都有限,想要在競爭中脫穎而出,就需要將資源放在重點上。但是大多數的企業都面臨同樣的困擾:機會太多,興趣廣泛,所以力量難以集中。要將事情做得好,並不一定只能把資源釘死在幾個重點上,重要的是「段落」的處理。每件事情做到一個完整的段落,再轉移進行另外一件事情,就可以用有限的資源照顧到大多數的重點。所以,重點定義的多寡並不會影響企業的發展,主要的問題在於資源的「投入」與「轉移」動作是否收乾淨,這裡面就需要堅持,把案子收尾收好才能轉移。缺乏堅持,即使重點定義正確,但收尾沒收好,就等於同時追好幾隻兔子,最後抓不到半隻。 看的遠的人,往往被別人所誤解,所以被別人講是固執不見得是壞事,被別人誤解也不見得不會成功。心裡面必須放得開,想清楚自己目前執意走這條路有沒有意義?有沒有賭氣?是否急著想要得到什麼利益?有沒有先把自己分內該做的事情做好? 堅持的代價常常都會是寂寞與痛苦,但是如果立意良善,而且對大家都有好處的話,結果仍會是雙贏互惠的。 我們都不是毅力驚人的鐵漢,在面對堅持這件事的時候,難免有些彈性,有點妥協,再加上一點點惰性。心胸要能放得開,有些時候退一步讓人與人之間的介面軟化,讓事情可以順利進行,才不會為了堅持卻反而變成了固執。 作者簡介: 吳俊瑩-iThome電腦報技術主筆 交大電子工程系、臺大電機研究所、政大科技班畢業,身兼IT/電子技術顧問和某小型電子公司研發處長。 |
93技藝競賽Q3-聯立方程式
Public Class Form1 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 & "\Test3.txt") Dim d() = Split(fileContents, ",") Dim a1 = Val(d(0)), b1 = Val(d(1)), c1 = Val(d(2)), a2 = Val(d(3)), b2 = Val(d(4)), c2 = Val(d(5)) 'a1*X + b1*Y + c1 = 0 'a2*X + b2*Y + c2 = 0 Dim n = a2 / a1 a1 = a1 * n b1 = b1 * n c1 = c1 * n a1 = a1 - a2 b1 = b1 - b2 c1 = c1 - c2 Dim k = -1 * c1 Dim y = k / b1 b2 = b2 * y n = (b2 + c2) * -1 Dim x = n / a2 Dim STR1 = "X = " & x & ", Y = " & y My.Computer.FileSystem.WriteAllText(Application.StartupPath & "\result3.txt", STR1, False) End End Sub End Class
解得出數學題,成就感是不同的 !
誰叫我國中數學就開始學不好,
XX老師的問題??
學習筆記一下:
正負反轉的方式很多
例:
a1 = 3 a1 = a1 * -1 '將a1 = 3乘上 -1 就等於 -3 a1 = -3 a1 = 0 - a1 '用 0 減去 a1 = -3 就等於 3
二進位數相乘
Public Class Form1 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 & "\Test1.txt") Dim d() = Split(fileContents, " x ") Dim n1 = d(0), n2 = d(1) Dim Len = n1.Length * 2 Dim str1 = Space(Len) & n1 & vbNewLine & Space(Len) & n2 & vbNewLine & "--------------------" & vbNewLine For i As Integer = n1.Length To 1 Step -1 If Mid(n2, i, 1) = "0" Then str1 = str1 & Space(len) & StrDup(n1.Length, "0") & vbNewLine Else str1 = str1 & Space(len) & n1 & vbNewLine End If len = len - 1 Next Dim x = c10to2(c2to10(n1) * c2to10(n2)) str1 = str1 & "--------------------" & vbNewLine & Space(len) & x My.Computer.FileSystem.WriteAllText(Application.StartupPath & "\result1.txt", str1, False) End End Sub Function c2to10(ByVal x As String) Dim c = 0 Dim n = x.ToString For i As Integer = n.Length To 1 Step -1 If Mid(n, i, 1) = "1" Then c = c + (2 ^ (n.Length - i)) Next Return c End Function Function c10to2(ByVal y As String) Dim x = Val(y) Dim str1 = "" Do Until x = 1 Or x = 0 str1 = IIf(x Mod 2 = 0, "0" & str1, "1" & str1) x = x \ 2 Loop str1 = IIf(x = 0, "0" & str1, "1" & str1) Return str1 End Function End Class
上課半夜
Problem7:進位判斷(13%)
加法的運算是把 2 個整數靠右對齊,然後由右至左,一位一位相加。如果相加的結果大
於等於 10 就有進位(carry)發生。請寫個程式來判斷兩個正整數相加時,產生了幾次進位的
情況。
輸入說明:
第一行的數字,表示有幾組測試資料,第二行開始的每一行即為一筆測試資料。每一行
輸入的資料有兩個正整數,以一個空格分開,每個整數的長度均小於 100 位數。
輸出說明:
對每一筆測試資料,輸出相加後有幾次進位的次數。
輸入範例:
2
123 456
555 555
輸出範例:
0
3
Public Class Form1 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 & "\Test7.txt") Dim row() = Split(fileContents, vbNewLine) Dim str1 = "" For i As Integer = 1 To Val(row(0)) Dim d() = Split(row(i), " ") Dim a(100) Dim b(100) Dim at = d(0) Dim bt = d(1) Dim c = 0 For k As Integer = 0 To 100 a(k) = 0 b(k) = 0 Next For j As Integer = at.Length To 1 Step -1 a(j - 1) = Val(Mid(at, at.Length - j + 1, 1)) Next For j As Integer = bt.Length To 1 Step -1 b(j - 1) = Val(Mid(bt, bt.Length - j + 1, 1)) Next For j As Integer = 0 To 100 If a(j) + b(j) >= 10 Then a(j + 1) = a(j + 1) + 1 c = c + 1 End If Next str1 = str1 & c & vbNewLine Next My.Computer.FileSystem.WriteAllText(Application.StartupPath & "\result7.txt", str1, False) End End Sub End Class
Problem5:字串處理(10%)
Problem5:字串處理(10%)
給一個字串,請寫一個程式,計算此字串中,英文字元有幾個?輸入說明:輸入檔第一行表示有幾組測試資料,第二行開始的每一行即為一筆測試資料,每行最多有 1000 個字元。輸出說明:對每一筆測試資料,輸出字串中英文字元的個數。輸入範例:2abc123def456133adfag3428a2fwqgq2輸出範例:611
Public Class Form1 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 & "\Test5.txt") Dim row() = Split(fileContents, vbNewLine) Dim str1 = "" For i As Integer = 1 To Val(row(0)) If row(i) = "" Then Exit For Dim c = 0 Dim a = row(i) For j As Integer = 1 To a.Length If Asc(Mid(a, j, 1)) >= 97 And Asc(Mid(a, j, 1)) <= 122 Then c = c 1 ElseIf Asc(Mid(a, j, 1)) >= 65 And Asc(Mid(a, j, 1)) <= 90 Then c = c 1 End If Next str1 = str1 & c & vbNewLine Next My.Computer.FileSystem.WriteAllText(Application.StartupPath & "\result5.txt", str1, False) End End Sub End Class
題目沒說明字串裡的英文字大小寫,為了以防萬一,就多了一個判斷 大寫也算進去
話說半夜練習程式安靜許多
我都不想睡了
我都不想睡了
Problem6:判斷是否為 11 的倍數(14%)
給一個正整數 n,請寫一個程式,判斷 n 是否為 11 的倍數?
輸入說明:第一行的數字,表示有幾組測試資料,第二行開始即為第一筆測試資料。每筆測試資料為一個正整數,數字的位數,最高有可能到 1000 位。輸出說明:對每一筆測試資料,輸出是否為 11 的倍數。是的話請輸出 1,反之則輸出 0。輸入範例:224841983960121輸出範例:01
Public Class Form1 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 & "\Test6.txt") Dim row() = Split(fileContents, vbNewLine) Dim result = "" For j As Integer = 1 To Val(row(0)) Dim str = row(j) Dim a = 0 For i As Integer = 1 To str.Length If (i 1) Mod 2 = 0 Then a = a Val(Mid(str, i, 1)) Else a = a - Val(Mid(str, i, 1)) End If Next Dim str1 = "" If a = 0 Or a = 11 Then str1 = "1" '是11的倍數 Else str1 = "0" End If result = result & str1 & vbNewLine Next My.Computer.FileSystem.WriteAllText(Application.StartupPath & "\result6.txt", result, False) End End Sub End Class
這題考慮到的問題是 最高有可能到 1000 位
是個天大的數字阿
所以並不能方式直接判斷 數字 MOD 11 = 0
當然
要是這樣出題還需要考嗎
解決方法是
a = 奇數位數的數字相加
b = 偶數位數的數字相加
假若a - b = 0 或者 11 就是11的倍數
Problem2:數字分解(11%)
Problem2:數字分解(11%)
給一個偶數 n,請你將 n 分解成兩個質數的和,也就是說,這兩個質數相加的和必須等於 n。輸入說明:第一行的數字,表示有幾組測試資料,第二行開始即為第一筆測試資料,每筆測試資料為一個數字,數字的範圍為[4, 10000]間的偶數。輸出說明:對輸入的每筆測試資料,分別輸出 2 個質數,用一個空白做為區隔,請由小到大排列。輸入範例:212100輸出範例:5 73 97
Public Class Form1 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 & "\Test2.txt") Dim row() = Split(fileContents, vbNewLine) Dim str1 = "" For i As Integer = 0 To Val(row(0)) If row(i) = "" Then Exit For Dim k = Val(row(i)) For j As Integer = k - 1 To 1 Step -1 If f(k - j) = True And f(k - (k - j)) = True Then '條件:兩個都是質數 str1 = str1 & k - j & " " & k - (k - j) & vbNewLine Exit For End If Next Next My.Computer.FileSystem.WriteAllText(Application.StartupPath & "\result2.txt", str1, False) End End Sub Function f(ByVal n) '質數判斷 Dim c = 0 Dim a = False For i As Integer = 1 To n If n Mod i = 0 Then c = c 1 Next If c = 2 Then a = True Return a End Function End Class
Problem1:數字刪除(12%)
Problem1:數字刪除(12%)
給 n 個數字,請你在這 n 個數字中,找出所有重覆出現的數字,並把它刪除。最後計算刪除後剩餘的數字個數。輸入說明:第一行的數字,表示有幾組測試資料,第二行開始即為第一筆測試資料,每行不會超過100 個數字,每個數字之間用一個空白做為區隔,數字的範圍為[0, 10000]間的整數。輸出說明:對輸入的每筆測試資料,分別輸出刪除完後剩下的數字個數。輸入範例:21 2 3 4 5 6 7 8 9 2 12 4 6 8 10輸出範例:75
Public Class Form1 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 & "\Test1.txt") Dim row() = Split(fileContents, vbNewLine) Dim str1 = "" For i As Integer = 1 To Val(row(0)) Dim aList = New ArrayList If row(i) = "" Then Exit For Dim d() = Split(row(i), " ") For j As Integer = 0 To d.Length - 1 If alist.Contains(d(j)) = False Then '若不存在則加入 alist.Add(d(j)) Else '否則從aList中刪除 aList.Remove(d(j)) End If Next str1 = str1 & alist.Count & vbNewLine Next My.Computer.FileSystem.WriteAllText(Application.StartupPath & "\result1.txt", str1, False) End End Sub End Class