[이벤트 참여] @kimdy 님의 프로그램을 다양한 언어로
안녕하세요, 사과농축액 입니다.
@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;
}
}
}
네이밍이 어렵기도하고. 코드 읽으시는 분들이 편하게 보시라고 한글 변수를 사용하였는데 어떤가요?
긴 코드 읽어 주셔 감사합니다.
잘 보고갑니다.
앞으로도 꾸준히 좋은글 올려주세요 ^^
응원 감사합니다.
더 간단하게 하실수도 있을 것 같은데요~~
그리고 프로젝트 오일러 ~~~
프로젝트 오일러 포스팅은 시간이 걸리네요. 준비 중에 있습니다^^
더 간단하게는 어려운데요... 이벤트 마감 전까지 고민해 보겠습니다.