본문

파이썬 독학기 [Broken Reports] - Empire of Code

import string
import re
def golf(broken_report):
br = broken_report.split(",")
report = []
for i in br:
x = 0
for x in range(len(i)-1):
if re.findall('[A-Z]+',i[x]):
if re.findall('[1-9]+',i[x+1]):
report.append(i[x]+i[x+1])
m = []
for x in string.ascii_uppercase:
for y in range(1,10):
m.append("%s%d" % (x, y))

c = 0
for j in report:
c += (m.index(j)+1)
return c

짧게 하는게 목표인데 정규표현식 사용하는 건 맞는거 같은데 수치 구하는 방식이 잘못되었나봐요. 

100자 이하로 작성하는게 목표인데.. 역시

https://gist.github.com/a1ip/의 힘들 빌려야 하겠죠? ㅋㅋ

import re

golf=lambda r:sum([ord(a)*9-585+int(b) for a,b in re.findall('[A-Z][1-9]',r)])

우워아.. 너무한 거 아닌가ㅋㅋㅋㅋ

lambda함수(간단한 함수 정의 def랑 비슷함)에 ord(ascii구하는 내장함수), 리스트 컴프리헨션이군요. 

이정도 함수를 쉽게 써낼려면 고민을 많이 해봐야겠어요.. ㄷㄷㄷ


댓글