• 12

[有趣]越簡單的程式, 越多人不會寫??

關於星星塔的那題啊
以下是我用vb.net寫出來
需要元件:button*1 textbox*1
我是對字串作處理來達成條件的

Dim n, i As Int32
Dim star As String
star = ""
n = TextBox2.Text
For i = 1 To 2 * n - 1
If i <= n Then
star &= "*"
Else
star = star.Remove(0, 1)
End If
TextBox1.Text &= star & vbNewLine
Next
剛好看到這個這個所謂 Microsoft/Google 面試會問的很有名的問題,想到了這篇討論...
順便分享給大家看看
"This is well-known as one of the so called Microsoft/Google interview questions"

簡單說,題目是要你以一個 rand5() 寫出一個 rand7(),而 rand5() 可產生一個 1~5 的亂數整數。很多人的答案都有機慮上不平均的問題。雖然我想了一個答案 (若有錯請指教),但我承認我要真被考到了,在那種壓力下恐怕一時想不出一個解。
Si_NZ wrote:
題目是要你以一個 rand5() 寫出一個 rand7(),而 rand5() 可產生一個 1~5 的亂數整數。很多人的答案都有機慮上不平均的問題。雖然我想了一個答案 (若有錯請指教),但我承認我要真被考到了,在那種壓力下恐怕一時想不出一個解。

最小公倍數
七個 rand5 相加. 就可以將所有數分成七個區段.這樣可以嗎?
superhbin wrote:
最小公倍數七個 ra...(恕刪)

請問能分出七個區段的意思是 (rand5()+rand5()+rand5()+rand5()+rand5()+rand5()+rand5())/7 嗎?我想我應該誤解你的意思了?那樣出來的結果還是 1~5...
Si_NZ wrote:
請問能分出七個區段的意思是 (rand5()+rand5()+rand5()+rand5()+rand5()+rand5()+rand5())/7 嗎?我想我應該誤解你的意思了?那樣出來的結果還是 1~5...

本來是想 /5 .. 我再想想這樣每個數的機率有沒有一樣~
改成 5 個 rand5 相加
變成 5~25

5,6,7 -> 1
8,9,10 -> 2
11,12,13 -> 3
14,15,16 -> 4
17,18,19 -> 5
20,21,22 -> 6
23,24,25 -> 7

這題目還真難~~
char *output;

for(int i=1;i<100;i++){
output = i%5==0&&i%3==0 ? "FzzBuzz" : (i%3 ? (i%5 ? "null" : "Buzz") : "Fizz");
printf("%d : %s\n",i,output);
}

^^呵 滿好玩的 來挑戰看看^^
星號問題
讓我想起來去年看到的題目
*
***
******
***
*

限用FOR迴圈(兩個) 不准使用函數
當時想了好久才想出來
((我只是個高職生..))
有個小程式也很有趣耶,就是河內塔,就是有3個支架,第一個支架有大中小3個圈圈從下到上疊在一起,要把這3個圈圈搬到第3個支架,條件是一次只能班一個圈圈,而且大的圈圈不能疊在小的圈圈上面,程式只要寫出移動的解法,不用畫出東西,會寫的話程式非常短的,不知道有沒有人寫的出來。
bluesystem wrote:
讓我想到前兩天在跟以...(恕刪)


如果是資工相關畢業的第一題不會實在不應該...
第二題單一迴圈不用遞迴一樣可以解
其實就是把迴圈打平去算換行符號的位置即可

int n=5;
int cn=1; //counter
int break_point = 0;
for(int i=0 ; i<n*n ; i++ )
{
if( i == break_point )
{
printf("\n");

if( cn <= n )
break_point = break_point + cn;
else
break_point = break_point + 2*n - cn;

cn++;
}

printf("*");

}
1, 獲得一個亂數 array, 找出中間數值
例 > {1,3,5,7,9,2,4,6,8} 答案會是5
oh, sorting 不會是最佳解!


size = 9, 所以中間數就是幹掉四個最大數後,剩下最大那個
1,3,5,7,9 => 留著
2<9 => 幹掉9 => 剩 1,2,3,5,7
4<7 => 幹掉7 => 剩 1,2,3,4,5
6>5 => 不留
8>5 => 不留
答案 => 5


2, 同樣是亂數 array, 不過裡面的數值都是成對的, 除了特別的一個. 找出特別那個
例 > {1,2,3,4,5,6,7,8,9,1,2,3,4,5,6,8,9} 答案會是 7
出來的 algorithm 會是 O很遜


xor binary 運算, 成對的結果都會是 0, result = 0
result = 1^2^3^4^5^6^7^8^9^1^2^3^4^5^6^8^9 = 7


3, 找出字串中最長的重複字
例 > "yzabcdefghijhlabcdefiuabc" 答案會是 "abcdef"


repeat_max = 0
string_max = ""
yzabcdefghij 當比較基礎(因為後面是h , 有在前面出現過)
h => repeat = 1
l => 斷了 => repeat_max=1, string_max = "h"
a => repeat = 1
b => repeat = 2
c => repeat = 3
d => repeat = 4
e => repeat = 5
f => repeat = 6
i => 斷了 => repeat = 1, repeat_max=6, string_max = "abcdef"
u => 斷了
a => 斷了 => repeat = 1
b => repeat = 2
c => repeat = 3
沒了 => repeat < repeat_max => 答案是 string_max = "abcdef"

  • 12
內文搜尋
X
評分
評分
複製連結
請輸入您要前往的頁數(1 ~ 12)
Mobile01提醒您
您目前瀏覽的是行動版網頁
是否切換到電腦版網頁呢?