골프 연습 : Pyth [닫기]


10

이것은 Pyth에서 골프를 칠 때 사용할 수있는 트릭과 최적화에 대한 도전입니다. Pyth 골퍼는 관련된 많은 트릭을 인식 할 수 있습니다. 그러나 익숙하지 않은 접근 방식과 구성이 관련 될 수 있으므로 갇힌 경우 Pyth 팁Pyth Character Reference 를 살펴보십시오. 여기에서 솔루션을 테스트 할 수 있습니다 .

목표 : 최적화 할 Pyth 스 니펫이있는 8 가지 문제가 있습니다. 당신의 목표는 동등한 것이지만 더 짧은 것을 만드는 것입니다. 참조 솔루션은 총 80 바이트입니다. 당신의 목표는 가능한 한 많이 이길 것입니다.

우승자는 총 바이트 수가 가장 적은 8 가지 문제를 모두 해결하는 제출물로 이동합니다. Tiebreaker는 이전 게시물입니다.

답변 : 총점을 제외하고 전체 답변을 망치십시오. 자신의 의견을 제출하기 전에 다른 사람의 답변을 보지 마십시오.

각 제출물은 모든 문제에 답하고 해당 바이트 수를 제공해야하지만 개선 할 수없는 경우 참조 구현을 자유롭게 사용하십시오.

상세 사항 : 특정 값 또는 출력에 대한 질문 통화, 경우 q평등이 요구되는, 그래서 1!0동일합니다. 질문에 조건이 참인지 테스트해야하는 경우 조건이 참이면 출력이 진실이어야하고 조건이 거짓이면 거짓이어야하지만 그 이상으로 제한되지 않습니다. true를 false로, false를 true로 바꿀 수 없습니다. 질문에 인쇄 할 것이 필요한 경우, 후행 줄 바꿈을 제외하고는 인쇄 할 수 없습니다.

모든 답변은 이 질문의 게시 시점 에서 가장 최근의 Pyth 커밋에 유효해야합니다 .

문제 1 : Q에 세트가 주어지면 Q의 요소를 포함하는 목록을 순서대로 출력하십시오.

; 3 bytes
f1Q

문제 2 : 목록을 출력합니다 [1, 1, 0, 0, 1, 1, 0].

; 9 bytes
[J1JZZJJZ

문제 3 : Q에 양의 정수가 주어지면 모든 Q 자릿수가 양수가 아닌지 테스트합니다 (0이 아님).

; 7 bytes
!f!TjQT

문제 4 : Z의 문자열, z는 모든 인용 부호가 포함되어 있는지 여부를 테스트를 감안할 때 - "'.

; 9 bytes
|}\'z}\"z

문제 5 : Q = 1을 'Win'에, Q = 0을 'Tie'에, Q = -1을 'Lose'에 매핑하십시오.

; 20 bytes
@["Tie""Win""Lose")Q

문제 6 : 인쇄 0123456789.

; 6 bytes
sm`dUT

문제 7 : z에 문자열이 주어지면 반전 횟수를 세십시오.

(인덱스 ij경우 반전을 형성 i < j하지만 z[i] > z[j]).

; 17 bytes
ssmm>@zd@zkrdlzUz

문제 8 : z로리스트가 주어지면 반복되는 인접한 요소의 수를 세십시오.

; 9 bytes
lfqFT.:z2

@ user1737909 정답입니다. 항상 참인 함수를 f1Q필터링 Q하므로 항상 세트의 모든 요소를 ​​출력합니다. f해당 질문의 목표를 충족시키는 목록을 출력합니다.
isaacg

부품 간의 상호 작용이없는 다중 부품 챌린지가 허용되지 않기 때문에이 질문을 주 제외로 닫았습니다. meta.codegolf.stackexchange.com/a/8464/45941
Martin Ender

답변:


9

52 바이트

문제 1 : 2 바이트

    SQ

문제 2 : 5 바이트
    jC\f2

문제 3 : 4 바이트
    -0`Q
문제 4 : 6 바이트
    @z+N\'
문제 5 : 17 바이트
    %3>"LTWoiisene"hQ
또는
    @c3"LoseTieWin"hQ
문제 6 : 3 바이트
    pMT
문제 7 : 9 바이트
    s>R_d.cz2
문제 8 : 6 바이트
    sqVztz
문제 4에 대한 @xnor의 솔루션과 광산 (6 바이트 모두)을 결합하면 멋진 4 바이트 솔루션을 얻을 수 있습니다. 따라서 48 바이트가 가능합니다.


xnor가 유효하지 않기 때문에 솔루션을 xnor와 결합 할 수 없습니다 (그의 답변에 대한 내 의견 참조).
orlp

@orlp * 잘못된 것들을 제외한 모든 것을 결합;;) 내 게시물에 솔루션을 추가했습니다.
Jakube

아, 나는 지금 본다 :) 내가 6 바이트 (그리고 계산)가 최적보다 나빴던 것 같아요.
orlp

아아! 감사! :) 실현하지 못했습니다. 제거하겠습니다.
Ven

7

54 바이트

태스크 1, 2 바이트 : SQ
태스크 2, 6 바이트 : j102 2
태스크 3, 5 바이트 : *FjQT
태스크 4, 6 바이트 : @z"'\"
태스크 5, 17 바이트 : @c3"LoseTieWin"hQ
태스크 6, 4 바이트 : jkUT
태스크 7, 7 바이트 : s>M.cz2
태스크 8, 7 바이트 :sqM.:z2


멋지게 골프 :-)
Vedaad Shakib

거짓으로 인해 빈 줄을 인쇄하기 때문에 작업 4에 대한 대답입니까?
Maltysen

@Maltysen 예 . 진실 ""이기 때문에 not ""진실한 가치 는 거짓이기 때문 입니다.
orlp

3

58 바이트

태스크 1, 2 바이트 : SQ
태스크 2, 5 바이트 : jC\f2
태스크 3, 6 바이트 : !}Z Q
태스크 4, 8 바이트 : |}\'z}Nz
태스크 5, 18 바이트 : @c"Tie\nWin\nLose"bQ
태스크 6, 4 바이트 : jkUT
태스크 7, 9 바이트 : lf>FT.cz2
태스크 8, 6 바이트 :sqVtzz


나는 V길이가 다른 피연산자에 대해 벡터 연산을 수행하기 때문에 아직 완전히 이해 하지는 못했지만 알지 못했기 때문에 그에 대한 변명을 받았지만 실제로는 C\f= /
orlp

@orlp는 V자동으로 동일하지 않은 입력을 자릅니다
Maltysen

3

이 게시물은 모든 답변에서 최상의 솔루션을 축적하기위한 것입니다. 개선 사항이있는 경우 솔루션 및 해당 솔루션을 처음 찾은 응답자에서 편집하십시오.

48 바이트

1. SQ-2 바이트, @orlp에 의해 처음으로 게시
2. jC\f2-5 바이트, @Maltysen에 의해 최초 게시
3. -0`Q-4 바이트, @Jakube에 의해 최초 게시
4. @z`N-4 바이트, @xnor 및 @Jakube의 혼합 아직 답변이 없습니다.
(중, 질문을 쓸 때 나는 그것을 보지 않았다)
5. @c3"LoseTieWin"hQ첫번째 @orlp에 의해 게시, 17 바이트 -
6. pMT첫 @Jakube에 의해 게시 3 바이트, -
7 s>M.cz2- 7 바이트가 먼저 @orlp에 의해 게시
8. sqVtzz- 6 바이트, @Maltysen이 처음 게시


질문 전에 Pyth 버전으로 제한하고 있습니까?
Optimizer

1
"모든 답변은이 질문의 게시 시점에서 가장 최근의 Pyth 커밋에 유효해야합니다." 당신의 생각을 듣고 싶습니다. @Optimizer
isaacg

Pyth는 계속 발전하고 있습니다. (다른 골프 언어보다 훨씬 빠른 속도로). 따라서이 숫자 (48)는 가까운 시일 내에 쉽게 40 이하가 될 것입니다. 그리고 이것은 연습 과제이므로 최신 Pyth 버전을 사용하여 새로운 과제를 연습하는 것이 이상적입니다.
Optimizer

2

57 바이트

1. (2) SQ정렬.
2. (5) jC\f2 변환 f2. 다음 기본 ASCII의 발에
3 (5) /`Q`0카운트 '0'숫자 문자열.
4. (5) @z`\'와 문자열의 교차점을 설정합니다 "'".
5. (18) @c"Tie Win Lose"dQ목록을 분할하여 만듭니다. 나는 일을 썰지 않았다.
6. (4) jkUT가입하십시오 range(10). 분명히 문자열로 자동 변환됩니다.
7. (9) sm>d_d.:z역 문자열보다 큰 부분 문자열을 계산합니다.
(9) l@C,zz.:z목록의 하위 목록과 목록의 요소 쌍의 교차 길이. 참조 솔루션과 길이가 동일합니다.


# 4에 대한 귀하의 솔루션이 유효하지 않습니다. 예를 들어 문자열 te\\st은 오 탐지입니다.
orlp

@orlp 다른 더 짧은 솔루션으로 대체했습니다.
xnor
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.