Anda diberi string. Keluarkan string dengan satu spasi per kata.
Tantangan
Input akan berupa string (tidak null
atau kosong), dikelilingi dengan tanda kutip ( "
) yang dikirim melalui stdin
. Hapus spasi awal dan akhir dari itu. Juga, jika ada lebih dari satu ruang antara dua kata (atau simbol atau apa pun), pangkas menjadi hanya satu ruang. Keluarkan string yang dimodifikasi dengan tanda kutip.
Aturan
- String tidak akan lebih dari 100 karakter dan hanya akan berisi karakter ASCII dalam rentang
(spasi) hingga
~
(tilde) (kode karakter 0x20 hingga 0x7E, inklusif) kecuali"
, yaitu string tidak akan berisi tanda kutip ("
) dan karakter lain di luar rentang yang ditentukan di atas. Lihat tabel ASCII untuk referensi. - Anda harus mengambil input dari
stdin
(atau alternatif terdekat). - Output harus mengandung tanda kutip (
"
). - Anda dapat menulis program lengkap, atau fungsi yang mengambil input (dari
stdin
), dan mengeluarkan string terakhir
Uji Kasus
"this is a string " --> "this is a string"
" blah blah blah " --> "blah blah blah"
"abcdefg" --> "abcdefg"
" " --> ""
"12 34 ~5 6 (7, 8) - 9 - " --> "12 34 ~5 6 (7, 8) - 9 -"
Mencetak gol
Ini adalah kode golf, jadi pengiriman terpendek (dalam byte) menang.
must take input from stdin
, dan kemudian Anda berkata...or a function which takes input, and outputs the final string
. Apakah ini berarti fungsi juga harus mendapat inputstdin
?" "aa" "
->""aa""
(apakah kutipan berlaku di dalam string input?)Jawaban:
CJam, 7 byte
Penjelasan Kode
CJam telah memesan semua huruf kapital sebagai variabel bawaan. Jadi
S
memiliki nilai ruang di sini.Ini menghilangkan spasi tambahan dan ruang terdepan juga
Cobalah online di sini
sumber
/// : 18 karakter
Contoh dijalankan:
(Menggunakan penerjemah faubiguy dari jawaban Perl untuk Interpret /// (diucapkan 'garis miring') .)
sumber
Perl, 22
(20 byte kode, ditambah 2 sakelar baris perintah)
Perlu dijalankan dengan
-np
sakelar sehingga$_
secara otomatis diisi melalui stdin dan dicetak ke stdout. Saya akan menganggap ini menambahkan 2 ke jumlah byte.sumber
sed -E 's/ +/ /g;s/" | "/"/g'
-p
tersirat-n
, jadi Anda hanya perlu mengambil penalti +1 di sini (dengan asumsi Anda tidak hanya beralih ke bahasa yang berbeda, seperti yang disarankan komentator lain).Ruby,
31292523 BytesPenjelasan Kode:
p
menghasilkan string dalam tanda kutip ganda keSTDOUT
( Masih ada lebih dari itu ...)$*
adalah arraySTDIN
input,$*[0]
mengambil yang pertamastrip
menghapus ruang awal dan akhirsqueeze ' '
mengganti> 1 karakter spasi dengan satu spasiKasus uji:
sumber
ARGV
dengan$*
menyimpan dua byte.gsub /\s+/, ' '
dapat diganti dengansqueeze ' '
untuk 4 byte lainnya$*
, saya tidak tahu itu. Tetapi kita tidak dapat menggantigsub /\s+/, ' '
dengansqueeze
karena mereka tidak sama .squeeze ' '
hanya akan menekan ruang."yellow moon".squeeze "l" => "yelow moon"
p
dan parameternya dansqueeze
dan parameternya tidak perlu.Pyth,
17151110 byte(terima kasih kepada Ypnypn dan FryAmTheEggman )
Mungkin bisa bermain golf lebih banyak.
Jika output dapat menggunakan
'
bukannya"
maka saya hanya perlu 8 byte:sumber
N
sebagai gantinya\"
d
.d
semua yang bisa digunakan untuk itu?p
untuk menyimpan beberapa byte pada rangkaian string daripada banyak+
es.pjd-cQdkNN
Bash,
3632 byteSebagai fungsi, program, atau hanya dalam pipa:
Penjelasan
xargs
Strip pertama menandai tanda kutip.Yang kedua
xargs
memotong sisi kiri dan mengganti beberapa ruang yang berdekatan di tengah-tengah string dengan satu ruang dengan mengambil setiap "kata" dan memisahkan masing-masing dengan spasi.The
xargs -i echo '"{}"'
trims sisi kanan dan rewraps string yang dihasilkan dalam tanda kutip ganda.sumber
x=xargs;$x|$x|$x -i echo '"{}"'
Haskell,
3125 bytewords
membagi string menjadi daftar string dengan spasi sebagai pembatas danunwords
bergabung dengan daftar string dengan spasi tunggal di antaranya. Kutipan"
dilucuti dan dikembalikan oleh Haskellread
danshow
(secara implisit melalui REPL) fungsi pada string.Outputing oleh fungsi itu sendiri adalah tiga byte lebih lama, yaitu 28 byte:
Sunting: @Mauris menunjuk ke
readLn
fungsi, yang menyimpan beberapa byte.sumber
Parse error: naked expression at top level
ketika saya menguji kedua kode di sinimain=interact$show.unwords.words.read
. Ada REPL online di bagian depan haskell.org (memerlukan cookie yang diaktifkan) tempat Anda dapat mencobafmap(unwords.words.read)getLine
.fmap(unwords.words)readLn
danprint.unwords.words=<<readLn
sedikit lebih pendek.readLn
.R, 45 byte
The
readline()
fungsi membaca dari STDIN, otomatis stripping setiap terkemuka dan trailing spasi. Kelebihan ruang di antara kata-kata dihapus menggunakangsub()
. Akhirnya, tanda kutip ganda diawali dan ditambahkan dan hasilnya dicetak ke STDOUT.Contoh:
sumber
[1] "This is a string"
Python2, 37
Dikurangi 1 byte berkat @ygramul.
Versi asli:
Kasus uji:
sumber
print" ".join(raw_input().split())
, tetapi akan memiliki spasi tambahan di dalam tanda kutip terakhir jika ada spasi setelah kata terakhir ...JavaScript (ES6), 49
52 58Sunting 6 byte lebih pendek, terima kasih kepada @Optimizer
Sunting 2 -3, terima kasih kepada @nderscore
Input / output melalui popup. Menggunakan string template untuk memotong 1 byte dalam rangkaian string.
Jalankan cuplikan untuk menguji di Firefox.
sumber
alert(`"${eval(prompt()).match(/\S+/g).join(" ")}"`)
- 52alert(`"${prompt().match(/[^ "]+/g).join(" ")}"`)
05AB1E , 9 byte
Cobalah online!
sumber
Mathematica, 75 byte
sumber
KDB (Q), 28 byte
Penjelasan
Uji
sumber
Java 8, 43 byte
Penjelasan:
Coba di sini.
sumber
Oktaf , 44 byte
Cobalah online!
sumber
Perl 5 , 17 byte
16 byte kode +1 untuk
-p
Cobalah online!
sumber
Jq 1,5 , 42 byte
Contoh Jalankan
Cobalah online
sumber
Tcl , 69 byte
Cobalah online!
Tcl , 79 byte
Cobalah online!
sumber
Japt
-Q
,104 byteCobalah
sumber
golfua, 42 byte
Penggantian pencocokan pola sederhana: temukan tanda kutip ganda (
\"
) yang dikelilingi oleh 0 spasi atau lebih (%s*
) & kembalikan penawaran tunggal, lalu ganti semua 1 spasi atau lebih (%s+
) dengan spasi tunggal.Setara dengan Lua
sumber
Cobra - 68
Sebagai fungsi anonim:
sumber
Tujuan-C 215
Versi tidak terkompresi:
sumber
Bash, 14 byte
sumber
Powershell, 40 byte
Cukup lurus ke depan dan tidak terlalu mengesankan.
Penjelasan
Ambil parameter input melalui variabel-variabel args (predfined), ganti semua spasi berganda dengan satu, trim spasi terdepan dan spasi tambahan menggunakan metode trim () -, tambahkan kutipan. Powershell akan mencetak string ke konsol sebagai perilaku default.
sumber
k4, 23 byte
sumber
Zsh , 15 byte
Cobalah online!
String input berisi kutipan yang disematkan. Hapus
Q
untuk 14 byte jika string input tidak mengandung tanda kutip tertanam, seperti yang dilakukan dalam beberapa jawaban lain di sini.Bendera ekspansi parameter:
Q
dequote, lalu dipisahz
menjadi kata seperti halnya shell. Kata-kata tersebut kemudian secara implisit bergabung dengan spasi.sumber
Gelisah , 56 byte
Tunggu. Ganti hanya melakukannya sekali ? Sekarang saya harus menggunakan combo split-join.
Cobalah online!
Penjelasan
sumber
GolfScript , 8 byte
Cobalah online!
Penjelasan
Logikanya cukup sederhana:
sumber
Python2, 28 Bytes
Penjelasan
Fungsi anonim yang dianggap sebagai input s.
Mengembalikan daftar kata-kata (yang dipisahkan oleh string karakter spasi kosong) dari string s.
Bergabung kembali daftar menjadi string, dengan setiap kata dipisahkan oleh spasi ("").
sumber