이것은 파이썬에서 골프 최적화를 연습하는 데 어려움이 있습니다. 몇 가지 문자를 제거하는 재사용 가능한 트릭과 바로 가기입니다. 많은 사람들이 파이썬 골퍼들에게 친숙 할 것이며 파이썬 팁의 일반적인 아이디어를 사용할 것 입니다. 이러한 기능 중 일부는 보지 않는 한 존재하지 않을 수도있는 Python 관련 기능을 사용하므로 갇힌 경우 팁을 살펴보십시오.
목표 : 10 가지 문제가 있습니다. 각 문제는 여러분이 최적화 할 수있는 Python 코드의 참조 스 니펫과 코드 설명입니다. 목표는 짧지 만 기능적으로 동등한 것으로 다시 작성하는 것입니다.
최소화하려는 점수는 모든 코드 조각의 총 길이입니다. 참조 스 니펫의 길이는 150입니다. Tiebreaker는 가장 빠른 게시물입니다.
답변 게시 : 각 문제에 대해 코드와 문자 수를 게시하십시오. 더 짧은 것을 찾지 못하면 참조 스 니펫을 게시 할 수 있습니다. 답변을 게시 할 때 다른 사람의 답변을 보지 않도록 고안되었습니다. 개별 문자 수를 포함하여 각 개별 문제에 스포일러 태그를 지정하십시오. 공개 된 총 개수를 그대로 둘 수 있습니다. 솔루션을 손상시키지 않고 새로운 솔루션을 게시하십시오.
적법성에 대한 세부 사항 : 기능적 동등성은 코드의 동작에 영향을주지 않고 프로그램에서 코드를 대체 할 수 있음을 의미합니다 (표현의 일부로 메모리 사용 및 연산자 우선 순위 등을 무시 함). 식은과 동등한 값을 생성해야합니다 ==
. 참고하십시오 1.0==1==True
. 달리 명시되지 않는 한 코드에는 부작용이 없어야합니다. 문제가 버전에 따라 다르지는 않지만 각 경우에 대해 Python 버전을 지정할 수 있습니다.
문제 1 : 목록에 L
7 개 이상의 요소가있는 한 계속 반복
# 16 chars
while len(L)>=7:
문제 2 : 두 개의 수레 여부를 확인 x
하고는 y
모두 긍정적이다.
# 11 chars
x>0 and y>0
문제 3 : 부울 b
이 true 인 경우 의 첫 번째 요소를 제거하십시오 L
. 그렇지 않으면 변경하지 마십시오.
# 12 chars
if b:L=L[1:]
문제 4 : 비어 있지 않은 L
숫자 목록 의 모든 요소 가 같은지 확인하십시오. 이 문제의 경우 목록을 수정해도됩니다.
# 22 chars
all(x==L[0]for x in L)
문제 5 : n
목록 에 번호 L
가 L
이미있는 경우에만 번호 를 목록 끝에 추가하십시오 .
# 16 chars
if n in L:L+=[n]
문제 6 : float의 부호를 표현하십시오 x
. +1
양수, 0
0, -1
음수.
# 20 chars
abs(x)/x if x else 0
문제 7L
부울 목록 인의 첫 번째 요소가 이면 루프를 계속합니다 True
. L
비어 있으면 중지하십시오 .
# 17 chars
while L and L[0]:
문제 8 : n
1보다 크면 루프를 계속 하십시오. 숫자 n
는 양의 정수 여야합니다.
# 10 chars
while n>1:
문제 9 : 문자열로 표시된 정수 s
가 음수 인지 확인하십시오 (즉, '-'로 시작).
# 9 chars
s[0]=='-'
문제 10 : 부울 변환 b
에 "Win"
/ "Lose"
와, True
-> "Win"
와 False
-> "Lose"
.
# 17 chars
["Lose","Win"][b]
경고 : 아래 스포일러는 스스로 해결하려면 아래로 스크롤하지 마십시오.
문제에 대한 최적의 점수를 알고 싶은 경우 :
문제 1 :
12
문제 2 :
5
문제 3 :
7
문제 4 :
13
문제 5 :
13
문제 6 :
8
문제 7 :
12
문제 8 :
9
문제 9 :
5
문제 10 :
15