[이벤트 참여] @kimdy 님의 프로그램을 다양한 언어로

in #kr9 years ago (edited)

안녕하세요, 사과농축액 입니다.

@kdj님이 진행 중이신 @kimdy 님의 프로그램을 다양한 언어로. 이벤트에 참여하려 이 글을 씁니다.

이 글을 포스팅하기 위해 제가 진행하고있는 #idas-giftcard 당첨자 포스팅에 #kr-dev를 사용하여 이미 당첨자 코드를 보신분도 계실꺼라 생각합니다.
#idas-giftcard를 진행하면서 사용하는 랜덤 추첨기 코드는 아래와 같습니다.

import random
 
당첨자수 = 1
후보 = "후보1, 후보2, 후보3, 후보4, 후보5"
 
lotteryBox = 후보.split(',')
random.shuffle(lotteryBox)
 
for i in range(0,당첨자수):
  print(lotteryBox[i])

간단하죠?
python 랜덤 패키지의 shuffle을 너무 잘 사용하고 있지만 이벤트 참여를 위해 코드를 만들 었습니다.

import random
 
참가자 = int(input())
당첨자 = min(int(input()), 참가자)
 
tmpList = list(range(참가자))
 
for i in range(0, 당첨자):
    당첨 = tmpList[random.randrange(len(tmpList))]
    tmpList.remove(당첨)
    print("당첨자는: ", 당첨)

코드를 작성하고 나서 확인해보니 이미 @gyeryak님이 python으로 참여를 하셨더라고요;;

그래서 C#으로 다시 코드를 작성하였습니다.
약간의 예외처리도 해 보았습니다.

namespace RandomNum
{
    class Program
    {
        static void Main(string[] args)
        {
            // 입력
            int 참가자 = getInput("참가자 수를 입력하세요");
            int 당첨자 = getInput("당첨자 수를 입력하세요");

            // 리스트 초기화
            List<int> list = new List<int>();
            for (var i = 0; i < 참가자; ++i)
            {
                list.Add(i);
            }

            // 당첨자 추첨
            // 오류 방지를 위한 min 함수 사용
            Random r = new Random();
            for (var i = 0; i < Math.Min(참가자, 당첨자); ++i) 
            {
                var idx = r.Next(0, list.Count() - 1);
                Console.WriteLine($"당첨자는 : {list[idx]}");

                list.RemoveAt(idx);
            }

            Console.ReadLine();
        }

        static int getInput(string msg)
        {
            int input = 0;
            do
            {
                Console.Write($"{msg}: ");
                try
                {
                    input = int.Parse(Console.ReadLine());
                }
                catch (Exception)
                {
                    Console.WriteLine("숫자를 입력해 주세요");
                }
            } while (input == 0);

            return input;
        }
    }
}

네이밍이 어렵기도하고. 코드 읽으시는 분들이 편하게 보시라고 한글 변수를 사용하였는데 어떤가요?

긴 코드 읽어 주셔 감사합니다.

Sort:  

잘 보고갑니다.
앞으로도 꾸준히 좋은글 올려주세요 ^^

응원 감사합니다.

더 간단하게 하실수도 있을 것 같은데요~~
그리고 프로젝트 오일러 ~~~

프로젝트 오일러 포스팅은 시간이 걸리네요. 준비 중에 있습니다^^
더 간단하게는 어려운데요... 이벤트 마감 전까지 고민해 보겠습니다.

Coin Marketplace

STEEM 0.04
TRX 0.33
JST 0.093
BTC 63630.38
ETH 1782.03
USDT 1.00
SBD 0.39