Coding/Python 삽질기2021. 1. 17. 23:23

인터넷 커뮤티니에서 본 모대학 수학문제를 풀어 보았다.

약간 변경해서, 1^1 + 2^2 + ... + 10000^10000 의 결과 중 끝 50자리를 출력하는 형식으로 바꿔보았다.

from multiprocessing import Pool
import time

MAX_COUNT = 10**50


def mypower(num):
    result = 1
    
    for i in range(num):
        result = result * num
        if result < MAX_COUNT:
            continue
        result = result % MAX_COUNT         
        
    return result
    

def get_sum(num):
   
   assert num > 0
   
   numbers = [i for i in range(1, num+1)]
   assert len(numbers) == num
   
   pool = Pool(processes=4)
   return sum(list(pool.map(mypower, numbers))) % MAX_COUNT
   

if __name__ == '__main__':
    start_time = time.time() 
    print(get_sum(10000))
    print(time.time() - start_time)
    
16026394753230301057223656223127837280816237204500
3.0160417556762695
Posted by chobocho
TAG Python, 수학

댓글을 달아 주세요

Coding/Python 삽질기2020. 10. 28. 22:32

GetFileList : 폴더 안의 파일 이름 검색 앱

 

Source code:

github.com/chobocho/GetFileList

 

chobocho/GetFileList

Get file list. Contribute to chobocho/GetFileList development by creating an account on GitHub.

github.com

 

Download:

 

Posted by chobocho

댓글을 달아 주세요

Coding/Python 삽질기2020. 8. 25. 23:00

주말을 이용해 Flappy bird의 clone을 Pygame으로 간단히 구현해 보았다.

전체 소스코드는 아래에서 다운 받을 수 있다

Source code : https://github.com/chobocho/paperplane

 

chobocho/paperplane

Paper airplane game. Contribute to chobocho/paperplane development by creating an account on GitHub.

github.com

Game file :

paper_plane_v0.1.zip
8.37MB

 

스크린 샷

 

1. 기본구조 

 

Source code : https://github.com/chobocho/paperplane

 

chobocho/paperplane

Paper airplane game. Contribute to chobocho/paperplane development by creating an account on GitHub.

github.com

'Coding > Python 삽질기' 카테고리의 다른 글

[Python] 폴더 안의 파일 이름 검색하기  (0) 2020.10.28
[Pygame] Paper Plane Game 만들기  (0) 2020.08.25
[Python][AI] XOR 예제  (0) 2020.08.03
[Python][AI] Perceptron 예제  (0) 2020.07.28
Posted by chobocho

댓글을 달아 주세요

Coding/Python 삽질기2020. 8. 3. 22:33

아래와 같이 1개의 은닉층을 가진 신경망을 구성해 보았습니다.

 

import numpy as np

def sigmoid(x):
    return 1/(1+np.exp(-x))


def DeltaSGD(W1, W2, X, D):
    alpha = 0.9
    
    idx = 0
    for k in X:
        a1 = np.dot(W1, k)
        z1 = sigmoid(a1)
        
        a2 = np.dot(W2, z1)
        y = sigmoid(a2)
        
        e = D[idx] - y
        delta = y * (1-y) * e
        
        e1 = W2 * delta
        delta1 = z1 * (1-z1) * e1

        dw1 = alpha * delta1
        dw1 = dw1.reshape(4,1)
        x = k.reshape(1,3)
        W1 += np.dot(dw1, x)
        
        dw2 = alpha * delta * z1
        W2 += dw2
        idx+=1

        
def Train(epoch, x, y, W1, W2):
    for ep in range (epoch):
        DeltaSGD(W1, W2, x, y)

        
def main():
    W1 = np.random.randn(4,3)
    W2 = np.random.randn(4)
    x = np.array([[0, 0, 1], [0, 1, 1], [1, 0, 1], [1, 1, 1]])
    y = np.array([0, 1, 1, 0])
    trainCount = 10000

    print('---Before Training---')
    print(W1)
    print(W2)
    print('---After Training---')
    Train(trainCount, x, y, W1, W2)
    print(W1)
    print(W2)
    
    print('---Result---')
    for k in x:
        a1 = np.dot(W1, k)
        z1 = sigmoid(a1)
        
        a2 = np.dot(W2, z1)
        y = sigmoid(a2)
        print(y) 
        
        
if __name__ == '__main__':       
    main()        
---Before Training---
[[-0.82542712 -0.65157477  0.09131077]
 [-0.12367401  1.07601221 -1.43941252]
 [-1.00401084 -0.04547823  0.97194216]
 [ 0.02719329 -0.22932678 -0.45809196]]
[ 0.16840571 -0.55206913  1.75255171 -0.54203599]
---After Training---
[[-6.3608461  -6.35976778  2.71126418]
 [ 3.61918383  3.62562196 -5.65337702]
 [-3.70117648 -3.70158904  5.76910815]
 [-1.51981715 -1.56682777 -0.58710802]]
[-11.12882426  -6.71646542   6.50908732  -1.52377049]
---Result---
0.01083108954199271
0.9896067125952175
0.9895881791368779
0.01040259419256147

 

'Coding > Python 삽질기' 카테고리의 다른 글

[Pygame] Paper Plane Game 만들기  (0) 2020.08.25
[Python][AI] XOR 예제  (0) 2020.08.03
[Python][AI] Perceptron 예제  (0) 2020.07.28
[Python] fisher-yates shuffle  (0) 2020.07.20
Posted by chobocho
TAG AI, ml, Python

댓글을 달아 주세요

Coding/Python 삽질기2020. 7. 28. 23:56

 

import numpy as np

def sigmoid(x):
    return 1/(1+np.exp(-x))


def DeltaSGD(W, X, D):
    alpha = 0.9
    dwSum = np.array([0] * 3)
    
    idx = 0
    for k in X:
        a1 = np.dot(k, W)
        y = sigmoid(a1)
        
        e = D[idx] - y
        delta = y * (1-y) * e
        
        dw = alpha * delta * k
        W += dw
        idx+=1

        
def Train(epoch, x, y, W1):
    for ep in range (epoch):
        DeltaSGD(W1, x, y)

        
def main():
    W1 = np.random.randn(3)
    x = np.array([[0, 0, 1], [0, 1, 1], [1, 1, 1], [1, 0, 0]])
    y = np.array([1, 1, 1, 0])

    Train(10000, x, y, W1)
    
    for k in x:
        a1 = np.dot(k, W1)
        z1 = sigmoid(a1)
        print(z1)    
        
        
if __name__ == '__main__':       
    main()  

 

0.9962960119369554
0.9999259998523653
0.9929612087250037
0.010332095384834877

'Coding > Python 삽질기' 카테고리의 다른 글

[Python][AI] XOR 예제  (0) 2020.08.03
[Python][AI] Perceptron 예제  (0) 2020.07.28
[Python] fisher-yates shuffle  (0) 2020.07.20
강아지 나이 계산기  (0) 2020.07.16
Posted by chobocho
TAG AI, ml, Python

댓글을 달아 주세요

Coding/Python 삽질기2020. 7. 20. 23:27
import random

number = [1, 2, 3, 4, 5, 7, 8]

def shuffle(number):
   for i in range (len(number)-1, 0, -1):
       j = random.randint(0, i)
       number[j], number[i] = number[i], number[j]
    
shuffle(number)

 동작을 보면 아래와 같이 변화 한다

[1, 2, 3, 4, 5, 7, 8]
[1, 8, 3, 4, 5, 7, 2]
[1, 8, 3, 4, 5, 7, 2]
[1, 8, 3, 4, 5, 7, 2]
[1, 8, 3, 4, 5, 7, 2]
[3, 8, 1, 4, 5, 7, 2]
[3, 8, 1, 4, 5, 7, 2]

* 참고: https://en.wikipedia.org/wiki/Fisher%E2%80%93Yates_shuffle

'Coding > Python 삽질기' 카테고리의 다른 글

[Python][AI] Perceptron 예제  (0) 2020.07.28
[Python] fisher-yates shuffle  (0) 2020.07.20
강아지 나이 계산기  (0) 2020.07.16
[Python] 소인수 분해  (0) 2020.07.10
Posted by chobocho

댓글을 달아 주세요

Coding/Python 삽질기2020. 7. 16. 00:19

강아지 나이를 인간 나이로 바꿔주면 위와 같은 그래프가 나온다고 한다.

강아지 나이 와 인간 나이 변환표

소스코드: https://github.com/chobocho/dog_age

'Coding > Python 삽질기' 카테고리의 다른 글

[Python] fisher-yates shuffle  (0) 2020.07.20
강아지 나이 계산기  (0) 2020.07.16
[Python] 소인수 분해  (0) 2020.07.10
[ChoboTimer] Version 0.17 Release  (0) 2020.04.22
Posted by chobocho

댓글을 달아 주세요

Coding/Python 삽질기2020. 7. 10. 00:07
import math

def get_prime_factor(number):
    result = []

    if number < 2:
        return result

    while number % 2 == 0:
        result.append('2')
        number /= 2

    for i in range (3, int(math.sqrt(number)) + 1, 2):
        if number % i == 0:
            result.append(str(i))
            number /= i

    if number > 2:
        result.append(str(int(number)))

    return result

def testPrimeFactor():
    assert len(get_prime_factor(-1)) == 0
    assert "2x2x3" == 'x'.join(get_prime_factor(12))
    assert "2x2x5x5" == 'x'.join(get_prime_factor(100))
    assert "67x337x2797x14251" == 'x'.join(get_prime_factor(900000001213))

if __name__ == '__main__':
    testPrimeFactor()

'Coding > Python 삽질기' 카테고리의 다른 글

강아지 나이 계산기  (0) 2020.07.16
[Python] 소인수 분해  (0) 2020.07.10
[ChoboTimer] Version 0.17 Release  (0) 2020.04.22
[Python] venv 사용  (0) 2020.04.15
Posted by chobocho

댓글을 달아 주세요

Coding/Python 삽질기2020. 4. 22. 23:28

ChoboTimer V0.17 으로 업데이트 하였습니다. 

* 타이머에 메모를 넣을수 있도록 수정하였습니다.

chobotimer_td2.zip
8.66MB

ChoboTimer에 대한 자세한 내용은 아래 링크를 참고하세요.

https://chobocho.tistory.com/2461431

'Coding > Python 삽질기' 카테고리의 다른 글

[Python] 소인수 분해  (0) 2020.07.10
[ChoboTimer] Version 0.17 Release  (0) 2020.04.22
[Python] venv 사용  (0) 2020.04.15
[ChoboTimer] 타이머 앱 만들기  (0) 2020.02.29
Posted by chobocho

댓글을 달아 주세요

Coding/Python 삽질기2020. 4. 15. 19:03
// 만들기
python -m venv ./snake_game

// 실행
cd \snake_env\Scripts
activate.bat

// 종료하기
deactivate.bat

'Coding > Python 삽질기' 카테고리의 다른 글

[ChoboTimer] Version 0.17 Release  (0) 2020.04.22
[Python] venv 사용  (0) 2020.04.15
[ChoboTimer] 타이머 앱 만들기  (0) 2020.02.29
Minim / 간단한 메모관리 툴 (TK3)  (0) 2020.01.16
Posted by chobocho

댓글을 달아 주세요