준영이가 만든 프로그램 목록

손준영이 만든 프로그램 목록들이다.

## **[ Python ]**

**ASCII CODE.py**

문장을 입력하면 각 문자의 아스키 코드를 출력한다. ( 예시 : Hello! = 72 / 101 / 108 / 108 / 111 / 33 )

**문장 섞기.py**

문장을 입력하면 띄어쓰기를 기준으로 나눠진 단어의 글자들을 무작위로 배열한다. ( 예시 : uJgnYuon Is raneoK)

**레드썬.py**

파이썬으로 만든 나만의 코딩 언어이다. 새벽에 영감이 떠올라 만들었으며 한글로 구성돼있다.

변수 생성, 출력, 시간 보기 기능이 있다. 또한 알고리즘이 단순하여 에러가 별로 없다.

**레드썬\_V2.py**

레드썬을 바꾼 형태로 코드에 주석을 처리하여 보기 편하고 "횟수반복"기능이 추가되었다. 시계 기능이 사라졌다.

반복 명령어의 문법은 Python이 아닌 C나 Java문법이다. ( Python : **for i in range(1, 10):** / C, Java : **for(int i = 0;i<=10;i++) { }** )

**raracosse.py**

파이썬으로 만든 나만의 코딩 언어이다. 이것 또한 새벽에 만들어졌으며 2022-09-06 최종 완성되었다. 알파벳으로 구성되어있고 띄어쓰기 대신 세미콜론( ; )을 사용한다.

변수 생성, 문자/숫자 출력으로 된 간단한 언어이다. 하지만 변수는 최대 5개까지 있고 각 변수마다 고유 이름과 사용될 때 이름이 정해져있다. ( raracosse.py 설명 바로가기 )

[ 다운로드 링크 ]

**TTS.py**

문장을 입력하고 출력할 언어를 설정하면 그 언어로 문장을 읽는다 ( Text To Speach ). mp3 파일을 저장하고 그것을 실행하는 원리이다.

**Space 연타.py**

게임을 하다 짜증이나 만든 space바 연타 프로그램이다. space바 말고 다른 키를 입력하게 할 수 있다. 0.1초 간격으로 입력한다.

**가위바위보.py**

구자윤이 생각해낸 알고리즘을 좀 더 추가하여 만들었다. 구자윤은 천재임에 틀림없다

\*구자윤 알고리즘 설명 :

상대가 1명일 때를 가정하였을 때 내가 이기는 상황과 지는 상황, 비기는 상황은 모두 3가지이다. 그렇다면 전체 상황을 3x3인 9로 볼 수 있고 이길 확률, 질 확률, 비길 확률 모두 ⅓이다. 구자윤 알고리즘은 ⅓확률에 초점을 맞췄다. 내가 가위/바위/보 중 하나를 고른다고 해서 내가 이길 확률이 ⅓에서 다른 확률로 변하지 않는다. 이것은 내가 ⅓ 확률로 이긴다는 것과 내가 이길 확률을 조작할 수 없다는 것을 의미한다. 내가 무엇을 고르든 ⅓ 확률로 결괏값이 정해지니 이를 다르게 생각한다면 내가 고른 값을 무시하고 결괏값을 내놓는 것과 다름없게 된다. 내가 고른 값을 결괏값에 반영하지 않는다는 것은 어떻게 보면 어려워 보이지만 사실 생각해보면 값을 받는 척 하고 결괏값만 내놓으면 된다는 의미와 다르지 않다. 여기서 **구자윤 코드**가 나와야 한다. 구자윤 코드는 **구자윤 알고리즘**을 통해 나온 코드인데 이는 아래와 같다. ( 파이썬으로 작성됨 )

`**import random as rd # 난수 생성 기능 받기**`

`**result = ["승리", "패배", "비김"] # 결괏값 모음집**`

`**while True: # 무한 반복**`

`**input() # 값 받는 척 하기**`

`**print(rd.choice(result))**`

`**# 결괏값 모음집에 있는 값들 중 하나 고르고 그 값 출력하기**`

코드의 줄 길이는 여섯 줄이며 설명 글을 제외한다면 다섯 줄 밖에 안된다. 실제 가위바위보를 구연하는 코드는 19줄이며 위 코드보다 더 복잡한 알고리즘과 기능을 사용한다. 흔히 위 코드를 "참신한 방법"이라고 부르는데 이는 남들이 가진 고정된 틀을 깬 코드라고 볼 수 있다. 지금은 코드의 줄 차이가 13줄밖에 안되지만 매우 복잡한 코드인 경우 몇십줄이 없어지거나 더 효율적인 계산을 할 수 있게 되어 더 빠르게 계산을 할 수 있도록 만들 수 있다.

**칭찬.py**

카카오톡에서 이모티콘을 칭찬하기 위해 만든 프로그램이다. 한번에 2번 클릭이 되며 F1을 누르면 꺼진다.

**몰컴.py**

눈치코치와 비슷하다. 하지만 눈치코치는 프로그램을 숨기는 것이고 이 프로그램은 검은색으로 화면을 가려버린다. F5 버튼을 눌러 키고 끈다.

**Prime Number.py**

소수를 구하는 프로그램이다. 특정 수를 입력하면 그 수 이하의 소수를 구한다.

2부터 특정 수까지 모든 수를 계산한다. 계산하는 알고리즘은 지금까지 구한 소수로 그 수를 나누었을 때 나누어 떨어지지 않음으로 소수를 구한다. 2같은 경우 지금까지 구한 소수가 없으므로 자동적으로 2는 소수가 된다.

**암호화.py**

입력받은 문장을 아스키 코드로 분해한 후 각각의 아스키 코드값과 key를 더한 값을 넣는다. 이 때 key는 1~100까지의 정수중 하나가 된다.

( 하지만 key값을 1부터 100까지의 모든 정수로 대입시키는 방법으로 뚫을 수 있다. )

**영어 모음 빼기.py**

학교 영어 시간에 영감을 얻어 만들게 되었다. 영어 모음인 aeiou 대문자 소문자 모두를 "\_"로 바꾼다.

( JunYoung Is Korean >> J\_nY\_\_ng \_s K\_r\_\_n )

**허수 문제.py**

i와 j를 구분하기 힘든점을 이용하여 만든 프로그램이다. 단순히 ???를 계산하면 되며 간단한(?) 사칙연산 문제를 제공한다.

또한 생산된 문제를 자동으로 복사해준다.

[ 다운로드 링크 ]

**< 문제 예시 >**

**[ i = √-1, j = 2 ]**

**( i x i x i x j x i x j x i x i x i x j x j x i x i x j x i x i x j x i x j x j x j x j x i x i x i x j x i x j x i x i x j x i x j x i x i x i x i x j x i x j x i x j x i x j x i x j x j x j x i x i x j x i x j x i x i x i x i x i x i x i x j x i x j x j x i x i x i x j x j x i x i x j x j x j x i x i x j x i x j x i x i x i x j x j x j x j x i x i x j x j x j x j x i x i x j x j x j x j x j x j x j x i x i x j x j x j x i x i x j x j x i x j x i x j x i x j x j x i x j x j x j x j x i x i x i x j x j x i x j x j x i x j x i x j x j x j x i x j x j x j x j x j x j x i x i x i x i ) + ( j x i x j x j x j x i x i x j x j x i x i ) + ( i x i x j x j x i x j x j x j x i x j x i x i x j x i x i x i x j ) + ( i x j x j x i x j x i x i x j x j x i x i x j x j x j x j x i x j x i x j x i x j x i x i x i x i x j x i x j x j x i x i x i x j x i x j x j x j x j x j x i x i x j x j x j x i x j x i x i x j x i x j x i x j x i x i x j x i x j x j x j x j x i x i x j x j x i x j x i x j x j x i x i x j x j x i x j x j x i x j x j x j x i x i x j x i x j x i x i x i x i x i x i ) + ( j x j x i x j x j x j ) + ( i x i x i x j x i x i x j x j x j x j x i x j x j x i x i x i x i x j x j x i x i ) + ( i x i x i x i x j x j x i x i x j x i x j x j x i x j x j x i x i x i x j x i x j x j x i x j x j x i x i x i x j x j x i x j x i x i x j x j x j x j x i x i x i x j x j x i x i x i x j x j x j x j x i x i x i x i x j x i x j x j x i x i x i x i x j x i x i x i x i x i x i x i x j x j x j x i x j x j x i x j x j x j x i x j x i x i x j x j x j x j x j x i x j x j x j x j x i x j x j x j x j x i x i x i x i x i x j x j x j x i x i x j x j x j x j x i x i x j ) = ???**

\* 정답 : 37778931862957161710080 + 576601489791779168√-1

**허수 문제 푸는 프로그램.py**

위 문제를 풀어주는 프로그램이다. 원리는 괄호를 통해 항을 구분하고 i와 j의 개수를 통해 계산한다.

[ 다운로드 링크 ]

## **[ C ]**

**Collatz conjecture.c**

콜라츠 추측의 알고리즘으로 계산하는 프로그램이다.

## **[ JAVA ]**

**Memo.jar ( compile )**

마인크래프트에서 문장이나 단어를 입력/저장/출력 하기 위한 플러그인이다. 이런 플러그인은 최초일 것 같다.

============================== 준영이가 날렸던 100줄 코드 ==============================

**Rlqhsxpa.jar ( compile )**

마인크래프트에서 기본으로 지급하는 아이템들을 주는 명령어가 담긴 플러그인이다. fly, nightvision, haste, kill, clear가 있다.

**< Rlqhsxpa.jar 명령어들 >**

**rlqhsxpa/기본템/ㄱㅂㅌ** : 철 갑옷들 + 돌 도구들 + 조약돌 64개 + 나무 원목 32개를 지급한다.

**fly** : 겉날개 + 폭죽 로켓 128개를 지급한다.

**nightvision** : 야간투시를 준다. ( Lv = 1; Time = 1000000; Ver = False )

**haste** : 성급함을 준다. ( Lv = 100; Time = 1000000; Ver = False)

**kill** : 명령어를 입력한 플레이어를 죽인다. 배고픔 채우기/리스폰 하기/집으로 돌아가기 등을 하기 위해 사용한다.

**clear** : 인벤토리에 있는 모든 아이템들을 없앤다.

============================== 준영이가 날렸던 100줄 코드 ==============================

**Collatz conjecture.java**

콜라츠 추측을 java언어로 만든 것이다. C와의 차이점은 속도이다.

**< Collatz conjecture 알고리즘 >**

C : 1이 될 때까지 계산만 한다. 계속 계산을 하며 계산 결과를 출력해야 하므로 속도가 떨어진다.

Java : 계산한 값이 계산하고 있는 수보다 작아지면 콜라츠 추측에 대해 참이 되는 라고 판단 후 다음 수를 계산한다. 절반 이상을 건너뛰는 것이기 때문에 확실히 빠르다.

**< Java 알고리즘 설명 >**

계산하고 있는 수의 크기가 계산한 값보다 크면 그 수는 이미 계산된 값으로 판단하고 계산을 건너뛴다.

**< 콜라츠 추측 알고리즘 >**

만약 특정 수가 짝수 -> 2로 나눈다

만약 특정 수가 홀수 -> 3을 곱한 후 1을 더한다

( 위의 알고리즘을 반복한다면 4 -> 2 -> 1 -> 4 -> 2 -> 1... 사이클이 무한 반복된다는 것이 콜라츠 추측이다 )

( 홀수 알고리즘을 >, 짝수 알고리즘을 >>이라고 하자... )

1 끝

2 >> 1 끝

3 > 10 >> 5 > 16 >> 8 >> 4 >> 2 >> 1 끝

4 >> 2 >> 1 끝

5 > 16 >> 8 >> 4 >> 2 >> 1 끝

이렇게 1~5의 숫자들을 콜라츠 추측의 알고리즘대로 계산하였다. 1~5의 숫자들 중에서 5를 보자.

5의 계산과정은

5 > 16 >> 8 >> 4 >> 2 >> 1 이다. 이 때 4번째 계산에서 4가 나왔으므로 java에서의 실제 계산은

5 > 16 >> 8 >> 4 끝 이 된다. 왜 초기값 5보다 작은 계산값 4가 나오면 통과인것일까?

이는 간단하다. 4는 이미 전에 계산되었던 수 이기 때문이다. 만약 4가 콜라츠 추측 알고리즘으로 계산하였을 때

1이 되지 않는다면 4 다음 수인 5로 넘어갈 수가 없다. 왜냐하면 x값을 계산했을 때 1이 된다면 그 다음 수인 x+1값을 계산하는 것으로

프로그램을 만들었기 때문이다. 정리해보면 다음과 같다.

"초기값보다 작은 수는 이미 계산되었고, 그 값이 1이 되었기 때문에 초기값을 계산하고 있는 것이다."

## **[ 엄랭 ]**

**구구단.umm**

말 그대로 구구단이다. 2~9단까지 있으며 각 단에는 1~9까지의 단계로 구성돼있다.

( 결과 당연히 잘나옴 (～￣▽￣)～)

## **[ 설명 ]**

이 문서는 프로그램을 만들 때 마다 업데이트 할 예정이고, 알고리즘이 궁금한 프로그램이 있다면

편집을 통해 문서 맨 아래에 넣거나 카톡을 해주면 자세한 내용을 추가할 예정이다.

또한 준영이가 만들 프로그램을 추천해준다면 상품을 줄 예정이다.
< 프로그램 추천 설명 >

**< 프로그램 추천 설명 >**

추천할 프로그램은 간단한 알고리즘으로 되어있는 프로그램만 가능하다.

추천한 프로그램을 준영이가 완성시켰을 때만 상품을 주며 상품은 준영이의 지갑 사정에 따라

바뀌거나 밀릴 수 있다 ( 상품은 한 아이디어당 1개 )

## **[ 상품 목록 ]**

1. 바나나맛 우유 ( 1개 )
2. 마이쮸 ( 맛 고를 수 있음, 1개 )
3. 새콤달콤 ( 맛 고를 수 있음, 1개 )

## **[ 업데이트 목록 ]**

2022-08-20 1:00 ~ 3:31 : 문서의 시작. 여러 개의 기본적인 틀을 만들었다.

2022-08-25 2:16 ~ 2:33 : "기본값"을 "초기값"이라 수정. 준영이가 날렸던 100줄 코드와 연관된 부분에 링크를 걸었다.

2022-12-06 1:00 ~ 2:32 : 시각 정보 수정 / 이해하기 힘든 문장 수정 / 새로 만든 코드 내용 추가 ( 허수 문제.py, 허수 문제 푸는 프로그램.py ) / raracosse.py 다운로드 링크 추가

## **[ 프로그램이 궁금해! 목록 / 피드백 목록 ]**

( 각 숫자에 프로그램에 대해 알고싶은 내용을 적으면 끝! )

1. 관련 문서: 손준영, 준영이가 날렸던 100줄 코드

## **[프로그램 추천 목록]**

1. 구자윤이 추천한것: 애인이 생길 확률 계산기. (나의 외모를 f라 가정, 키를 h라 가정, 재력을 m이라 가정하고, 성격을 c라고 했을 시, 현재 전방 *n*km 이내에 거주하는 동성의 수/ 현재 전방 *n*km 이내에 거주하는 이성의 수 \* {(f^2\* 2h\* m\* c/2)/현재 전방 *n*km 이내에 거주하는 동성의 (f^2\* 2h\* m\* c/2)의 평균}을 계산한 후, 현재 전방*n*km 이내에 거주하는 동성의 수 전체에 대한 위 결과를 대입해 백분율로 나타낸 함수) 꼭 만들어주셈. 참고로 맨 처음에 커플이신가요? 물어보고 예 누를시 악성코드 실행해야함.

**[ 답변 ] :**