pengantar
Ketika Anda diberi teks yang membosankan, Anda hanya ingin menyelesaikannya secepat mungkin. Mari kita amati teks berikut:
Ens colligi timenda etc priorem judicem. De quascunque ii at contingere
repugnaret explicetur intellectu. Adjuvetis hoc fortassis suspicari opportune
obversari vix eam? Dei praemia prudens hominum iii constet requiri haberem. Ima
sane nemo modi fuit lus pro dem haud. Vestro age negare tactum hoc cui lor. Ne et
ut quod id soli soni deus. At constare innumera is occurret ea. Nia calebat seu
acquiro fraudem effingo dicimus.
Catatan: Teks ini memiliki baris baru untuk dibaca, sementara kasus uji yang perlu Anda tangani tidak memiliki karakter baris baru.
Salah satu cara untuk membaca skim teks adalah dengan menemukan pertanyaan yang telah dimasukkan penulis ke dalam teks. Misalnya, ada 1 pertanyaan dalam teks di atas. Yaitu:
Adjuvetis hoc fortassis suspicari opportune obversari vix eam?
Ini dapat dilakukan dengan memisahkan teks menjadi kalimat. Sebuah kalimat akan selalu diakhiri dengan salah satu simbol tanda baca berikut: .?!
(yang lain tidak harus ditangani). Simbol lain dari ini adalah bagian dari kalimat.
Tugas
Diberikan satu baris teks yang hanya terdiri dari
- huruf (A-Za-z)
- angka (0-9)
- spasi
- tanda baca (
,.;:?!
) (kalimat tidak dapat dimulai dengan salah satu dari ini).
Keluarkan pertanyaan yang ada dalam teks dalam format apa pun yang masuk akal. Anda dapat berasumsi bahwa teks akan selalu memiliki setidaknya 1 pertanyaan . Keluaran membuntuti dan terkemuka spasi sebelum dan setelah pertanyaan diperbolehkan.
Penting : Di sebelah simbol tanda baca , tidak akan pernah ada simbol tanda baca lain (mis. Tidak ??
valid dan tidak akan diminta untuk menangani).
Uji kasus
Dalam format:
Input
Output(s)
Kasus uji:
Huh? I haven't heard what you just said. Could you repeat that please?
Huh?
Could you repeat that please?
plz can i haz cheesburgr? i am cat pls.
plz can i haz cheesburgr?
This is a badly formatted question.Can u please help me,or my friends,with formatting this question ?thankyou.
Can u please help me,or my friends,with formatting this question ?
a.b.c.d?
d?
Does this question have a question mark? yes
Does this question have a question mark?
Why example.com resolves to 127.0.0.1 in 99.9 percent of cases?
9 percent of cases?
A? b? c? d!
A?
b?
c?
Ini adalah kode-golf , jadi pengiriman dengan jumlah byte terendah menang!
.?!
Orang lain tidak boleh ditangani, seperti yang ditentukan oleh peraturan Anda, tetapi Anda telah mengatakan orang lain tidak harus ditangani.Jawaban:
Retina,
1311 byteCobalah online!
Terima kasih kepada @MartinEnder selama 2 byte!
sumber
Python, 46 Bytes
Telepon dengan:
output pada tes:
ide lain, 77 byte (dalam python3 Anda perlu daftar di sekitar filter):
Saya baru dalam hal ini, jadi ini mungkin jauh lebih pendek.
-17 (!) Byte terima kasih kepada Martin
-2 byte dengan mencocokkan apa pun yang bukan "!", "?" atau "." (Semakin dekat dengan solusi shell, tapi saya ragu saya bisa menghemat lebih banyak)
sumber
[\w,:; ]*
ungreedy (karena kelompok itu tidak bisa melewati karakter tanda baca), dan kemudian Anda juga tidak perlu menambahkan.
input Anda. Anda juga dapat mempersingkat kelas karakter yang tersisa menjadi[^.!?]
.JavaScript,
3524 byteMengembalikan semua substring yang dimulai setelah a
.
,,?
atau!
(atau awal teks) dan diakhiri dengan a?
.sumber
V , 12 byte
Cobalah online!
Jawaban yang sangat mudah.
Untungnya, menangani baris baru, atau memverifikasi semua kasus uji tidak menambah byte.
sumber
Jelly , 16 byte
Cobalah online! atau verifikasi semua kasus uji
sumber
Utilitas Shell,
4338 byteTerima kasih kepada rexkogitans untuk memangkas 5 byte!
Masukan pipa, seperti ini:
Jika jika penting, saya menggunakan:
tr
5.3.0sed
4.2.1cmd.exe
, dikirimkan dengan Windows 5.1.2600sumber
tr ? "\n"|sed "s/.*[\.!]//;s/.\+/&?/"
menghemat 5 Bytes (dua ditambahkantr
dan 7 disimpansed
- ini diuji dalam bash)./g
tidak perlu, karena diproses baris demi baris.[]
; Usaha pertamaku dalam melakukan itu terlihat seperti\(\.|!\)
.Perl 5.10,
2118 byte (dengan flag -n )Implementasi langsung dari pertanyaan.
Coba di sini!
sumber
m
depan regex Anda, dan kemudian Anda akan dapat menghapus ruang antarasay
dan/
Ruby 1.9, 17 byte
Program 5 byte yang harus dijalankan dengan opsi baris perintah berikut:
sumber
Batch, 174 byte
Membaca baris dari STDIN lebih pendek satu byte daripada menggunakan
set s=%*
.sumber
PowerShell v4 +, 43 byte
Sangat mudah. Mengambil input
$args
dan mengumpankannya sebagai parameter pertama ke[regex]::Matches(...)
fungsi .NET statis. Regex yang kami cocokkan adalah[^?!.]*\?
- yaitu, sejumlah karakter tanpa akhir kalimat yang diikuti oleh tanda tanya. Fungsi statis mengembalikan array objek yang merinci apa yang menangkap grup, indeks, dll., Tetapi kami hanya menginginkan.Value
s, jadi pengembaliannya dirangkum dalam parens dan kami menyebutnya properti itu. Di sinilah persyaratan v4 + berperan, karena dalam versi sebelumnya Anda harus melakukan sesuatu seperti loop|%{$_.Value}
atau|Select Value
untuk mendapatkan properti yang sesuai.Contoh tanpa parens dan
.Value
Contoh dengan parens dan
.Value
sumber
Python 3, 91 byte
Menghemat 1 byte dalam Python 2:
sumber