Thực hành Golf: Pyth [đóng]


10

Đây là một thách thức về các thủ thuật và tối ưu hóa có thể được sử dụng khi chơi golf ở Pyth. Người chơi gôn Pyth có thể nhận ra nhiều mánh khóe liên quan. Tuy nhiên, các cách tiếp cận và cấu trúc không quen thuộc có thể được tham gia, vì vậy hãy xem Mẹo Pyth cũng như Tham khảo nhân vật Pyth nếu bạn gặp khó khăn. Các giải pháp có thể được thử nghiệm ở đây .

Mục tiêu: Có 8 vấn đề, mỗi vấn đề có một đoạn Pyth để bạn tối ưu hóa. Mục tiêu của bạn là tạo ra một cái gì đó tương đương nhưng ngắn hơn. Các giải pháp tham chiếu tổng cộng 80 byte. Mục tiêu của bạn là đánh bại nó càng nhiều càng tốt.

Người chiến thắng sẽ đi đến bài nộp giải quyết tất cả 8 vấn đề với tổng số byte nhỏ nhất. Tiebreaker là bài trước.

Trả lời: Vui lòng làm hỏng toàn bộ câu trả lời của bạn, ngoại trừ tổng số điểm của bạn. Dự định rằng bạn không nhìn vào câu trả lời của người khác trước khi gửi câu trả lời của riêng bạn.

Mỗi lần gửi sẽ trả lời mọi vấn đề và đưa ra số byte tương ứng, nhưng hãy sử dụng triển khai tham chiếu nếu bạn không thể cải thiện nó.

Chi tiết: Nếu câu hỏi yêu cầu một giá trị hoặc đầu ra nhất định, qsự bình đẳng là mong muốn, vì vậy 1!0tương đương. Nếu câu hỏi yêu cầu kiểm tra xem một điều kiện có đúng không, thì đầu ra phải là sự thật nếu điều kiện đó là đúng và sai nếu điều kiện đó là sai, nhưng không bị ràng buộc ngoài điều đó. Bạn không thể trao đổi đúng thành sai và sai thành đúng. Nếu câu hỏi yêu cầu một cái gì đó được in, không có gì khác có thể được in ngoại trừ một dòng mới.

Tất cả các câu trả lời phải có giá trị cho cam kết gần đây nhất của Pyth kể từ khi đăng câu hỏi này.

Bài toán 1: Cho một tập hợp trong Q, xuất ra một danh sách chứa các phần tử của Q theo bất kỳ thứ tự nào.

; 3 bytes
f1Q

Bài toán 2: Xuất danh sách [1, 1, 0, 0, 1, 1, 0].

; 9 bytes
[J1JZZJJZ

Bài toán 3: Cho một số nguyên dương trong Q, kiểm tra xem tất cả các chữ số của Q có dương không (không bằng 0).

; 7 bytes
!f!TjQT

Bài 4: Cho một chuỗi trong z, kiểm tra xem z có chứa bất kỳ dấu ngoặc kép nào không - "hoặc '.

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

Bài 5: Ánh xạ Q = 1 thành 'Thắng', Q = 0 thành 'Tie' và Q = -1 thành 'Thua'.

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

Bài 6: In 0123456789.

; 6 bytes
sm`dUT

Bài 7: Cho một chuỗi trong z, đếm số lần đảo.

(Lập chỉ mục ijhình thành đảo ngược nếu i < jnhưng z[i] > z[j]).

; 17 bytes
ssmm>@zd@zkrdlzUz

Bài 8: Cho một danh sách theo z, đếm số phần tử liền kề lặp lại.

; 9 bytes
lfqFT.:z2

@ user1737909 Câu trả lời đó là đúng. f1Qcác bộ lọc Qtrên một hàm luôn luôn đúng, vì vậy nó luôn xuất ra mọi phần tử của tập hợp. fđưa ra một danh sách, đáp ứng mục tiêu trong câu hỏi đó.
isaacg

Tôi đang đóng câu hỏi này ngoài chủ đề vì các thách thức đa phần không có tương tác giữa các phần không được phép. meta.codegolf.stackexchange.com/a/8464/45941
Martin Ender

Câu trả lời:


9

52 byte

Vấn đề 1: 2 byte

    SQ

Vấn đề 2: 5 byte
    jC\f2

Vấn đề 3: 4 byte
    -0`Q
Bài toán 4: 6 byte
    @z+N\'
Bài 5: 17 byte
    %3>"LTWoiisene"hQ
hoặc là
    @c3"LoseTieWin"hQ
Bài toán 6: 3 byte
    pMT
Bài 7: 9 byte
    s>R_d.cz2
Bài 8: 6 byte
    sqVztz
Kết hợp giải pháp của @ xnor cho vấn đề 4 với tôi (cả 6 byte) sẽ mang lại giải pháp 4 byte đẹp . Vì vậy, 48 byte là có thể.


Bạn không thể kết hợp giải pháp của mình với xnor, vì xnor không hợp lệ (xem nhận xét của tôi về câu trả lời của anh ấy).
orlp 16/07/2015

@orlp * kết hợp mọi thứ trừ những thứ không hợp lệ ;-) Đã thêm giải pháp trong bài viết của tôi.
Jakube 16/07/2015

À, tôi hiểu rồi :) Đoán tôi là 6 byte (và đang tính) tệ hơn tối ưu.
orlp 16/07/2015

aaah cảm ơn! đã không nhận ra :). Tôi sẽ xóa nó.
Ven

7

54 byte

Nhiệm vụ 1, 2 byte : SQ
Nhiệm vụ 2, 6 byte : j102 2
Nhiệm vụ 3, 5 byte : *FjQT
Nhiệm vụ 4, 6 byte : @z"'\"
Nhiệm vụ 5, 17 byte : @c3"LoseTieWin"hQ
Nhiệm vụ 6, 4 byte : jkUT
Nhiệm vụ 7, 7 byte : s>M.cz2
Nhiệm vụ 8, 7 byte :sqM.:z2


Chơi golf độc đáo :-)
Vedaad Shakib 16/07/2015

Bạn có trả lời cho nhiệm vụ 4 hợp lệ không vì trên falsey nó chỉ in một dòng trống?
Maltysen 16/07/2015

@Maltysen Có, vì giá trị trung thực ""là Sai vì not ""là Đúng.
orlp 16/07/2015

3

58 byte

Nhiệm vụ 1, 2 byte : SQ
Nhiệm vụ 2, 5 byte : jC\f2
Nhiệm vụ 3, 6 byte : !}Z Q
Nhiệm vụ 4, 8 byte : |}\'z}Nz
Nhiệm vụ 5, 18 byte : @c"Tie\nWin\nLose"bQ
Nhiệm vụ 6, 4 byte : jkUT
Nhiệm vụ 7, 9 byte : lf>FT.cz2
Nhiệm vụ 8, 6 byte :sqVtzz


Tôi không biết về điều đó V(mặc dù tôi vẫn chưa hiểu hết về nó, vì bạn đang thực hiện các phép toán vectơ trên các toán hạng có độ dài không bằng nhau), vì vậy tôi xin lỗi vì điều đó, nhưng tôi thực sự nên nghĩ đến C\f= /
orlp 16/07/2015

@orlp Vtự động cắt ngắn các đầu vào không bằng nhau
Maltysen 16/07/2015

3

Bài đăng này là dành cho sự tích lũy của các giải pháp tốt nhất trên tất cả các câu trả lời. Vui lòng chỉnh sửa trong giải pháp và người trả lời đầu tiên tìm thấy giải pháp đó nếu có bất kỳ cải tiến nào.

48 byte

1. SQ- 2 byte, lần đầu tiên được đăng bởi @orlp
2. jC\f2- 5 byte, lần đầu tiên được đăng bởi @Maltysen
3. -0`Q- 4 byte, lần đầu tiên được đăng bởi @Jakube
4. @z`N- 4 byte, hỗn hợp của @xnor và @Jakube, nhưng không phải trong bất kỳ câu trả lời nào.
(Tôi cũng không thấy nó khi viết câu hỏi)
5. @c3"LoseTieWin"hQ- 17 byte, lần đầu tiên được đăng bởi @orlp
6. pMT- 3 byte, lần đầu tiên được đăng bởi @Jakube
7. s>M.cz2- 7 byte, lần đầu tiên được đăng bởi @orlp
8. sqVtzz- 6 byte, lần đầu tiên được đăng bởi @Maltysen


chúng tôi có giới hạn các phiên bản Pyth từ trước câu hỏi không?
Tối ưu hóa

1
"Tất cả các câu trả lời phải có giá trị cho cam kết gần đây nhất của Pyth kể từ khi đăng câu hỏi này." Đặt tôi sẽ quan tâm để nghe những gì bạn đang nghĩ về. @Optimizer
isaacg 21/07/2015

Pyth là bao giờ phát triển, phải không? (với tốc độ nhanh hơn nhiều so với các ngôn ngữ chơi gôn khác). Vì vậy, rất có thể con số này (48) sẽ dễ dàng đi phụ 40 trong tương lai gần. Và vì đây là một thử thách thực hành, lý tưởng nhất là bạn muốn thực hành sử dụng phiên bản Pyth mới nhất cho các thử thách mới hơn.
Tối ưu hóa

2

57 byte

1. (2) SQSắp xếp.
2. (5) jC\f2 Chuyển đổi fsang val ASCII rồi cơ sở 2.
3. (5) /`Q`0Đếm '0'trong chuỗi số.
4. (5) @z`\'Thực hiện giao điểm đã đặt của chuỗi với "'".
5. (18) @c"Tie Win Lose"dQLàm cho danh sách bị chia. Tôi đã không được cắt lát để làm việc.
6. (4) jkUTTham gia range(10). Rõ ràng chuyển đổi thành một chuỗi tự động.
7. (9) sm>d_d.:zĐếm các chuỗi con lớn hơn đảo ngược của chúng.
8. (9) l@C,zz.:zĐộ dài giao điểm của danh sách con của danh sách và các cặp phần tử trong danh sách. Cùng chiều dài với giải pháp tham khảo.


Giải pháp cho số 4 của bạn không hợp lệ. Ví dụ, chuỗi te\\stlà một dương tính giả.
orlp 16/07/2015

@orlp Thay thế nó bằng giải pháp khác, ngắn hơn.
xnor 16/07/2015
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.