MYSTERY ZILLION တွင် English သို့မဟုတ် Unicode ဖြင့်သာ အသုံးပြုခွင့်ရှိသည်။ ဇော်ဂျီ ၊ ဧရာ စသည်တို့ကို အသုံးပြုခွင့် မရှိ။ Unicode fonts များမှာ Mon3,Yunghkio, Myanamr3 စသည်များ အသုံးပြုနိုင်သည်။ Unicode Guide ကို ဒီမှာ Download ချပါ။ Zawgyi to Unicode Converter
Don't share ebook or software if nobody request. You can find free book websites on here. We are welcome for discussion or asking question instead.

Number တွေကို အနီးစပ်ဆုံး ဘယ်လောက်တူသလဲ % စစ်ခ

edited August 2010 in C#
Mysteryzillion က အကိုတို့ အစ်မ တို့ရေ ကျွန်တော် အဆင်မပြေတာလေး တခုလောက် အကူအညီတောင်းချင်လို့..

လက်ရှိ ကျွန်တော် လုပ်နေတဲ့ Project တခုမှာ User ထည့်လိုက်တဲံ Number တစ်ခုကို Database ထဲမှာ ထည့်ပြီးသာ Number တွေနဲံ နှိုင်းယဉ်ပြီးတော့ ဘယ်လောက် အနီးစပ်ဆုံး တူသလဲ ဆိုတာ တွက်ပေးရမှာ..။ ဘယ်လိုပုံစံမျိုး တွက်ပေးရမလဲ မသိဖြစ်နေတယ်...။

ဥပမာ ဗျာ Database ထဲမှာ ၅၊ ၁၀၊ ၁၂၊ ၁၈၊ ၂၀ ကြိုပြီး ထည့်ထားတယ်ဆိုပါဆို..။ User က ၁၀ ဆိုပီး ထည့်လိုက်ရင် ရှိပြီးသာ ၁၀ နဲ့က ၁၀၀ ရာခိုင်းနှုန်းတူတယ်..။ ၁၂ နဲ့ကျတော့ ဘယ်လောက် တူတယ်..။ ၁၈ နဲ့ဆို ဘယ်လောက်တူတယ်.. အဲလိုပံစံမျိုး List လုပ်ပေးရမှာ...။

နည်းနည်း စဉ်းစားပေးကြပါလား..... ကျေးဇူးပြုပြီး...

မှတ်ချက်များ

  • edited August 2010 Registered Users
    ပထမဆုံး ရာခိုင်နှုန်းကို ဘယ်လိုတွက်မလဲဆိုတာကို ဆုံးဖြတ်ပါ။ requirement ကို အသေးစိတ်ပြောပြနိုင်ရင် ပိုကောင်းပါလိမ့်မယ်။

    ဖြစ်နိုင်တယ့် နည်းတစ်ခုကတော့ Tolerance ကို Define လုပ်ပါ။

    ဥပမာ
    1. Fixed Tolerance of В±x
    x ကို တစ်ခုခု သတ်မှတ်ပါ။ ဥပမာ x=၅
    ၈ - ၆၀% ၉ - ၈၀% ၁၀ - ၁၀၀% ၁၂ - ၆၀% ၁၅ - ၀%

    2. Variable Tolerance of В±x
    x က User ထည့်ပေးတဲ့ နံပါတ်ပါ။ ဥပမာ x=၁၀
    ၈ - ၈၀% ၉ - ၉၀% ၁၀ - ၁၀၀% ၁၂ - ၈၀% ၁၅ - ၅၀% ၂၀ - ၀%
  • edited August 2010 Registered Users
    kreatorye wrote: »
    ပထမဆုံး ရာခိုင်နှုန်းကို ဘယ်လိုတွက်မလဲဆိုတာကို ဆုံးဖြတ်ပါ။ requirement ကို အသေးစိတ်ပြောပြနိုင်ရင် ပိုကောင်းပါလိမ့်မယ်။

    ဖြစ်နိုင်တယ့် နည်းတစ်ခုကတော့ Tolerance ကို Define လုပ်ပါ။

    ဥပမာ
    1. Fixed Tolerance of В±x
    x ကို တစ်ခုခု သတ်မှတ်ပါ။ ဥပမာ x=၅
    ၈ - ၆၀% ၉ - ၈၀% ၁၀ - ၁၀၀% ၁၂ - ၆၀% ၁၅ - ၀%

    2. Variable Tolerance of В±x
    x က User ထည့်ပေးတဲ့ နံပါတ်ပါ။ ဥပမာ x=၁၀
    ၈ - ၈၀% ၉ - ၉၀% ၁၀ - ၁၀၀% ၁၂ - ၈၀% ၁၅ - ၅၀% ၂၀ - ၀%

    ကျွန်တော် လုပ်ရမှာက ဒီလိုဗျ...

    ဥပမာဗျာ...
    Database ထဲမှာ ဖိနပ် တရံ ချင်းဆီအတွက် ဒေတာ တွေထည့်ထားမယ်..။
    Slipper Size
    Height
    Width
    Color

    အဲဒါတွေကို ကြိုထည့်ထားမယ်...

    User က သူလိုချင်တဲံ အတိုင်းအတာ အတိုင်ထည့်မယ်..
    သူထည့်တဲ့ အတိုင်းအတာ နဲ့ အနီးစပ်ဆုံးတူတဲ့ Slipper ၅ မျိုးကို ပြပေးရမှာ..။ ပြီးတော့ ဘယ်လောက်ထိ တူတယ်ဆိုတာပါ % နဲ့တွက်ပေးရမှာ...

    ပြီးတော့ သူအသစ်ထည့်တဲ့ ဒီဇိုင်းကိုဘဲ သူယူမယ်ဆို အဲဒီ ဒီဇီုင်း ရဲ့ ဆိုဒ်တွေ ကိုလဲ ပြန်သိမ်းရမှာ..။

    အသေစစ်ထားလို့လဲမရဘူး...။ ...
  • edited August 2010 Registered Users
    database ကတော့ ကျွန်တော်မတတ်ဘူးဗျ။ ရာခိုင်နှုန်းအတွက် ဒီလိုစဉ်းစားမိတာလေးရှိတယ်ဗျ။
    ကိုယ့်ရဲ့no. = x
    user no. = y
    ရာခိုင်နှုန်း = z
    x, y > 0 တော့ဖြစ်ဖို့လိုတယ်ဗျ။ အဲလိုဖြစ်မယ်ဆိုရင်
    x >= y ဖြစ်ရင် ရာခိုင်နှုန်း z = (y * 100)/x
    y > x ဖြစ်ရင် ရာခိုင်နှုန်း z = (x * 100)/y
    အဲလိုတော့ စဉ်းစားမိတယ်ဗျ။

    ဥပမာ ကိုယ့်no က ၁၊ user no. က ၁၀၀၀ ဆိုပါစို့။ x = 1, y = 1000, y > x
    z = (1 * 100)/1000 = .1%

    x = 100, y = 10, x > y
    z = (10 * 100)/100 = 10%

    x= 100, y = 100, x = y
    z = (100 * 100)/100 = 100%
    အဲလိုတော့စဉ်းစားကြည့်မိတယ်ဗျာ။ မှားနေရင်တော့ sorry ပါဗျာ။ အဆင်ပြေပါစေ။
  • edited August 2010 Registered Users
    Ye Htet wrote: »
    database ကတော့ ကျွန်တော်မတတ်ဘူးဗျ။ ရာခိုင်နှုန်းအတွက် ဒီလိုစဉ်းစားမိတာလေးရှိတယ်ဗျ။
    ကိုယ့်ရဲ့no. = x
    user no. = y
    ရာခိုင်နှုန်း = z
    x, y > 0 တော့ဖြစ်ဖို့လိုတယ်ဗျ။ အဲလိုဖြစ်မယ်ဆိုရင်
    x >= y ဖြစ်ရင် ရာခိုင်နှုန်း z = (y * 100)/x
    y > x ဖြစ်ရင် ရာခိုင်နှုန်း z = (x * 100)/y
    အဲလိုတော့ စဉ်းစားမိတယ်ဗျ။

    ဥပမာ ကိုယ့်no က ၁၊ user no. က ၁၀၀၀ ဆိုပါစို့။ x = 1, y = 1000, y > x
    z = (1 * 100)/1000 = .1%

    x = 100, y = 10, x > y
    z = (10 * 100)/100 = 10%

    x= 100, y = 100, x = y
    z = (100 * 100)/100 = 100%
    အဲလိုတော့စဉ်းစားကြည့်မိတယ်ဗျာ။ မှားနေရင်တော့ sorry ပါဗျာ။ အဆင်ပြေပါစေ။

    ကျေူးဇူး ကိုရဲထက်ရေ... ကျွန်တော် စမ်းကြည့်လိုက်ဦးမယ်..ဗျ....
    အဆင်ပြေမပြေ ထပ်ပြောမယ်ဗျ... ခုလို ကူညီပြီးစဉ်းစားပေးတဲ့အတွက် ကျေးဇူးအထူးပါဗျာ... သိုင်းကျူ... :smile::smile::smile:
  • edited August 2010 Registered Users
    Ok. For slipper size, one size bigger or smaller can be 80%, 2 size bigger or smaller 40%, 3 size 10%, 4 size n above 0%. Hard-code it. It's based on common sense.

    If u want to search based on other similarities, let me know. I'll suggest u more.
  • edited August 2010 Registered Users
    Number ကို similarities တွက်လို့ရပါပြီ. ဒါပေမယ့် Color တွေကိုရော အဲလိုတွက်လို့ရမဲ့ နည်းလမ်း ရှိသလားဗျ... ကူကြပါဦး... :rolleyes::eek::eek::eek::eek:
  • edited August 2010 Registered Users
    If u use Ko Ye Htet's method to compare slipper sizes, say u have size {3, 4, 5, 6, 7, 8, 9} in database. User searches size no 5. 3 -> 60%; 4 -> 80%; 5 -> 100%; 6 -> 83.33%; 7 -> 71.43%; 8 -> 62.5%; 9 -> 55.56%. if u have to choose the top 5, u'll be choosing {4, 5, 6, 7, 8}.

    If u use my method of fixed tolerence of 5, u'll have to calculate the size difference.
    # for {3, 4, 5, 6, 7, 8, 9} and user choice of 5, find absolute difference using Math.Abs(x-y); x is user choice, y is number from database. differences are {2, 1, 0, 1, 2, 3, 4}
    # find percentage
    if (difference <= fixed_tolerence)    
                      percentage = (1.0 - difference/fixed_tolerence)*100;
               else 
                      percentage = 0.0;
    

    percentages are {60%, 80%, 100%, 80%, 60%, 40%, 20%}
    # then u'll be choosing the correct top 5 sizes, which are {3, 4, 5, 6, 7}. But since u r using slipper sizes, u can hard-code the percentage (saving the calculation time)
    switch (difference)        // difference is integer
    {
           case 0:
                 percentage = 100%;
                 break;
           case 1:
                 percentage = 80%;
                 break;
           case 2:
                 percentage = 60%;
                 break; 
              ...
           case 4:
                 percentage = 20%;
                 break;
           default:
                 percentage = 0%;
                 break;
    }
    


    For similarity of color, simplest method is to find the Euclidean distance in Lab Color Space.
    public struct LabColor
    {
             public double L, a, b;
             public LabColor(double L, double a, double b)
             {
                      this.L = L;
                      this.a = a;
                      this.b = b;
             }
          
             public LabColor(System.Drawing.Color color)
             {
                     // Change RGB to XYZ
                     // Change XYZ to CIE-L*ab
                     // use formulas @ http://www.easyrgb.com/index.php?X=MATH
              }
    }
    
    LabColor labColor1, labColor2;
    LabColor colorDiff = new LabColor(labColor1.L-labColor.L, labColor1.a-labColor2.a, labColor1.b-labColor2.b);
    
    distance = Math.Sqrt((colorDiff.L*colorDiff.L)+(colorDiff.a*colorDiff.a)+(colorDiff.b*colorDiff.b));
    
    distance သေးလေ similarity ကြီးလေ
  • edited August 2010 Registered Users
    kreatorye ရေ
    အစ်ကို ရှင်းပြတာလေးက အရမ်းကောင်းပါတရ်။ ဒါပေမဲ့ ကျနော် သိပ်နားမလည်ဘူးဖြစ်နေတရ်။ အစ်ကိုက ဘာ programming language အသုံးပြုထားတာလဲ။ အစ်ကို အဆင်ပြေရင် အစ်ကို တွက်ပြထားတဲ့ language လေးနဲ့
    အဖြေဘရ်လို ရလာတရ် ဆိုတာလေးကို မြန်မာလိုလေ တဆင့်ချင်း ပြောပြပေးပါလား။ အခုလို ပုစ္ဆာလေးတွေက လွရ်တရ် ဆိုပေမဲ့ ကျနော်တို့အတွက် အရမ်းစဉ်းစားရပါတရ်။ ဒါကြောင့် သဘောတရားလေးကို နားလည်သွားချင်လို့ပါ။ အစ်ကို အဆင်ပြေရင် ကူညီပါအုံးနော်။ C# တို့ C++ တို့နဲ့ ပတ်သတ်ပြီးလဲ အစ်ကို ပြုစုထားတဲ့ စာအုပ်လေးများရှိရင် ညီတို့ကို မျှေ၀ပေးပါအုံးနော်။ အားလုံးအတွက်ကျေးဇူးတင်ပါသည်။
  • edited August 2010 Registered Users
    EveningPrimrose ရေ
    အစ်ကိုကလဲ အစ်ကို သင်ခန်းစားလေးတွေကို ညီတို့ကို အမြဲ ဆွေးနွေးပေးပါအုံးနော်။ အရင် အစ်ကိုပြုစုထားတာလေးတွေရှိရင်လဲ
    ကျနော်တို့ကို မျှေ၀ပေးစေချင်ပါတရ်။ ညီအစ်ကိုမောင်နှမများအားလုံး ကျန်းမာပျော်ရွှင်နိုင်ကြပါစေ။
  • edited August 2010 Registered Users
    သြော် .. သူက C# ခေါင်းစဉ်အောက်မှာ ဆွေးနွေးလို့ C# နဲ့ ရေးပြတာပါ။ C နဲ့ ရေးရင်လဲ သိပ်မကွာပါဘူး။ Math.Abs(..) အစား abs(..)၊ Math.Pow(..) အစား pow(..) ပြောင်းရုံပါပဲ။ Syntax လေးပဲ နဲနဲ ပြောင်းရင် ရပါပြီ။ ဘယ်နားကို နားမလည်လို့လဲ ပြောပါ။ ရှင်းပြပေးပါ့မယ်။
  • edited August 2010 Registered Users
    ကျေးဇူး ကို kreatorye ရေ...
    မနေ့က ကျွန်တော် Number တွေကို စစ်တာ အဆင်ပြေတယ်ဗျ.. အဖြေက အရမ်းတိကျလွန်းတယ်.. ဟဟ.. မိုက််တယ်...
    Color ကတော့ သေချာ မစမ်းရသေးဘူးဗျ.. ဒီနေ့ စမ်းဖြစ်မယ်.. ကျေးဇူး အထူးထင်ပါတယ်ဗျာ....

    ဒါနဲ့ အကို အဲဒီ ကာလာ တွေကို ဘယ်လိုနှိုင်ယှဉ် ရမလဲဆိုတာ အရင်က Project လုပ်ဖူးလို့ သိတာလား
    ဒါမှမဟုတ် ကျွန်တော် မေးလို့ရှာပေးတာလား နည်းနည်းပြောပြပါလား ..... ပြန်ဖြေတာကမြန်လွန်းနေလို့... :rolleyes::rolleyes::rolleyes::rolleyes:


    ကျော်ဇင်၀င်း
  • edited August 2010 Registered Users
    kreatorye wrote: »
    သြော် .. သူက C# ခေါင်းစဉ်အောက်မှာ ဆွေးနွေးလို့ C# နဲ့ ရေးပြတာပါ။ C နဲ့ ရေးရင်လဲ သိပ်မကွာပါဘူး။ Math.Abs(..) အစား abs(..)၊ Math.Pow(..) အစား pow(..) ပြောင်းရုံပါပဲ။ Syntax လေးပဲ နဲနဲ ပြောင်းရင် ရပါပြီ။ ဘယ်နားကို နားမလည်လို့လဲ ပြောပါ။ ရှင်းပြပေးပါ့မယ်။


    အခုလို ပြောပြပေးတာ ကျေးဇူးပါပဲနော်။ ကျနော်လဲ C# ကို လုပ်ဖူးပါတရ်။ လုပ်ဖူးတရ်ဆိုတာက သင်ခဲ့ဖူးလို့မဟုတ်ပါဘူး။ စာအုပ်ဖတ်ရင်း စိတ်၀င်စားလို့လုပ်ကြည့်တာပါ ကျနော်က copy နဲ့ paste သုံးတာများတော့
    အဆင့်တိုင်းကို နားမလည်ဘူး။ ကျနော်ပြောချင်တာက အစ်ကို အခု သင်ပြတဲ့ လေ့ကျင့်ခန်းလေးကို အဆင့်လိုက် အလုပ်လုပ်ပုံလေးကို ရှင်းပြစေချင်တာပါ။
  • edited August 2010 Registered Users
    Color space တွေ အကြောင်းကို ကျောင်းမှာ သင်ဖူးပါတယ်။ သဘောတရားက ကျောင်းမှာ သင်တုန်းက သိခဲ့တာပါ။ Formula ကတော့ အခုမှ ရှာပေးတာပါ။
  • edited August 2010 Registered Users
    What you want is nearest-neighbor search. For this you need a distance function : a linear combination of each attribute distance.
  • edited August 2010 Registered Users
    အကိုရေ ကျွန်တော် ဒါက C# Code ပါ..။ Color Function တွေကိုထည့်ပီးစမ်းကြည့်တာ ^ တွေမှာ Error တက်နေတယ်ဗျ.. ကျွန်တော်လည်း စဉ်းစားမရလို့... ဘာများဖြစ်နိုင်မလဲ....
    using System;
    using System.Collections.Generic;
    using System.Text;
    
    namespace CBR
    {
        public class LabColor
        {
            public double L, a, b,cr,cg,cb;
            public double X, Y, Z;
            public LabColor(double L, double a, double b)
            {
                this.L = L;
                this.a = a;
                this.b = b;
            }
    
            public LabColor(System.Drawing.Color color)
            {
                cr = color.R;
                cg = color.G;
                cb = color.B;
                RGBtoXYZ();
                XYZtoCIELab();         
            }
    
            private void RGBtoXYZ()
            {
                double var_R = (cr / 255);    //R from 0 to 255
                double var_G = (cg / 255);        //G from 0 to 255
                double var_B = (cb / 255);        //B from 0 to 255
    
                if (var_R > 0.04045)
                    var_R = ((var_R + 0.055) / 1.055) ^ 2.4;
                else
                    var_R = var_R / 12.92;
    
                if (var_G > 0.04045)
                    var_G = ((var_G + 0.055) / 1.055) ^ 2.4;
                else
                    var_G = var_G / 12.92;
    
                if (var_B > 0.04045)
                    var_B = ((var_B + 0.055) / 1.055) ^ 2.4;
                else
                    var_B = var_B / 12.92;
    
                var_R = var_R * 100;
                var_G = var_G * 100;
                var_B = var_B * 100;
    
                //Observer. = 2В°, Illuminant = D65
                X = var_R * 0.4124 + var_G * 0.3576 + var_B * 0.1805;
                Y = var_R * 0.2126 + var_G * 0.7152 + var_B * 0.0722;
                Z = var_R * 0.0193 + var_G * 0.1192 + var_B * 0.9505;
    
            }
    
            private void XYZtoCIELab()
            {
                double ref_X = 95.047;
                double ref_Y = 100.000;
                double ref_Z = 108.883;
    
                double var_X = X / ref_X;          //ref_X =  95.047   Observer= 2В°, Illuminant= D65
                double var_Y = Y / ref_Y;          //ref_Y = 100.000
                double var_Z = Z / ref_Z;          //ref_Z = 108.883
    
                if (var_X > 0.008856)
                    var_X = var_X ^ (1 / 3);
                else
                    var_X = (7.787 * var_X) + (16 / 116);
    
                if (var_Y > 0.008856)
                    var_Y = var_Y ^ (1 / 3);
                else
                    var_Y = (7.787 * var_Y) + (16 / 116);
    
                if (var_Z > 0.008856)
                    var_Z = var_Z ^ (1 / 3);
                else
                    var_Z = (7.787 * var_Z) + (16 / 116);
    
                L *= (116 * var_Y) - 16;
                a *= 500 * (var_X - var_Y);
                b *= 200 * (var_Y - var_Z);
    
            }
        }
    }
    
    rror    2    Operator '^' cannot be applied to operands of type 'double' and 'double'    C:\Users\acer\Desktop\Slipper Production\CBR\LabColor.cs    34    25    CBR
    
  • edited August 2010 Registered Users
    Oh. it's power operator in some other language. in C#, it's Math.Pow(x,y);
    e.g.
    var_X = Math.Pow(var_X,1.0 / 3.0); // Don't forget to add .0 to numbers, otherwise the answer will be always 1 :)
    
  • edited August 2010 Registered Users
    ဟုတ် အဆင်ပြေသွားပြီဗျ.. color ကတော့ အကိုပြောတာကို မသုံးဖြစ်လိုက်ဘူး... အသေ သတ်မှတ်လိုက်တယ်.. eg. Whit-Green ဘယ်လောက်တူတယ်.. Green-Blue ဘယ်လောက် တူတယ်ဆိုပီး သတ်မှန်လိုက်တယ်... :) ဘာဘဲ ပြောပြော ကူညီပေးတာ ကျေးဇူးဗျ...
Sign In or Register to comment.