Thực hành Pyth 2


21

Thời gian cho một thực hành Pyth khác. Tôi trình bày ở đây 8 báo cáo vấn đề với một giải pháp Pyth mỗi. Những giải pháp này được viết bởi một người mới bắt đầu Pyth. Anh ấy khá hài lòng về các giải pháp này, vì chúng ngắn hơn rất nhiều so với câu trả lời Python của anh ấy. Nhiệm vụ của bạn là chỉ cho anh ta tốt hơn. Tạo các chương trình tương đương nhưng ngắn hơn.

Đâ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, dẫn đến các giải pháp ngắn hơn. Tuy nhiên, một số vấn đề sẽ yêu cầu một số cách tiếp cận khác thường hiếm khi được sử dụng. Một số mánh mà tôi thực sự chưa từng thấy trong tự nhiên. Nhưng không có giải pháp nào yêu cầu bất kỳ lỗi hoặc hành vi lạ nào, đó không phải là cố ý của (các) nhà thiết kế của Pyth. Tất cả các câu trả lời phải có giá trị cho cam kết Pyth gần đây nhất ( 2b1562b ) kể từ khi đăng câu hỏi này. Bạn có thể sử dụng trình thông dịch Pythđể thử nghiệm. Nó được cập nhật ngay bây giờ và tôi không mong đợi bất kỳ thay đổi lớn nào trong Pyth, điều đó sẽ làm mất hiệu lực các giải pháp tối ưu hoặc thực hiện các giải pháp ngắn hơn. Trình thông dịch trực tuyến cũng có tính năng Tham khảo nhân vật mới. Vì nó khá mới, bạn cũng có thể (nên) sử dụng các tài liệu cũ , trong trường hợp có gì đó không đúng hoặc bị thiếu.

Mục tiêu: Các giải pháp tham chiếu tổng cộng 81 byte. Mục tiêu của bạn là đánh bại nó càng nhiều càng tốt. Việc gửi giải quyết tất cả 8 vấn đề với tổng số byte nhỏ nhất sẽ thắng. Tiebreaker là ngày nộp.

Tất nhiên chỉ có bài nộp là hợp lệ, trong đó có giải pháp cho tất cả 8 vấn đề. Bạn có thể sử dụng triển khai tham chiếu, nếu bạn không thể cải thiện điểm của một (hoặc nhiều) vấn đề cụ thể.

Các giải pháp của bạn phải in chính xác đầu ra giống như các giải pháp tham chiếu. Ngoại trừ một dòng mới tùy chọn.

Vì đây là thông lệ của Pyth, nên chỉ các chương trình được viết bằng ngôn ngữ Pyth mới được phép.

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. Bạn có thể tạo spoilers bằng cách đặt>! ở phía trước của mỗi dòng, như:

>! Problem 1: V9m?>dNd0S9 (11 bytes)
>! Problem 2: VTN)VGN (7 bytes)
>! ...

Tôi hy vọng tôi đã không chọn những vấn đề quá khó khăn hoặc quá nhỏ nhặt. Hy vọng sẽ có nhiều người tham gia và cho tất cả mọi người để có được một vài hiểu biết mới về Pyth. Chúc bạn chơi golf vui vẻ!

Vấn đề 1:

Tạo ma trận 9x9 sau và in nó:

[1, 2, 3, 4, 5, 6, 7, 8, 9]
[0, 2, 3, 4, 5, 6, 7, 8, 9]
[0, 0, 3, 4, 5, 6, 7, 8, 9]
[0, 0, 0, 4, 5, 6, 7, 8, 9]
[0, 0, 0, 0, 5, 6, 7, 8, 9]
[0, 0, 0, 0, 0, 6, 7, 8, 9]
[0, 0, 0, 0, 0, 0, 7, 8, 9]
[0, 0, 0, 0, 0, 0, 0, 8, 9]
[0, 0, 0, 0, 0, 0, 0, 0, 9]

Giải pháp tham khảo ( Liên kết ):

V9m?>dNd0S9 (11 bytes)

Vấn đề 2:

In tất cả các chữ số và tất cả các chữ cái trên các dòng riêng biệt:

0
...
9
a
...
z

Giải pháp tham khảo ( Liên kết ):

VTN)VGN (7 bytes)

Vấn đề 3:

Tìm bảng màu nhỏ nhất về mặt từ vựng, lớn hơn về mặt từ vựng hoặc bằng với một chuỗi đầu vào chứa các chữ cái viết thường và giống với chuỗi đầu vào.

a -> a
abc -> aca
adcb -> adda

Giải pháp tham khảo ( Liên kết ):

hf&gTzqT_T^Glz (14 bytes)

Vấn đề 4:

Kiểm tra, nếu một số nằm trong phạm vi [0, số đầu vào). Điều này cũng sẽ làm việc cho phao.

4, 6 -> True
5.5, 6 -> True
6, 6 -> False
6, 6.1 -> True

Giải pháp tham khảo ( Liên kết ):

&gQ0<QE (7 bytes)

Các định dạng tham khảo là to be tested value<newline>end value. Bạn có thể chọn một định dạng đầu vào khác nhau tuy nhiên. Điều quan trọng chỉ là, bạn hoàn thành báo cáo vấn đề và đưa ra kết quả chính xác.

Vấn đề 5:

Phân tích chuỗi đầu vào có định dạng "\ d + [a-zA-Z] +". Lưu ý rằng số thực sự phải là một số, không phải là một chuỗi chứa các chữ số.

'123Test' -> [123, 'Test']

Giải pháp tham khảo ( Liên kết ):

A.ggk\Az,sGH (12 bytes)

Vấn đề 6:

Tính tổng các số, được phân tách bằng một hoặc nhiều dấu phẩy. Bạn có thể giả sử rằng có ít nhất một số trong chuỗi.

11,2,,,3,5,,8 -> 29

Giải pháp tham khảo ( Liên kết ):

svM:z",+"3 (10 bytes)

Vấn đề 7:

Đọc số nguyên dương từ đầu vào cho đến khi bạn nhận được số 0. In tổng của tất cả các số.

Giải pháp tham khảo ( Liên kết ):

WJE=+ZJ)Z (9 bytes)

Vấn đề 8:

Tổng hợp tất cả các phần tử của một ma trận vuông, ngoại trừ các phần tử của đường chéo chính (góc trên bên trái đến góc dưới bên phải).

Giải pháp tham khảo ( Liên kết ):

-ssQs.e@bkQ (11 bytes)

Tôi thực sự thích ý tưởng về các câu hỏi dành riêng cho ngôn ngữ (và tôi đã đưa ra câu hỏi này). Nhưng tôi nghĩ các câu hỏi dành riêng cho ngôn ngữ đã được tán thành trong PPCG?
Luis Mendo

3
@LuisMendo Tôi nghĩ rằng các câu hỏi dành riêng cho ngôn ngữ chỉ được tán thành, nếu lý do đằng sau câu hỏi là không thích chung với các ngôn ngữ chơi gôn như CJam, Pyth, ..., hoặc vì OP chỉ hiểu một số ngôn ngữ nhất định. Đây là một chút khác nhau. Câu hỏi này chủ yếu được thiết kế để hiển thị một số tính năng ẩn khác của ngôn ngữ phổ biến (trên PPCG). Theo một cách nào đó, nó giống như một bộ sưu tập các mánh khóe. Nó không có ý nghĩa để cho phép nó cho mọi ngôn ngữ. Đây là một Meta-post về chủ đề này: link
Jakube

Trong 6, số nguyên có phải là số nguyên không?
xnor

@xnor Bạn có thể cho rằng chúng dương tính, nhưng chúng có thể bao gồm nhiều hơn một chữ số. Tôi sẽ thay đổi trường hợp thử nghiệm.
Jakube

1
Tôi đang bỏ phiếu để đóng câu hỏi này ngoài chủ đề vì đây là một thử thách đa phần không có tương tác giữa các phần
pppery

Câu trả lời:


9

59 58 56 byte

Vấn đề 1:

j.tmLdS9Z (9 byte)

Vấn đề 2:

MTjG (5 byte) (Ký tự đầu tiên là một dòng mới)

Vấn đề 3:

h.f_IZ1z (8 byte)

Vấn đề 4:

%IQE (4 byte)

Vấn đề 5:

,J.vz-zJ (8 byte)

Vấn đề 6:

srXz\,d7 (8 byte)

Vấn đề 7:

u+GE0 (5 byte)

Vấn đề 8:

ss.DR~hZQ (9 byte)


2

66 byte

1. 10 byte: V9+mZN}hN9
2. 6 byte: jUT)jG
3. 8 byte: h.f_IZ1z
4. (thực hiện tham chiếu) 7 byte: &gQ0<QE
5. 11 byte: ,sK-rzZG-zK
6. 7 byte: ssMcz\,
7. 8 byte: s<.Qx.QZ
8. 9 byte:ss.eXbkZQ


2

68 67 66 65 byte

Nhiệm vụ 1

10 byte: V9m*d>dNS9

Nhiệm vụ 2

5 byte: \nMTjG , ở đâu \nlà một dòng mới

Nhiệm vụ 3

9 byte: h.fqZ_Z1z

Nhiệm vụ 4

5 byte: qQ%QE

Nhiệm vụ 5

Giải pháp tham chiếu, 12 byte: A.ggk\Az,sGH

Nhiệm vụ 6

7 byte: ssMcz\,

Nhiệm vụ 7

8 byte: s<.Qx.Q0

Nhiệm vụ 8

9 byte: ss.DVQUlQ


1

54 byte

Dưới đây là các giải pháp dự định. Ngoại trừ nhiệm vụ 8, tất cả các giải pháp đã được tìm thấy.

1. j.tmLdS9Z (9 byte) sử dụng bản đồ cho trái bản đồ, chuyển vị và fill với số
2. \ nMTjG (5 byte) dòng mới sử dụng cho bản đồ
3. h.f_IZ1z (8 byte) tạo ra các chuỗi có thể với .f
4 .% IQE (4 byte) đã tìm thấy một usecase, trong đó toán tử bất biến cần 2 tham số
5., J.vz-zJ (8 byte) .v chỉ đánh giá câu lệnh đầu tiên của chuỗi và bỏ qua phần còn lại
6. ssMcz \, ( 7 byte) s "" = 0
7. u + GE0 (5 byte) giảm cho đến khi đạt đến số biết
8. ss.DVQUQ (8 byte) xóa đường chéo bằng cách sử dụng vector hóa


Chết tiệt, tôi quên Ulàm ltrong danh sách!
lirtosiast

1
Đẹp khi đánh isaacg bằng ngôn ngữ của mình.
Stan Strum

1

 60 59  57 byte

1. 9 byte :j.tmRdS9Z


2. 6 byte :jbUTjG


3. 8 byte :h.f_IZ1z


4. 4 byte :}sEU


5. 8 byte :,K.vz-zK


6. 7 byte :ssMcz\,


7. 8 byte :s<FxB.Q0


8. 11 10 7 byte : ss.DVQU Phiên bản trước:ss.e+<bk>bh

Lưu ý rằng tôi đã phát triển giải pháp này hoàn toàn độc lập với các câu trả lời khác, mặc dù tôi đến bữa tiệc khá muộn.


Cố gắng tốt đẹp. Vấn đề thứ 3 là 8 byte mặc dù.
Jakube

Và tôi khá chắc chắn rằng giải pháp cho vấn đề 8 đã không được biên dịch vào thời điểm đó. Nhưng tôi đã không kiểm tra nó.
Jakube

@Jakube ơi cảm ơn vì đã chú ý!
Ông Xcoder
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.