Cerita
Pernahkah Anda melihat posting ini dari 9gag ? Mungkin Anda punya perasaan untuk membuat kalimat sendiri. Tapi kemudian Anda menyadari bahwa Anda bisa bermain golf hanya dalam waktu setengah jam, dan Anda tidak akan pernah harus berurusan dengan itu.
Pengajuan
Program Anda akan mendapatkan string input yang akan dikembalikan dengan tanda kutip tambahan seperti yang dijelaskan di bawah ini. Celah standar dilarang. Output sebagai daftar baris diperbolehkan. Membuntuti spasi dan garis kosong yang tidak merusak output diizinkan.
Aturan input
- Input hanya berisi karakter ASCII yang dapat dicetak.
- Input mungkin berisi spasi. Kata-kata ditentukan bersama mereka.
- Dijamin bahwa ruang tidak akan pernah diikuti oleh ruang lain.
- Kasus tanpa input atau string kosong tidak masalah.
Aturan output
Jika satu kata diberikan maka program harus mengembalikan string di antara tanda kutip.
Jika string input memiliki 2 kata atau lebih, itu pertama mengembalikan input awal, tetapi kata pertama dalam tanda kutip. Kemudian pada baris berikutnya, ia mengembalikan input awal, tetapi dengan kata kedua dalam tanda kutip. Demikian seterusnya untuk kata-kata yang tersisa.
Secara umum, program harus mengembalikan banyak baris karena ada kata-kata dalam input.
Contoh:
test -> "test"
This is codegolf -> "This" is codegolf
This "is" codegolf
This is "codegolf"
This is a significantly longer, but not the longest testcase -> "This" is a significantly longer, but not the longest testcase
This "is" a significantly longer, but not the longest testcase
This is "a" significantly longer, but not the longest testcase
This is a "significantly" longer, but not the longest testcase
This is a significantly "longer," but not the longest testcase
This is a significantly longer, "but" not the longest testcase
This is a significantly longer, but "not" the longest testcase
This is a significantly longer, but not "the" longest testcase
This is a significantly longer, but not the "longest" testcase
This is a significantly longer, but not the longest "testcase"
Here is an another one -> "Here" is an another one
Here "is" an another one
Here is "an" another one
Here is an "another" one
Here is an another "one"
Ini adalah kode-golf , jadi jawaban byte terkecil menang!
"
karakter?''
,‘’
, atau“”
, bukan""
?Jawaban:
vim, 38 byte
Cobalah online!
Membutuhkan plugin vim-surround .
Jika input tidak mengandung
"
karakter, ini dapat dilakukan dalam 19 byte :Di sini, kami merekam makro rekursif (
qq ... @qq@q
) yang mengelilingi sebuah kata dengan tanda kutip (ysW"
), menduplikasi baris (Yp
), menghapus tanda kutip (ds"
), dan pindah ke kata berikutnya (W
) sebelum memanggil dirinya secara rekursif. Setelah itu berakhir, ada dua baris asing, yang dihapus dengandk
.Solusi lengkap hanya membungkus ini dengan
:s/"/<C-d>/g
di awal, yang menggantikan"
karakter yang ada dengan karakter yang tidak diinginkan, dan:%s/<C-d>/"/g
pada akhirnya, yang membatalkan penggantian.sumber
Haskell, 65 byte
Mengembalikan daftar garis.
Cobalah online!
sumber
\n
sebagai spasi, itu berperilaku tidak benar ketika itu ada.~
. "Input mungkin berisi spasi" - bukan "spasi putih".Retina 0.8.2 , 17 byte
Cobalah online! Tautan termasuk test suite. Penjelasan:
Perluas setiap ruang dengan menduplikasi baris dan kemudian menyisipkan tanda kutip.
Perbaiki baris pertama dan terakhir.
sumber
Jelly ,
1514 byteCobalah online!
Bagaimana?
sumber
JavaScript (ES6),
43 42 4138 byteDisimpan 3 byte berkat @mazzy
Menggunakan non-standar tetapi banyak didukung
RegExp.leftContext
danRegExp.rightContext
. Itu banyak kutipan berbeda ...Cobalah online!
sumber
This is a significantly "longer,"...
/(\S+)/g
bekerjaJawa,
235 183132 byte-52 byte dengan menyalahgunakan berbagai hal (akses statis, daftar vs array, mencetak bukannya kembali, dll. Terima kasih @ValueInk!)
-51 byte oleh beung lazy dan membiarkan @KevinCruijssen melakukan pekerjaan untuk saya
Cobalah online
sumber
java.util.Arrays.copyOfRange
. Jika Anda menggunakan,java.util.List
Anda dapat menggunakansubList
untuk lebih pendek, dan mencetak ke STDOUT daripada membangun array. Saya mendapat 193 byte dengan ide-ide itu, dan juga menyalahgunakan kata kunci var.String.join
dengans.join
untuk peringatan IDE ekstra (dan -10 byte).Usaha kode golf pertama mudah-mudahan itu tidak buruk dan mudah-mudahan itu tidak melanggar aturan
Kotlin,
105112147117 byte / karakterCobalah online!
sumber
05AB1E , 14 byte
Cobalah online!
+1 byte (dan berfungsi untuk kasus tepi) berkat Emigna. -1 byte terima kasih kepada Kevin!
sumber
ð¡
untuk menangani input sepertitest
.»
.JavaScript,
91977578 byteMenghasilkan daftar garis sebagai array JavaScript. Entri terakhir memiliki ruang tambahan seperti yang diizinkan dalam pertanyaan. Kode uji menulis setiap entri ke konsol pada baris terpisah untuk tujuan demonstrasi.
Berkat Shaggy selama 19 byte dan tidak ada spasi utama - saat operator spread digunakan pada array kosong untuk menginisialisasi array literal, tidak ada slot yang dibuat dalam array yang diproduksi oleh operator spread:
(Versi 91 byte memiliki ruang terdepan di baris pertama, versi 97 byte membutuhkan 6 byte untuk menghapusnya.)
sumber
f
fungsi. Jika tidak diverifikasi. Kerja bagus!Python 3 ,
79,69, 65 byteCobalah online!
Dicukur 10 byte berkat xnor. Dan sekarang ini adalah 65 byte per Erik solusi Outgolfer. Program berakhir dengan IndexError tetapi ini baik-baik saja.
sumber
print(*l)
Python 3 sebagai penggantiprint(" ".join(l))
.w
untukinput().split()
, menetapkan keinput()
, kemudian, dalamwhile
lingkaran, menetapkanm
untukw.split()
, yang akan membuat daftar baru di setiap iterasi untuk masalah referensi menghindari, kemudian mengaturm[i]
untuk'"%s"'%m[i]
danprint(*m)
.Java 8,
72716762 byteCobalah online.
Penjelasan:
Penjelasan regex:
sumber
Ruby dengan
-an
, 53 byteBendera
-an
dibaca setiap baris dan dibagi menjadi$F
.Cobalah online!
sumber
Ruby , 98 karakter.
Pengiriman pertama. Ini pasti bisa dipersingkat. Saya hanya ingin mendapatkan jawaban dengan cepat.
Cobalah online!
sumber
s.split
sebagai variabel dan edit indeks yang ingin Anda kutip di sekitarnya, daripada menggunakan verbose yang terlalu banyakeach_with_index.map
. Anda juga dapat mengirimkan lambda anonim tanpa menyebutkan namanya, dan bergabung bisa diganti dengan*
operator. Ini menurunkan jumlah byte Anda menjadi 64 byte.Perl 6 ,
4340 byteCobalah online!
Cocokkan semua kata yang mungkin, kemudian gabungkan setiap daftar dengan kutipan. Ini bisa menjadi satu byte lebih pendek jika kita bisa mengeluarkan garis dalam urutan terbalik.
Penjelasan:
sumber
Refleksi , 229 byte
Menguji!
Saya "cepat" "bermain golf" dalam bahasa "lucu" "bermain golf".
Melihat semua ruang putih itu, mungkin bisa lebih pendek.
sumber
Haskell , 64 byte
Cobalah online!
Menghasilkan daftar string. Berdasarkan jawaban nimi .
sumber
\n
atau"
.Stax , 10 byte
Jalankan dan debug itu
Dibongkar, tidak diserang, dan dikomentari, sepertinya ini.
Jalankan yang ini
sumber
C (gcc) ,
136133 byteKarena fungsi tokenizing C akan mengacaukan string pada bacaan di masa mendatang, saya sebagai gantinya menghitung jumlah dan offset untuk setiap kata dan kemudian selesai ketika jumlah total iterasi loop luar cocok dengan jumlah kata.
Cobalah online!
sumber
"\""+!!(i-++j)
untuki-++j?"":"\""
menghemat satu byte.PowerShell ,
604036 byte-20 byte terinspirasi oleh Arnauld
Cobalah online!
Hasilnya memiliki satu ruang ekstra dan satu garis kosong di bagian ekor.
Powershell, tanpa regexp, 60 byte
Cobalah online!
Kurang bermain golf:
sumber
The input only contains printable ASCII characters.
, 2The input may contain spaces
.. Tab dan spasi lain tidak bisa dicetak ASCII, bukan? :)JavaScript, 62 byte
Terima kasih @Shaggy untuk bermain golf 10 byte
Penjelasan
sumber
Java (JDK) , 104 byte
Cobalah online!
sumber
R ,
9476 byte-18 byte terima kasih kepada Giuseppe
Cobalah online!
Terima kasih kepada DigEmAll untuk mengatur TIO dengan benar. Itu mengambil misalnya
This is codegolf
dan output dengan benarIni menggunakan format matriks dengan kalimat yang berulang
n
kali; maka kita hanya perlu mengubah entri diagonal. Perhatikan bahwa biasanya, dalam R code-golf, string dibaca bersamascan(,"")
, tetapi string apa pun dapat digunakan sebagai ganti string kosong sebagai parameterwhat
(atauw
).Penjelasan dari versi lama ungolfed:
sumber
scan
??""
, kita dapat mengurangi menggunakan 68 bytesQuote
.Ini golf kode pertamaku. mudah-mudahan itu bukan omong kosong.
EDIT: turun ke 54 byte dengan ekspresi reguler yang lebih baik.
** EDIT 2: per saran, memperbaiki bug dan membuatnya lebih pendek **
JavaScript (V8) , 46 byte
Cobalah online!
sumber
C # (Visual C # Interactive Compiler) dengan
/u:System.Text.RegularExpressions.Regex
flag,5940 bytePort of Java 8 saya menjawab , jadi lihatlah di sana untuk penjelasan.-19 byte dengan port @Arnauld regex 's , karena
$`
dan$'
didukung di C # .NET.Cobalah online.
sumber
Elm Menggunakan rekursi,
132.130.121.111.10099 byteGolf turun 9 byte berkat teknik Kevin Cruijssen dan 22 byte lainnya dipecahkan oleh ASCII saja . Beralih ke rekursi non-ekor selama golf.
Cobalah online
85 byte setelah mengekspos
String
fungsi ke lingkup saat iniVersi tidak disatukan (Menggunakan rekursi ekor)
Coba ungolfed
sumber
Japt ,
1412 byteCobalah
2 byte disimpan berkat Oliver.
sumber
PowerShell ,
7065 byteCobalah online!
Memiliki test suite dalam uji coba. Memiliki 1 ruang terdepan di baris pertama, dan 1 ruang tambahan di baris terakhir. Mencoba melakukan refactor.
sumber
Arang , 19 byte
Cobalah online! Tautan adalah untuk mengucapkan versi kode. Catatan: Ruang tambahan. Penjelasan:
sumber
Attache , 34 byte
Cobalah online!Fungsi anonim mengembalikan daftar baris.
Penjelasan
sumber
C # (Visual C # Interactive Compiler) , 123 byte
Saya ingin tahu apakah ini dapat dipersingkat dengan ekspresi reguler.
Cobalah online!
sumber