Diberikan daftar atau string yang dibatasi, mengeluarkan daftar atau string yang dibatasi dengan karakter pertama dari setiap kata satu kata kemudian.
Untuk tantangan ini, "kata" hanya terdiri dari semua karakter ASCII yang dapat dicetak, kecuali karakter spasi, baris baru, dan tab.
Misalnya, ambil senar "Selamat siang, Dunia!" (dibatasi-ruang):
1. String
"Good afternoon, World!"
2. Get the first characters:
"[G]ood [a]fternoon, [W]orld!"
3. Move the characters over. The character at the end gets moved to the beginning.
"[W]ood [G]fternoon, [a]orld!"
4. Final string
"Wood Gfternoon, aorld!"
Ini kode-golf , jadi kode terpendek menang!
Kasus uji:
Input -> output (space-delimited)
"Good afternoon, World!" -> "Wood Gfternoon, aorld!"
"This is a long sentence." -> "shis Ts i aong lentence."
"Programming Puzzles and Code Golf" -> Grogramming Puzzles Pnd aode Colf"
"Input -> output" -> "onput I> -utput"
"The quick brown fox jumped over the lazy dog." -> "dhe Tuick qrown box fumped jver ohe tazy log."
"good green grass grows." -> "good green grass grows."
Jawaban:
05AB1E ,
76 bytePenjelasan:
Cobalah online!
sumber
Japt ,
111098 byteMengambil keuntungan dari pembungkus indeks Japt dan indeks negatif.
Cobalah online
Penjelasan
sumber
¸
h
adalah ide yang bagus. Saya datang dengan£g´Y ¯1 +XÅ
yang bisa menjadi £ XhUg'Y ¯ 1 menggunakan teknik Anda.Haskell , 43 byte
Cobalah online! Menggunakan daftar string untuk input dan output.
Mengingat huruf pertama dari kata sebelumnya
p
, dan secara rekursif menjadikannya huruf pertama dari kata saat ini saat mengirim huruf pertama yang baru ke rantai. Huruf pertama sebelumnya diinisialisasi sebagai huruf pertama dari kata terakhir.sumber
Ruby,
857763 byteCukup yakin ini bisa menjadi jauh lebih pendek.
Sunting: Terima kasih atas @manatwork untuk kumpulkan -> peta
sumber
.collect
dan.each
dengan.map
.-p
i=-2;gsub(r=/\b\w/){$_.scan(r)[i+=1]}
benderai (+1 byte) dan untuk pegolf terbaikJelly , 6 byte
Cobalah online!
Terima kasih kepada Dennis untuk membaca aturan lebih baik dari saya, ini mengembalikan daftar kata-kata. Itu tidak berfungsi sebagai program lengkap.
sumber
CJam ,
12109 byteDisimpan 1 byte berkat jimmy23013
Mengambil input sebagai daftar kata.
Cobalah online!
Penjelasan
sumber
)o
untuk1m>
.V , 7 byte
Cobalah online!
Penjelasan:
sumber
JavaScript (ES6), 46 byte
Mengambil keuntungan dari fakta yang
slice(-1)
mengembalikan elemen terakhir array.Potongan
Tampilkan cuplikan kode
sumber
Vim,
16, 9 byte7 byte disimpan berkat @Wossname!
Mengambil input satu kata per baris, mis
Saya percaya ini harus baik-baik saja karena mengambil input sebagai daftar diperbolehkan.
Cobalah online!
sumber
^vGdjPGd$ggP
(di mana ^ v adalah kombo kunci [control + v], pastikan untuk memulai dengan kursor di kiri atas dan berada dalam mode perintah)dd -> D
,,gg -> }
) Terima kasih atas tipnya!> <> ,
4445 byteMengasumsikan kata-kata yang dipisahkan oleh ruang.
Koreksi oleh Aaron menambahkan 1 byte
sumber
Python 2, 74 byte
Cobalah online
-5 byte, terima kasih kepada @Rod
sumber
S[:-1]
dapat disingkat menjadiS
; zipping daftar dengan panjang berbeda secara otomatis memotong mana yang lebih panjangHaskell , 50 byte
Input dan output adalah sebagai daftar kata-kata.
sumber
f=
.PHP, 62 byte
sumber
C #,
7877 byteKompilasi ke versi
Func<List<string>, IEnumerable<string>>
, Lengkap / Diformat:sumber
Brachylog , 12 byte
Cobalah online!
Penjelasan
sumber
R,
7270 bytefunction(x)paste0(substr(x,1,1)[c(y<-length(x),2:y-1)],substring(x,2))
Cobalah online
2 byte disimpan berkat Giuseppe.
Input dan output adalah daftar. Membawa substring yang terdiri dari huruf pertama, siklus yang terakhir ke depan, dan menempelkannya bersama dengan substring dari sisa setiap kata. Langkah bersepeda adalah pembunuh, tapi saya tidak tahu cara untuk memotongnya lebih jauh.
sumber
2:y-1
alih-alih1:(y-1)
karena:
diutamakan-
yang menghemat 2 byte.substring
sebagai argumen fungsiPython 2 + Numpy, 104 byte
sumber
APL (Dyalog) , 6 byte
Membawa matriks dengan satu kata per kolom.
Cobalah online!
¯1∘⌽
putar satu langkah ke kanan@
di1
baris 1sumber
Mathematica, 59 byte
Cobalah online!
Mengambil dan mengembalikan daftar kata.
Jika Anda memilih untuk mengambil dan mengembalikan string, ini berfungsi untuk 87 byte:
sumber
Retina,
463731 byteCobalah secara Online
Masih bermain golf ..
sumber
(.*)
dan$3
?+
baris pertama menjadi*
Anda mengubah(.* .)
baris ketiga menjadi(.*)
-2 byte. Cobalah secara Online!kdb +,
2522 byteLarutan:
Contoh:
Penjelasan:
Tambahan:
Versi yang menggunakan string biasa (37 byte):
sumber
Perl 5 , 40 byte
39 byte kode +1 untuk
-a
Cobalah online!
sumber
Retina ,
2520 byteHitungan byte mengasumsikan penyandian ISO 8859-1.
Cobalah online!
Input dan output dipisahkan oleh linefeed. Test suite melakukan konversi I / O yang diperlukan dari pemisahan ruang.
sumber
Mathematica, 134 byte
sumber
Pyth, 12 byte
Mengambil daftar kata dan mengembalikan daftar kata.
Cobalah!
sumber
Java (OpenJDK 8) , 97 byte
Cobalah online!
sumber
C,
10677 byte-29 byte dari scottinet
Memodifikasi string di tempat.
Tidak Disatukan:
sumber
J , 34 byte
Cobalah online!
sumber
Sekam , 11 byte
Input dan output sebagai daftar string, coba online!
(Header hanya mengubah input ke daftar kata dan bergabung dengan daftar output dengan spasi.)
Penjelasan
Alternatif, 11 byte
Cobalah online!
sumber
AWK , 63 byte
Cobalah online!
Sepertinya harus ada cara untuk mengurangi redundansi, tapi aku tidak melihatnya.
Catatan: tautan TIO memiliki 4 byte tambahan untuk memungkinkan input multiline.
sumber