Page History
Table of Contents |
---|
위경도로 거리구하기
Code Block | ||||
---|---|---|---|---|
| ||||
from math import sin, cos, sqrt, atan2, radians # approximate radius of earth in km def getDistance(_lat1,_lon1,_lat2,_lon2): R = 6373.0 lat1 = radians(52.2296756( float(_lat1) ) lon1 = radians(21.0122287( float(_lon1) ) lat2 = radians(52.406374 float(_lat2) ) lon2 = radians(16.9251681( float(_lon2) ) dlon = lon2 - lon1 dlat = lat2 - lat1 a = sin(dlat / 2)**2 + cos(lat1) * cos(lat2) * sin(dlon / 2)**2 c = 2 * atan2(sqrt(a), sqrt(1 - a)) distance = R * c print("Result:", distance) print("Should be:", 278.546, "km") return distance dist = getDistance(52.2296756,21.0122287,52.406374,16.9251681) a=999 |
문장간 유사도측정(edit distance)
Code Block | ||||
---|---|---|---|---|
| ||||
def edit_distance(_first , _second): first_len , second = _first.replace(' ','') second= _second.replace(' ','') first_len = len(first) , second_len = len(second) if first_len > second_len : first , second = second , first first_len , second_len = second_len , first_len print(first_len) print(second_len) current = range(first_len+1) for i in range(1,second_len+1): previous , current = current , [i]+[0]*second_len for j in range(1,first_len+1): add , delete = previous[j]+1 , current[j-1]+1 change = previous[j-1] if first[j-1] != second[i-1]: change = change + 1 current[j] = min(add , delete , change) return current[first_len] sFirstStr = sys.argv[1] sSecondStr = sys.argv[2] sFirst = unicode(sFirstStr,'cp949') sSecond = unicode(sSecondStr,'cp949') nDistanceValue = edit_distance(sFirst,sSecond) print(nDistanceValue) |