PALMisLIFE 討論區

搜索
鹹魚爸魅力四射舞蹈教室
查看: 11836|回復: 57
打印 上一主題 下一主題

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

[複製鏈接]

1689

主題

0

好友

6436

積分

該用戶從未簽到

文章
11802
跳轉到指定樓層
1#
發表於 2007-10-5 12:11 |只看該作者 |倒序瀏覽
剛剛看到一個網頁:
http://www.codinghorror.com/blog/archives/000781.html

"FizzBuzz Questions"

Write a program that prints the numbers from 1 to 100. But for multiples of three print "Fizz" instead of the number and for the multiples of five print "Buzz". For numbers which are multiples of both three and five print "FizzBuzz".

Most good programmers should be able to write out on paper a program which does this in a under a couple of minutes. Want to know something scary? The majority of comp sci graduates can't. I’ve also seen self-proclaimed senior programmers take more than 10-15 minutes to write a solution.

講中文的話就是:

印出 1 到 100,但如果是 3 的倍數就印 Fizz,如果是 5 的倍數就印 Buzz,如果同時是 3 和 5 的倍數就印 FizzBuzz。

購簡單吧? 但據上面那篇文章的作者 200個programmer中有199個寫不出來, 或寫錯..

挑戰一下吧..(拜託別用google找答案)
分享淘帖0 分享分享0 收藏收藏0 頂0 踩0

164

主題

0

好友

2177

積分

該用戶從未簽到

文章
2274
2#
發表於 2007-10-5 12:21 |只看該作者

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

for (int i=1;i<=100;i++) {
     if ( (i %3) ==0 && (i %5) ==0) {
           out.println("FizzBuzz");
     }else if ((i %3) ==0 ){
           out.println("Fizz");
     }else if ((i %5) ==0 ){
           out.println("Buzz");
     }else{
           out.println(i);
     }
}
回復

使用道具 舉報

102

主題

4

好友

1404

積分

  • TA的每日心情
    擦汗
    2011-4-29 08:24
  • 簽到天數: 1 天

    連續簽到: 1 天

    [LV.1]初來乍到

    文章
    1676
    3#
    發表於 2007-10-5 13:35 |只看該作者

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

    int i;
    for(i=1;i<=100;i++)
      {
         printf("i= %d,",i);
         if((i%3)==0) printf("Fizz");
         if((i%5)==0) printf("Buzz");
         printf("\n");
    }
    回復

    使用道具 舉報

    185

    主題

    2

    好友

    4033

    積分

    來騎車吧

  • TA的每日心情
    慵懶
    2011-4-15 11:58
  • 簽到天數: 1 天

    連續簽到: 1 天

    [LV.1]初來乍到

    文章
    4610
    4#
    發表於 2007-10-5 13:43 |只看該作者

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

    VB Script:


    For i = 1 To 100
            If i Mod (3*5) = 0 Then
                    WScript.Echo i & " " & "FizzBuzz"
            Elseif i Mod 3 = 0 Then
                    WScript.Echo i & " " & "Fizz"
            Elseif i Mod 5 = 0 Then
                    WScript.Echo i & " " & "Buzz"
            Else
                    WScript.Echo i
            End If
    Next
    敗家不歸路, 愈走愈恐佈
    回復

    使用道具 舉報

    167

    主題

    0

    好友

    1338

    積分

  • TA的每日心情

    2011-4-8 02:23
  • 簽到天數: 3 天

    連續簽到: 0 天

    [LV.2]偶爾看看I

    文章
    1205
    5#
    發表於 2007-10-5 13:51 |只看該作者

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

    好吧,真的有人寫錯了。
    ...睡生夢死...
    回復

    使用道具 舉報

    110

    主題

    0

    好友

    1077

    積分

    該用戶從未簽到

    文章
    844
    6#
    發表於 2007-10-5 14:00 |只看該作者

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

    HANDLE  divid;
    int i ;
    int ThreadOn = TRUE;
    void main()
    {
    divid= CreateThread(NULL, 0, ShowNum, NULL, 0, NULL);
    print35= CreateThread(NULL, 0, print35, &i, 0, NULL);
    while ( WaitForSingleObject(divid, 0) == WAIT_TIMEOUT)
    {
    ThreadCount++;
    Sleep(100);
    }
    }

    int ShowNum()
    {
       for (i=0 ; i<=100; i++)
        printf(%d, i);
    }

    void print35 (int n)
    {
    while (ThreadOn)
    {
         if((n%3)==0) printf("Fizz");
         if((n%5)==0) printf("Buzz");
         if((n%15)==0) printf("FizzBuzz");
         if(n == 100)  ThreadOn= FALSE;
    }
    }

    [ 本文最後由 brad_cat 於 2007-10-5 14:02 編輯 ]
    回復

    使用道具 舉報

    3867

    主題

    126

    好友

    2626

    積分

  • TA的每日心情

    2011-4-12 00:15
  • 簽到天數: 3 天

    連續簽到: 2 天

    [LV.2]偶爾看看I

    文章
    35006
    7#
    發表於 2007-10-5 14:02 |只看該作者

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

    不難吧....

    其實有多種寫法,不過想想好像沒啥陷阱 @_@?

    PHP 版本

    1. for ($i=1; $i<=100; $i++)

    2. {

    3.     if (($i % 3 == 0) && ($i % 5 == 0)) {

    4.         echo "FizzBuzz";

    5.     } elseif ($i % 3 == 0) {

    6.         echo "Fizz";

    7.     }elseif ($i % 5 == 0) {

    8.         echo "Buzz";

    9.     } else {

    10.         echo $i;

    11.     }

    12.         echo "\n";  //此行單純斷行用

    13.     }
    複製代碼
    回復

    使用道具 舉報

    326

    主題

    14

    好友

    5301

    積分

    該用戶從未簽到

    文章
    3982
    8#
    發表於 2007-10-5 14:08 |只看該作者

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

    就流程啊...

    從1~100
      印數字=true
      若除3的餘數0 則印出 Fizz (不換行), 印數字=false
      若除5的餘數0 則 印出 Buzz (不換行), 印數字=false
      若印數字=true 則 印出 數字(不換行)
      換行
    迴圈返回
    回復

    使用道具 舉報

    51

    主題

    6

    好友

    306

    積分

    該用戶從未簽到

    文章
    715
    9#
    發表於 2007-10-5 14:09 |只看該作者

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

    void main() {
        char i = 1;
        char shown = 0;

        while(i <= 100) {
            
            if( i % 3 == 0) {
                printf("Fizz");
                shown = 1;
            }
            
            if( i % 5 == 0) {
                printf("Buzz");
                shown = 1;
            }
            
            if(shown == 0) {
                printf("%d", i);
            }
            
            printf("\n");
            i++;
            shown = 0;
        }
    }
    回復

    使用道具 舉報

    326

    主題

    14

    好友

    5301

    積分

    該用戶從未簽到

    文章
    3982
    10#
    發表於 2007-10-5 14:22 |只看該作者

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

    其實這個問題容易出在:
    1). 印文字時, 把數字也印出來了.
    上面就有人忘了處理.

    2). 3 和 5 的公倍數怎麼處理
    其實這個一點也不需要處理, 就先檢查3的倍數, 印 Fizz 但是不換行.
    再檢查5的倍數, 印 Buzz. 這樣 3 和 5 的公倍數就自動會出現 FizzBuzz.
    最後再統一換行, 就不會多印一行空行了.
    已有 1 人評分分享 收起 理由
    brad_cat + 5 本日最中肯

    總評分: 分享 + 5   查看全部評分

    回復

    使用道具 舉報

    95

    主題

    0

    好友

    1263

    積分

    ?

    該用戶從未簽到

    文章
    1337
    11#
    發表於 2007-10-5 14:32 |只看該作者

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

    寫不出來和有bug..我想有很大的差別吧?

    一次就寫出bug free的程式....有時得靠運氣吧
    已有 1 人評分分享 收起 理由
    大胃陳 + 5 含著眼淚加分!

    總評分: 分享 + 5   查看全部評分

    回復

    使用道具 舉報

    107

    主題

    9

    好友

    2163

    積分

    該用戶從未簽到

    文章
    1684
    12#
    發表於 2007-10-5 14:39 |只看該作者

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

    class FizzBuzz {
         public static void main (String args []) {
              int i = 1;
                   while (i <= 100){
                        if(i % (3 * 5) == 0) {
                             System.out.println("FizzBuzz");
                        }else if(i % 3 == 0){
                             System.out.println("Fizz");                  
                        }else if(i % 5 == 0){
                             System.out.println("Buzz");                  
                        }else{
                             System.out.println(i);
                        }
                        i ++;
                   }
              }       
    }

    [ 本文最後由 IF 於 2007-10-5 14:40 編輯 ]
    以下為拒絕交易名單:qoq357, ylc, xpmoney, yunglieng, s0341969, safari
    回復

    使用道具 舉報

    21

    主題

    0

    好友

    518

    積分

    該用戶從未簽到

    文章
    398
    13#
    發表於 2007-10-5 14:53 |只看該作者

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

    // Recursion version

    #include <iostream>

    using namespace std;

    void FizzBuzz(int start, int end)
    {
            if ( start == end)
                    return;

            FizzBuzz(start, end-1);
           
            if ( end % 5 && end % 3)
            {
                    cout << end << endl;
            }
            else
            {
                    if ( !(end % 3) ) cout << "Fizz";
                    if ( !(end % 5) ) cout << "Buzz";
                    cout << endl;
            }
    }

    int main(void)
    {
            FizzBuzz(1,100);
           
            return 0;
    }
    回復

    使用道具 舉報

    167

    主題

    0

    好友

    1338

    積分

  • TA的每日心情

    2011-4-8 02:23
  • 簽到天數: 3 天

    連續簽到: 0 天

    [LV.2]偶爾看看I

    文章
    1205
    14#
    發表於 2007-10-5 14:59 |只看該作者

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

    哇,這篇看起來就像各種語言的火力展示嘛~
    再寫下去,也許連 pascal 或是 shell script 都出來了,
    大家加油!  
    ...睡生夢死...
    回復

    使用道具 舉報

    25

    主題

    0

    好友

    1335

    積分

    我運通,兒切我吃水果…

    該用戶從未簽到

    文章
    1516
    15#
    發表於 2007-10-5 14:59 |只看該作者

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

    原文由 lyr 於 2007-10-5 13:51 發表
    好吧,真的有人寫錯了。


    比我好啦,我不會寫。
    「沒事早睡覺,早睡覺沒事」
    回復

    使用道具 舉報

    310

    主題

    0

    好友

    3603

    積分

    該用戶從未簽到

    文章
    2265
    16#
    發表於 2007-10-5 15:04 |只看該作者

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

    這邊根本就是程式設計師的簽到簿.......

    完全不會寫程式的人留。
    已有 3 人評分分享 收起 理由
    ShotLiang + 5 程式語言對我來說就是火星文
    willyhuang + 1 請到旁邊一起泡茶。
    leox + 1 寫程式能力趨近於零的人留......

    總評分: 分享 + 7   查看全部評分

    回復

    使用道具 舉報

    107

    主題

    9

    好友

    2163

    積分

    該用戶從未簽到

    文章
    1684
    17#
    發表於 2007-10-5 15:11 |只看該作者

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

    有人覺得剽竊, 恕刪.

    [ 本文最後由 IF 於 2007-10-5 16:32 編輯 ]
    已有 1 人評分分享 收起 理由
    拍郎 + 10 兩行搞定的最精簡寫法...啪啪啪...

    總評分: 分享 + 10   查看全部評分

    以下為拒絕交易名單:qoq357, ylc, xpmoney, yunglieng, s0341969, safari
    回復

    使用道具 舉報

    110

    主題

    0

    好友

    1077

    積分

    該用戶從未簽到

    文章
    844
    18#
    發表於 2007-10-5 15:43 |只看該作者

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

    來個組合語言吧~  內部print function就不寫了  每一家顯示卡的out fun register都不一樣!

    push all
    PIL:
    mov cx, 64h
    call print3
    call print5
    call print15
    loop PIL

    print  PROC    NEAR
    mov ax, cx
    mov bx, 35h
    @@:
    div bh
    cmp ah, 0
    je show1
    mov ax, cx
    div bl
    cmp ah, 0
    je show2
    mov ax, cx
    div 0Fh
    cmp ah, 0
    je show3
    endproc

    show:
    push ah
    mov dh, ah
    mov ah, 10
    int
    .......
    cmp cx, 0
    jge @b

    [ 本文最後由 brad_cat 於 2007-10-5 15:45 編輯 ]
    回復

    使用道具 舉報

    55

    主題

    0

    好友

    324

    積分

    該用戶從未簽到

    文章
    511
    19#
    發表於 2007-10-5 15:50 |只看該作者

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

    原文由 IF 於 2007-10-5 15:11 發表
    更精簡的算不算?

      for (int i=1; i


    這個感覺是人腦偷吃步。
    回復

    使用道具 舉報

    107

    主題

    9

    好友

    2163

    積分

    該用戶從未簽到

    文章
    1684
    20#
    發表於 2007-10-5 15:54 |只看該作者

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

    為什麼這麼說?
    這種 java skill 很常見啊.
    以下為拒絕交易名單:qoq357, ylc, xpmoney, yunglieng, s0341969, safari
    回復

    使用道具 舉報

    107

    主題

    9

    好友

    2163

    積分

    該用戶從未簽到

    文章
    1684
    21#
    發表於 2007-10-5 16:31 |只看該作者

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

    原文由 shaoyen 於 2007-10-5 03:50 PM 發表


    這個感覺是人腦偷吃步。


    剛 search 了一下, 還蠻多人這樣寫的.
    你覺得是剽竊是嗎?

    刪掉就是了.

    何必小人之心?
    已有 2 人評分分享 收起 理由
    good4321 + 5 這麼簡單的小程式當然會很多人寫法差不 ...
    brad_cat + 5 何必想太多 這東西不就這樣 還能怎麼變 ...

    總評分: 分享 + 10   查看全部評分

    以下為拒絕交易名單:qoq357, ylc, xpmoney, yunglieng, s0341969, safari
    回復

    使用道具 舉報

    181

    主題

    5

    好友

    2509

    積分

    超敗家的白爛長笛手

  • TA的每日心情
    郁悶
    2013-4-6 01:41
  • 簽到天數: 4 天

    連續簽到: 1 天

    [LV.2]偶爾看看I

    文章
    2201
    22#
    發表於 2007-10-5 16:53 |只看該作者

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

    最近玩 ASPX with VB.Net 比較多。
    VB.Net, Web Layout

        Private Function FizzBuzz() As String
            '偷懶的變數命名,好孩子不要學
            Dim i As Integer
            Dim out As String = ""

            For i = 1 To 100
                If i Mod 15 = 0 Then '3 和 5 的倍數要記得先處理掉,不然就破功了。
                    out += "FizzBuzz" & "<br />"
                ElseIf i Mod 3 = 0 Then
                    out += "Fizz" & "<br />"
                ElseIf i Mod 5 = 0 Then
                    out += "Buzz" & "<br />"
                'ElseIf i Mod 15 = 0 Then '這行是錯的。一開始直覺是寫在這裡,執行後才發覺不對
                'out += "FizzBuzz" & "<br />"
                Else
                    out += i.ToString & "<br />"
                End If
            Next

            Return out

        End Function
    回復

    使用道具 舉報

    10

    主題

    0

    好友

    260

    積分

    該用戶從未簽到

    文章
    262
    23#
    發表於 2007-10-5 17:05 |只看該作者

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

    所謂的越簡單的程式,其實..............
    1.考的是數學問題(不要小看數學這個領域呀.......)
    2.考你語法中不常用或根本不會用的部份
    3.容易發生小缺點的程式

    還有一次寫對也是一個陷阱
    要考也要考多久可以寫出可以運行無誤的程式

    往往大部份的這類測驗,只是要挖洞給人跳的!!
    只要有差異化的結果出現,就是拿來說嘴或是交差的好標的!!
    回復

    使用道具 舉報

    95

    主題

    5

    好友

    579

    積分

    該用戶從未簽到

    文章
    1247
    24#
    發表於 2007-10-5 17:26 |只看該作者

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

    原文由 IF 於 2007-10-5 16:31 發表


    剛 search 了一下, 還蠻多人這樣寫的.
    你覺得是剽竊是嗎?

    刪掉就是了.

    何必小人之心?

    IF 兄不需要想太多啦
    程式這種東西就跟論文一樣
    誰敢說他沒有Reference 到別人的東西,就算真的都沒有Reference
    也難保他的方法之前沒有人寫過類似的
    窮苦的上班族
    回復

    使用道具 舉報

    107

    主題

    9

    好友

    2163

    積分

    該用戶從未簽到

    文章
    1684
    25#
    發表於 2007-10-5 17:27 |只看該作者

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

    沒生氣啦.

    只是覺得這麼簡單的應用也能拿來說嘴, 有點啼笑皆非.
    以下為拒絕交易名單:qoq357, ylc, xpmoney, yunglieng, s0341969, safari
    回復

    使用道具 舉報

    19

    主題

    1

    好友

    2123

    積分

  • TA的每日心情
    奮斗
    2014-10-20 10:37
  • 簽到天數: 672 天

    連續簽到: 1 天

    [LV.9]以壇為家II

    文章
    486
    26#
    發表於 2007-10-5 17:29 |只看該作者

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

    本來剛已經用 Delphi 寫好了,看到 krisher 兄的留言就覺得沒必要再貼。
    不過看到有人說 pascal 會不會出來……hmm

    Delphi 版
    ===================
    var
      i: integer;
      varStr: string;
      varSList: TStringList;
    begin
      varSList:=TStringList.Create;
      for i:=1 to 100 do
      begin
        varStr:='';
        if (((i mod 3)=0)or((i mod 5)=0)) then
        begin
          if ((i mod 3)=0) then
            varStr:=varStr+'Fizz';
          if ((i mod 5)=0) then
            varStr:=varStr+'Buzz';
        end
        else
          varStr:=IntToStr(i);

        varSList.Add(varStr);
      end;

      varSList.SaveToFile('C:\Tmp.txt');
    end;
    編寫程式時,
    請假設將來維護這個程式的人是有暴力傾向的,
    而且……他知道您住在哪裡。
    回復

    使用道具 舉報

    9

    主題

    3

    好友

    558

    積分

  • TA的每日心情
    慵懶
    2012-4-30 11:56
  • 簽到天數: 60 天

    連續簽到: 1 天

    [LV.6]常住居民II

    文章
    1011
    27#
    發表於 2007-10-5 17:36 |只看該作者

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

    看到這麼多程式設計師出現..

    想到自己只學過BASIC...[洋蔥cry]
    而且已經早就都忘光光了...[洋蔥em22]
    回復

    使用道具 舉報

    57

    主題

    1

    好友

    926

    積分

    我做粗工的

    該用戶從未簽到

    文章
    716
    28#
    發表於 2007-10-5 17:54 |只看該作者

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

    IF 兄別在意,這寫程式就像跑步游泳一樣,
    不也你做什麼他就做什麼嗎
    回復

    使用道具 舉報

    185

    主題

    2

    好友

    4033

    積分

    來騎車吧

  • TA的每日心情
    慵懶
    2011-4-15 11:58
  • 簽到天數: 1 天

    連續簽到: 1 天

    [LV.1]初來乍到

    文章
    4610
    29#
    發表於 2007-10-5 19:09 |只看該作者

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

    原文由 krisher 於 2007-10-5 14:22 發表
    其實這個問題容易出在:
    1). 印文字時, 把數字也印出來了.
    上面就有人忘了處理.

    還好啦, 只是題目沒看清楚, 小改一下就好了...
    敗家不歸路, 愈走愈恐佈
    回復

    使用道具 舉報

    3

    主題

    0

    好友

    26

    積分

    該用戶從未簽到

    文章
    27
    30#
    發表於 2007-10-5 21:53 |只看該作者

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

    看到這個討論, 小弟想到以前老師出以下題目. 用一個迴圈完成.  大夥試試看~~  
         *
       ***
      *****
    *******
      *****
       ***
         *
    回復

    使用道具 舉報

    您需要登錄後才可以回帖 登錄 | 免費註冊

    與站長聯繫| PALMisLIFE 掌上生活      下載:更快、更棒、更好玩

    GMT+8, 2024-11-16 14:52 , Processed in 0.105084 second(s), 31 queries , Gzip On.

    Powered by Discuz!

    © 2001-2012 Comsenz Inc. style by eisdl

    回頂部