Saatnya untuk latihan Pyth yang lain. Saya sajikan di sini 8 pernyataan masalah dengan masing-masing solusi Pyth. Solusi ini ditulis oleh pemula Pyth. Dia cukup senang dengan solusi ini, karena mereka jauh lebih pendek daripada jawaban Python-nya. Namun tugas Anda adalah untuk menunjukkan kepadanya lebih baik. Buat program yang setara tetapi lebih pendek.
Ini adalah tantangan tentang trik dan optimisasi yang dapat digunakan saat bermain golf di Pyth. Pegolf Pyth mungkin mengenali banyak trik yang terlibat, yang mengarah pada solusi yang lebih pendek. Namun beberapa masalah akan memerlukan beberapa pendekatan yang tidak biasa yang jarang digunakan. Beberapa trik yang sebenarnya tidak pernah saya lihat di alam liar. Tapi tidak ada solusi yang membutuhkan bug atau perilaku aneh, yang tidak disengaja oleh desainer Pyth. Semua jawaban harus valid untuk komit Pyth terbaru ( 2b1562b ) pada posting pertanyaan ini. Anda dapat menggunakan juru bahasa Pythuntuk pengujian. Ini mutakhir sekarang dan saya tidak mengharapkan perubahan besar dalam Pyth, yang akan membatalkan solusi optimal atau membuat solusi lebih pendek mungkin. Penerjemah online juga memiliki fitur Referensi Karakter baru. Karena ini cukup baru, Anda dapat (harus) juga menggunakan dokumen lama , jika ada sesuatu yang salah atau hilang.
Sasaran: Solusi referensi total 81 byte. Tujuan Anda adalah untuk mengalahkan itu sebanyak mungkin. Kiriman yang menyelesaikan semua 8 masalah dengan jumlah total byte terkecil akan menang. Tiebreaker adalah tanggal pengiriman.
Tentu saja hanya pengiriman yang valid, yang berisi solusi untuk semua 8 masalah. Anda dapat menggunakan implementasi referensi, jika Anda tidak dapat meningkatkan skor satu (atau lebih) masalah tertentu.
Solusi Anda harus mencetak output yang sama persis dengan solusi referensi. Kecuali untuk trailing newline opsional.
Karena ini adalah latihan Pyth, hanya program yang ditulis dalam bahasa Pyth yang diizinkan.
Menjawab: Silakan spoiler seluruh jawaban Anda, kecuali untuk skor total Anda. Ini dimaksudkan agar Anda tidak melihat jawaban orang lain sebelum mengirimkan jawaban Anda. Anda dapat membuat spoiler dengan meletakkan>! di depan setiap baris, seperti:
>! Problem 1: V9m?>dNd0S9 (11 bytes)
>! Problem 2: VTN)VGN (7 bytes)
>! ...
Saya harap saya tidak memilih masalah yang terlalu sulit atau terlalu sepele. Berharap banyak partisipan dan bagi semua orang untuk mendapatkan beberapa wawasan baru tentang Pyth. Selamat bermain golf!
Masalah 1:
Buat matriks 9x9 berikut dan cetak:
[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]
Solusi referensi ( Tautan ):
V9m?>dNd0S9 (11 bytes)
Masalah 2:
Cetak semua digit dan semua huruf pada baris yang berbeda:
0
...
9
a
...
z
Solusi referensi ( Tautan ):
VTN)VGN (7 bytes)
Masalah 3:
Temukan palindrom terkecil secara leksikografis, yang secara leksikografis lebih besar atau sama dengan string input yang mengandung huruf kecil dan sama dengan string input.
a -> a
abc -> aca
adcb -> adda
Solusi referensi ( Tautan ):
hf&gTzqT_T^Glz (14 bytes)
Masalah 4:
Periksa, apakah ada angka dalam kisaran [0, masukkan angka). Ini juga bisa digunakan untuk pelampung.
4, 6 -> True
5.5, 6 -> True
6, 6 -> False
6, 6.1 -> True
Solusi referensi ( Tautan ):
&gQ0<QE (7 bytes)
Format referensi adalah to be tested value<newline>end value
. Anda dapat memilih format input yang berbeda. Hanya penting, bahwa Anda menyelesaikan pernyataan masalah dan menghasilkan hasil yang benar.
Masalah 5:
Parsing string input dari format "\ d + [a-zA-Z] +". Perhatikan bahwa nomor tersebut benar-benar harus berupa angka, bukan string yang mengandung digit.
'123Test' -> [123, 'Test']
Solusi referensi ( Tautan ):
A.ggk\Az,sGH (12 bytes)
Masalah 6:
Hitung jumlah angka, yang dipisahkan oleh satu atau beberapa koma. Anda dapat mengasumsikan bahwa setidaknya ada satu angka dalam string.
11,2,,,3,5,,8 -> 29
Solusi referensi ( Tautan ):
svM:z",+"3 (10 bytes)
Masalah 7:
Baca bilangan bulat positif dari input sampai Anda mendapatkan angka 0. Cetak jumlah semua angka.
Solusi referensi ( Tautan ):
WJE=+ZJ)Z (9 bytes)
Masalah 8:
Ringkas semua elemen dari matriks persegi, kecuali yang ada diagonal utama (sudut kiri atas ke sudut kanan bawah).
Solusi referensi ( Tautan ):
-ssQs.e@bkQ (11 bytes)
Jawaban:
595856 byteMasalah 1:
Masalah 2:
Masalah 3:
Masalah 4:
Masalah 5:
Masalah 6:
Masalah 7:
Masalah 8:
sumber
66 byte
sumber
68676665 byteTugas 1
Tugas 2
Tugas 3
Tugas 4
Tugas 5
Tugas 6
Tugas 7
Tugas 8
sumber
54 byte
Inilah solusi yang dimaksud. Kecuali untuk tugas 8 semua solusi ditemukan.
sumber
U
melakukannyal
di daftar!60 5957 bytePerhatikan bahwa saya mengembangkan solusi ini sepenuhnya terlepas dari jawaban lain, meskipun saya cukup terlambat ke pesta.
sumber