C#2009. 3. 18. 10:38

using System;
using System.Text;

namespace Lottery
{
    class Lotto
    {
        private static Random rnd = new Random();

        public static void Main(string[] args)
        {
            for(int i=0; i<30; i++)
            {
                System.Console.Write(GetLottoNum() + ((i+1)%3==0?"\n":"\t"));
            }
        }

        public static string GetLottoNum()
        {
            StringBuilder sb = new StringBuilder();
            int[] num = CreateLottoNum();
            num = BubbleSort(num);
            foreach(int i in num)
            {
                if(i < 10)
                {
                    sb.Append("0" + i.ToString() + " ");
                }
                else
                {
                    sb.Append(i.ToString() + " ");
                }
            }

            return sb.ToString();
        }

        //get random number(6place within 1 to 45)
        private static int[] CreateLottoNum()
        {
            int[] num = new int[6];
            for(int i=0; i<num.Length; i++)
            {
                num[i] = (int)rnd.Next(1,45);
                for(int j=0; j<i; j++)
                {
                    if(num[i] == num[j])
                    {
                        i--;
                        break;
                    }
                }
            }
            return num;
        }

        //bubble sort
        private static int[] BubbleSort(int[] num)
        {
            int tmp;
            for(int i=0; i<num.Length-1; i++)
            {
                for(int j=0; j<num.Length-i-1; j++)
                {
                    if(num[j] > num[j+1])
                    {
                        tmp = num[j];
                        num[j] = num[j+1];
                        num[j+1] = tmp;
                    }
                }
            }
            return num;
        }
    }
}

Posted by Main()
Java2009. 3. 17. 14:34

class Lotto {
    public static void main(String[] args) {
        Lotto lotto = new Lotto();
        for(int i=0; i<100; i++)
            System.out.print(lotto.getLottoNum() + ((i+1)%5==0?"\n":"\t"));
    }

    public String getLottoNum() {
        StringBuffer sb = new StringBuffer();
        int[] num = this.createLottoNum();
        num = this.sort(num);
        for(int i:num) {
            if(i<10) sb.append("0" + Integer.toString(i) + " ");
            else sb.append(Integer.toString(i) + " ");
        }
        return sb.toString();
    }

    //get random number(6place within 1 to 45)
    private int[] createLottoNum() {
        int[] num = new int[6];
        for(int i=0; i<num.length; i++) {
            num[i] = (int)((Math.random()*45)+1);
            for(int j=0; j<i; j++)
                if(num[i] == num[j]) {
                    i--;
                    break;
                }
        }
        return num;
    }

    //bubble sort
    private int[] sort(int[] num) {
        int tmp;
        for(int i=0; i<num.length-1; i++) {
            for(int j=0; j<num.length-i-1; j++) {
                if(num[j] > num[j+1]) {
                    tmp = num[j];
                    num[j] = num[j+1];
                    num[j+1] = tmp;
                }
            }
        }
        return num;
    }
}

'Java' 카테고리의 다른 글

Base64 encode & decode in Java  (0) 2009.03.17
자바 랜덤 문자열 생성  (0) 2009.03.10
JSTL forEach forToken  (0) 2008.10.02
스타시디키 checksum Java & C# 소스  (0) 2008.09.26
Posted by Main()
Java2009. 3. 17. 10:51
/**
* Title: Base64
* Description: encoder et decode en base64
* class base64
*
* @author Isaac Mekueko
* @version 1.0
*/

public final class Base64 {
    static private final byte PADDING            = ( byte ) '=';
    static private final int  SIGN               = -128;
    static private byte [] Encodebase64Alphabet  = new byte[64];
    static private byte [] alphaDecode           =new byte[256];

    static {
        for(int i=0;i<=25;i++)
            Encodebase64Alphabet[i] = (byte)('A'+i);
        for(int i=26,j=0;i<=51;i++,j++)
            Encodebase64Alphabet[i] = (byte)('a'+j);
        for(int i=52,j=0;i<=61;i++,j++)
            Encodebase64Alphabet[i] = (byte)('0'+j);
        Encodebase64Alphabet[62] = (byte)('+');
        Encodebase64Alphabet[63] = (byte)('/');

      // decode
        for(int i=0;i<256;i++)
            alphaDecode[i] = -1;
        for(int i='A',j=0;i<='Z';i++,j++)
            alphaDecode[i] = (byte)j;
        for(int i='a',j=26;i<='z';i++,j++)
            alphaDecode[i] = (byte)j;
        for(int i='0',j=52;i<='9';i++,j++)
            alphaDecode[i] = (byte)j;
        alphaDecode['+'] = 62;
        alphaDecode['/'] = 63;

    }

    /*****************************************
     * encode array byte from 0-255 to base64
     * @param array byte
     * @return array byte
     *****************************************/
    static public byte [] encode (byte [] DataByte) {
        int numberDataBit = DataByte.length * 8;
        int numberDataBitMODULO24 = numberDataBit % 24;
        int numberDataBitBY24 = numberDataBit / 24;
        byte []EncodeData = null;

        if(numberDataBitMODULO24 == 0) EncodeData=new byte[numberDataBitBY24 * 4];
        else EncodeData = new byte[(numberDataBitBY24+1) * 4];
        byte Rshift2_b1,High_b2,Rshift6_b3,b1,b2,b3 ,e2,e3,e4 ;
        int IndexDataByte,IndexEncodeData,i;

        for( i=0;i<numberDataBitBY24;i++) {
            IndexDataByte = 3 * i;
            IndexEncodeData = 4 * i;

            b1=DataByte[IndexDataByte];
            b2=DataByte[IndexDataByte + 1];
            b3=DataByte[IndexDataByte + 2];

            Rshift2_b1 = ((b1&SIGN)==0) ? (byte)(b1>>2) : (byte)(b1>>>2);
            High_b2 = ((b2&SIGN)==0) ? (byte)(b2>>4) : (byte)(b2>>>4);
            Rshift6_b3 = ((b2&SIGN)==0) ? (byte)(b3>>6) : (byte)(b3>>>6);

            e2 = (byte)(((b1&0x3)<<4)|High_b2);
            e3 = (byte)(((b2&0xF)<<2)|Rshift6_b3);
            e4 = (byte)(b3&0x3F);
            EncodeData[IndexEncodeData] = Encodebase64Alphabet[Rshift2_b1];
            EncodeData[IndexEncodeData+1] = Encodebase64Alphabet[e2];
            EncodeData[IndexEncodeData+2] = Encodebase64Alphabet[e3];
            EncodeData[IndexEncodeData+3] = Encodebase64Alphabet[e4];
        }

        IndexDataByte = 3 * i;
        IndexEncodeData = 4 * i;

        if(numberDataBitMODULO24 == 16) {
            b1 = DataByte[IndexDataByte];
            b2 = DataByte[IndexDataByte + 1];
            Rshift2_b1 = ((b1&SIGN)==0)  ? (byte)(b1>>2) : (byte)(b1>>>2);
            High_b2 = ((b2&SIGN)==0) ? (byte)(b2>>4) : (byte)(b2>>>4);
            e2 = (byte)(((b1&0x3)<<4)|High_b2);
            e3 = (byte)((b2&0xF)<<2);
            e4 = PADDING;
            EncodeData[IndexEncodeData]=  Encodebase64Alphabet[Rshift2_b1];
            EncodeData[IndexEncodeData+1]=Encodebase64Alphabet[e2];
            EncodeData[IndexEncodeData+2]=Encodebase64Alphabet[e3];
            EncodeData[IndexEncodeData+3]=e4;
        } else
        if(numberDataBitMODULO24 == 8) {
            b1=DataByte[IndexDataByte];
            Rshift2_b1 = ((b1&SIGN)==0)  ? (byte)(b1>>2) : (byte)(b1>>>2);
            e2 = (byte)((b1&0x3)<<4);
            e3 = PADDING;
            e4 = PADDING;
            EncodeData[IndexEncodeData] =  Encodebase64Alphabet[Rshift2_b1];
            EncodeData[IndexEncodeData+1] = Encodebase64Alphabet[e2];
            EncodeData[IndexEncodeData+2] = e3;
            EncodeData[IndexEncodeData+3] = e4;
        }

        return EncodeData;
    }

    /**************************************
     * encode string from 0-255 to base64
     * @param string
     * @return String
     **************************************/
    static public String encode(String str) {
        return new String(encode(str.getBytes()));
    }

    /**********************************************
     * decode array byte from base64 to char 0-255
     * @param array byte
     * @return array byte
     *********************************************/
    public static byte[] decode(byte []DataByte) {
        if(!isByteInBase64(DataByte)) return null;
        int numberDataBit = DataByte.length * 6;
        int numberGroup_3bit = numberDataBit / 24;
        byte []DecodeData = null;
        byte b1,b2,b3,b4,d1,d2,d3,ch1,ch2,ch3,ch4;
        ch3 = DataByte[DataByte.length-2];
        ch4 = DataByte[DataByte.length-1];

        if(ch3!=PADDING && ch4!=PADDING)
            DecodeData=new byte[numberGroup_3bit*3];
        else if(ch3==PADDING)
            DecodeData=new byte[(numberGroup_3bit*3)-2];
        else if(ch4==PADDING)
            DecodeData=new byte[(numberGroup_3bit*3)-1];

        int decodeIndex,encodeIndex;

        for(int i=0; i<numberGroup_3bit; i++) {
            decodeIndex = 3 * i;
            encodeIndex = 4 * i;
            ch1 = DataByte[encodeIndex];
            ch2 = DataByte[encodeIndex+1];
            ch3 = DataByte[encodeIndex+2];
            ch4 = DataByte[encodeIndex+3];
            b1 = alphaDecode[ch1];
            b2 = alphaDecode[ch2];
            b3 = alphaDecode[ch3];
            b4 = alphaDecode[ch4];

            if(ch3!=PADDING&&ch4!=PADDING) {
                d1 = (byte)((b1<<2)|(b2>>>4));
                d2 = (byte)((b2<<4)|(b3>>2));
                d3 = (byte)((b3<<6)|b4);
                DecodeData[decodeIndex] = d1;
                DecodeData[decodeIndex+1] = d2;
                DecodeData[decodeIndex+2] = d3;
            } else
            if(ch3==PADDING) {// 1 char
                d1 = (byte)((b1<<2)|(b2>>>4));
                DecodeData[decodeIndex] = d1;
            }
            else
            if(ch4==PADDING) { // 2char
                d1 = (byte)((b1<<2)|(b2>>>4));
                d2 = (byte)((b2<<4)|(b3>>2));
                DecodeData[decodeIndex] = d1;
                DecodeData[decodeIndex+1] = d2;
            }
        }

        return DecodeData;
    }

    /**
     *  decode base64 string into characters from 0-255
     *  @param string
     *  return string
     **/
    public static String decode(String str) {
        return new String(decode(str.getBytes()));
    }

    /**
     * check if the byte belong to The Base64 Alphabet
     * @param octet
     * @return bolean value
     **/
    private static boolean isByteInBase64(byte octet) {
        if(octet==PADDING||alphaDecode[octet]!=-1)
            return true;
        else
            return false;
    }
    private static boolean isByteInBase64(byte []arraybyte) {
        int len=arraybyte.length;
        for(int i=0;i<len;i++) {
            if(!isByteInBase64(arraybyte[i]))
                return false;
        }
        return true;
    }
}


'Java' 카테고리의 다른 글

로또번호 랜덤생성 자바소스  (0) 2009.03.17
자바 랜덤 문자열 생성  (0) 2009.03.10
JSTL forEach forToken  (0) 2008.10.02
스타시디키 checksum Java & C# 소스  (0) 2008.09.26
Posted by Main()