2014年2月9日 星期日

[邏輯] 毒瓶子問題

10個藥瓶,9個正常,1個毒藥

正常藥瓶 : 11公克
毒藥瓶 : 13 公克

用電子天平 (可秤重) 量一次 就可得出哪瓶是毒藥 ?


提示 : 1 2 3 4 5 6 7 8 9 10 = 55

[邏輯] 1. 取水問題

Q
假設有一個池塘,裏面有無窮多的水。現有2個空水壺,容積分別為5升和6升。問題是如何只用這2個水壺從池塘裏取得3升的水。

A
    1、先把5升的灌滿,倒在6升裏,這時6升的壺裏有5升水
    2.再把5升的灌滿,用5升的壺把6升的灌滿,這時5升的壺裏剩4升水
    3.把6升的水倒掉,再把5升壺裏剩余的水倒入6升的壺裏,這時6升的壺裏有4升水
    4.把5升壺灌滿,倒入6升的壺,5-2=3

[邏輯] 9顆球 秤重

來源

Question:
有九顆看起來一模一樣的球
但是有一顆不一樣重,不知道它是比較輕還比較重
用天秤最少要量幾次可以"確保"找出這顆球?





Answer:
3次。

將9顆球分成A,B,C共3堆,每堆3顆球
A.ooo    B.ooo   C.ooo

                                                                 
[第1次]
拿A,B堆共6顆球分別放在天秤兩端
(i)假設不一樣重,就能知道想找的球在A,B其中之一
(ii)假設一樣重,就知道不一樣重的球是剩下沒秤的3顆其中之一


[第2次]
換掉輕的3顆(假設B較A輕),拿另外C堆的3顆上來量
假設天秤平衡了,就能知道不一樣重的球較輕
是剛剛被換掉的B堆3顆其中之一                                              

                                                                                 
[第3次]  
拿B堆3顆的其中2顆來量
如果平衡了,那麼要找的就是剩下的第3顆較輕的球

2014年2月8日 星期六

[邏輯] 智力測驗 - 秤重問題8~12

來源 : http://emn178.pixnet.net/blog/post/95966964

題目

有8顆球,其中7個重量一樣,只有1個較輕,用一個天平,試以最少測量次數來找出有問題的那一個球。

提示

最少為兩次可找出。


解答

將球編號並分堆如下:

A = [1, 2, 3]

B = [4, 5, 6]

C = [7, 8]

如果A=B,則C有問題。
如果7>8,則8有問題。
如果7<8,則7有問題。

如果A>B,則B有問題。
如果4=5,則6有問題。
如果4>5,則5有問題。
如果4<5,則4有問題。

如果A<B,則A有問題。
如果1=2,則3有問題。
如果1>2,則2有問題。
如果1<2,則1有問題。



[邏輯] 智力測驗

Q
12顆球中有一顆球不一樣重用一個沒有數字的天坪在三次內找出那顆球



解答參考網址

將球編號並分堆如下:

A = [1, 2, 3, 4]

B = [5, 6, 7, 8]

C = [9, 10, 11]

D = [12]

如果A=B,則C或12有問題。
如果[1, 2, 3]=C,則12有問題。
如果1>12,則12較輕。
如果1<12,則12較重。

如果[1, 2, 3]>C,則C有問題且較輕。
如果9=10,則11較輕。
如果9>10,則10較輕。
如果9<10,則9較輕。

如果[1, 2, 3]<C,則C有問題且較重。
如果9=10,則11較重。
如果9>10,則9較重。
如果9<10,則10較重。

如果A>B,則A或B有問題,且A較重或B較輕。
如果[1, 2, 5]=[3, 4, 6],則7或8有問題,且較輕。
如果7>8,則8較輕。
如果7<8,則7較輕。

如果[1, 2, 5]>[3, 4, 6],則1、2或6有問題,且1或2較重或6較輕。(可能是左邊重或右邊輕,找出左邊屬於A的球或右邊屬於B的球)
如果1=2,則6較輕。
如果1>2,則1較重。
如果1<2,則2較重。

如果[1, 2, 5]<[3, 4, 6],則3、4或5有問題,且3或4較重或5較輕。
如果3=4,則5較輕。
如果3>4,則3較重。
如果3<4,則4較重。

如果A<B,則有問題的球在A或B。
如果[1, 2, 5]=[3, 4, 6],則7或8有問題,且較重。
如果7>8,則7較重。
如果7<8,則8較重。

如果[1, 2, 5]>[3, 4, 6],則3、4或5有問題,且3或4較輕或5較重。
如果3=4,則5較重。
如果3>4,則4較輕。
如果3<4,則3較輕。

如果[1, 2, 5]<[3, 4, 6],則1、2或6有問題,且1或2較輕或6較重。
如果1=2,則6較重。
如果1>2,則2較輕。
如果1<2,則1較輕。

[其他] 網站備份 HTTrack



官網 :  http://www.httrack.com/

說明文件 來源 : 網路收集

網站有需要離線觀看使用。

很棒!!

[C#] 範例 : 洗牌 : 52張牌 (主控台)

練習了一下 簡單的52張牌 洗牌
想法 :
1. 先創造一個容器(裝52張牌)
2. 利用Random 亂數出數字(要少於52)
3. 利用迴圈尋覽每一張牌。
4. 將產生的亂數與當前的 i 值數字對調,來達到隨機換牌的效果

原來這也有參考 : http://openhome.cc/Gossip/AlgorithmGossip/ShuffleCard.htm




  1.  class Program
  2.     {
  3.         static void Main(string[] args)
  4.         {
  5.             Cards card = new Cards();
  6.             //洗牌
  7.             card.shuffle();
  8.             //顯示牌
  9.             card.showcard();
  10.         }
  11.     }
  12.     public class Cards
  13.     {
  14.         public List<int> pack { get; set; }
  15.         public Cards(){
  16.             pack = new List<int>(52);
  17.             for (int i = 1; i <= 52; i++)
  18.             {
  19.                 pack.Add(i);
  20.             }
  21.            
  22.         }
  23.  //顯示牌
  24.         public void showcard(){
  25.             int temp = 1;
  26.             foreach (var item in this.pack)
  27.                 {
  28.                 Console.Write(item.ToString() + " ");
  29.                 if (temp % 13 == 0)
  30.                 {
  31.                     Console.WriteLine();
  32.                 }
  33.                 temp++;
  34.                 }
  35.         }
  36.         //洗牌
  37.         public void shuffle()
  38.         {
  39.             Random rnd = new Random();
  40.             for (int i = 0; i < pack.Count; i++)
  41.             {
  42.                 int swap = rnd.Next(51) + 1;
  43.                 int temp = pack[i];
  44.                 pack[temp] = pack[swap];
  45.                 pack[swap] = temp;
  46.             }
  47.         }        
  48.     }