2013年3月29日 星期五

數獨

一 數獨

1定義

數獨 (日語:数独すうどく sūdoku):是一種邏輯性的數字填充遊戲,玩家須以數字填進每一格,而每行、每列和每個宮(即3x3的大格)有齊1至9所有數字。遊戲設計者會提供一部份的數字,使謎題只有一個答案。

2 歷史

相傳數獨源起於拉丁方陣(Latin Square),1970年代美國發展,改名為數字拼圖(Number Place)、之後流傳至日本並發揚光大,以數學智力遊戲智力拚圖遊戲發表。在1984年一本遊戲雜誌《パズル通信ニコリ》正式把它命名為數獨,意思是「在每一格只有一個數字」。後來一位前任香港高等法院紐西蘭法官高樂德(Wayne Gould)在1997年3月日本東京旅遊時,無意中發現了。他首先在英國的《泰晤士報》上發表,不久其他報紙也發表,很快便風靡全英國,之後他用了6年時間編寫了電腦程式,並將它放在網站上,使這個遊戲很快在全世界流行。

3 分類

迷你數獨

迷你數獨較傳統數獨為小,棋盤有36格(正方形,6格x6格),內有3x2大小的大格。此變體的規則與傳統數獨一樣,但因格數較少而較容易得到答案,所以較適合少年玩家和初學者。

拼圖數獨

拼圖數獨是由 9×9 的方格陣組成,但內裏不是由9個 3×3 的九宮格組成,是由一些不規則的線段劃分。

彩色數獨

彩色數獨是由 9×9 的方格陣組成,內裏是由9個 3×3 的九宮格組成,除原本的的玩法外,另外再加上一條規例:部分方格內會上色彩,相同色彩的方格內的數字並不能相同。

重疊數獨




重疊數獨是由2或3個傳統數獨合併

而成,其中的一部分會重疊,玩法不變。

巨無霸數獨

巨無霸數獨是由 12×12 的方格陣組成,內裏是由12個 3(直)×4(橫) 的九宮格組成。玩法不變。
重疊加拼圖數獨
重疊數獨

一般數獨

巨無霸數獨

二 程式

1
http://scratch.mit.edu/projects/billyedward/1344500
2
http://scratch.mit.edu/projects/hej_wickie_hej/1001809%253E
3
http://scratch.mit.edu/projects/HD123/2714988

2012年12月7日 星期五

程式菁英班


程式:


#include<iostream>
#include<cstdlib>
using namespace std;
main()
{int i,j; //i:行數 j:個數
for(i=0;i<9;i++)
{
for(j=9;j>i;j--)
cout<<"*";
cout<<endl;
}
}

程式:

#include<iostream>

#include<cstdlib>

using namespace std;
main()
{int i,j; //i:行數 j:個數
for(i=1;i<10;i++)
{
for(j=1;j<i+1;j++)
cout<<"*";
cout<<endl;
}
}

程式:

#include<iostream>
#include<cstdlib>
using namespace std;
main()
{
int i,j;// i=行數j=個數
i=0;
while(i<10)
{
        j=0;
        while(j<10)
        {
                cout<<"*";
                j++;
        }
        cout<<endl;
        i++;
}
}


程式:

#include<iostream>
#include<cstdlib>
using namespace std;
main()
{
        int i,j;
        i=0;
        while(i<6)
        {
                j=6;
                while(j>i)
                {
                cout<<" ";
                j--;
            }
            j=0;
                while(j<2*i+1)
                {
                        cout<<"*";
                        j++;
                }
        cout<<endl;
        i++;
        }
}

求最大公因數程式:

#include<iostream>
#include<cstdlib>
using namespace std;
main()
{
        int a,b,c,d;
        cout<<"請輸入第一個數字:";
        cin>>a;
        cout<<endl;
        cout<<"請輸入第二個數字:";
        cin>>b;
        cout<<endl;
        d=1;
        while(d!=0)
        {
                d=a%b;
                a=b;
                b=d;
        }
        cout<<"最大公因數是:"<<a;
}

最後數都是偶數程式:

#include<iostream>
#include<cstdlib>
using namespace std;
main()
{
        int a,b;
        cin>>a;
        b=a%2;
        if(b==0)
        {
                cout<<a;
        }
        else
        {
                cout<<a-1;
        }
}