문득 로또를 사고 싶어지는 날이 있다. 뭐 군인이라 살 수 없지만 마음만이라도 내려고 구상해봤다. [기능] 1. 명령어 입력 2.6개 숫자+보너스 숫자 생성 3.6개 숫자 올리기/내리는 순서대로 정렬[순서] 1. 명령어를 받는 2.1~45까지의 숫자 중 랜덤으로 6개 추첨. 배열을 로또볼이 들어 있는 통으로, 추첨하는 과정을 통에서 공이 뿅 튀는 과정으로 보면 된다. (이후 숫자순으로 정렬해 본다.) 3. 나머지 숫자 중 1개 추첨정렬…에 관한 메서드는 .sort()이다. 모든 배열은 System.Array라는 클래스를 상속?받아서 따라서 Array에서 정의된 메서드를 사용할 수 있다-물론 자 클래스에서 재정의도 가능하지만 이 봇에서 그런 것까지 할 수 있을지는 모르겠다. 단, 기본적으로 정의된 .sort()는 문자열에 대해서만 유용하다. 즉, 11222333이 있는 경우 사용자가 원하는 결과: 12311233.sort()로 정렬한 결과: 11222333… 식으로 정렬된다. 하지만 여러분도 알다시피 배열을 선언할 때 사용하는 var는 정수/실수/스트레이트 모두를 가리킬 수 있다. 그렇다면 숫자를 크기 순으로 나열하는 방법은 없을까.7. 명령어는 b.lot이다. 13~15. 전체 숫자를 받는 배열 lot, 선택된 숫자를 넣는 배열 selected, 보너스 숫자를 받는 변수 bonous를 정의했다. 17. 먼저 lot 배열에 1부터 45까지의 숫자를 넣었다.2128 로또 번호를 총 6개 고른다. 이 과정은 for문으로 처리했다. 22. Rand 함수로부터 임의의 숫자를 하나 받아온다. ** 31) Rand(0,45)가 아닌 Rand(0,44)로 정정Rand 함수. 이전에 여러 번 나왔기 때문에 설명 생략. 23~25. 만약 선택된 배열(lot[num])에 0이 아닌 숫자가 있는 경우 >> selected 배열에 해당 숫자를 넣고 선택된 배열에 0을 넣는다. 이렇게 설정하면 설령 다음에 해당 배열이 선택되더라도 if문에서 필터링되게 된다. 27. 만약 중복된 숫자가 걸리면 전체 루프를 적어도 한 번은 돌려야 하므로 j값을 감소시킨다. 30~37도 같은 방식의 메커니즘이므로 생략.39. 나머지는 그냥 하면 되는데 여기서 .sort의 숨겨진 기능?을 소개해야 한다. .sort( )는 문자열이 아닌 숫자형 배열을 다룰 때 사용하기 위해 특별한 “인자”를 받을 수 있도록 되어 있다. arr.sort(function(a, b){return a-b;}) function의 파라미터 a, b에는 서로 인접한 두 배열의 값이 들어가고, 만약 return을 통해 반환된 a-b 값이 음수일 경우 순서를 바꾸고, 양의 값이나 0일 경우에는 잠자코 두도록 설정되어 있다. 자세한 원리는 몰라도 형식만이라도 알아두자.아무튼 이렇게 다 됐어. 여담으로 #09에서는 굳이 String Build라는 함수를 정의하고 배열을 텍스트로 바꿨지만 위의 예처럼 배열을 그대로 나열할 수도 있다. 첨부파일 1602578873489.txt 파일 다운로드 내 컴퓨터 저장네이버 MYBOX에 저장참고 파일