Diberikan string, balikkan secara interleaving. Berikut cara melakukannya untuk abcdefghi
dan abcdefghij
, diindeks 0:
- Pisahkan karakter pada indeks genap dari karakter pada indeks ganjil:
acegi bdfh
acegi bdfhj - Membalikkan karakter pada indeks ganjil:
acegi hfdb
acegi jhfdb - Interleave menjadi satu string lagi:
ahcfedgbi
ajchefgdib
Aturan
- Anda harus mendukung string panjang genap dan ganjil.
- Dari indeks-bijaksana, Anda harus membalik karakter pada indeks aneh, bahkan tidak
- 1-indeks-bijaksana, tentu saja, Anda harus membalik karakter di indeks genap, tidak aneh.
- Input akan terdiri dari ASCII yang dapat dicetak (titik kode 32-126), tanpa baris baru.
- Anda dapat mengambil input baik sebagai string atau sebagai daftar karakter (BUKAN string 1-char). Misal
String
/char[]
atauchar*
diizinkan, tetapiString[]
/char[][]
atauchar**
tidak.
Uji kasus
Input
Output
Hello, World!
HdlroW ,olle!
Hello World!
H!llooW rlde
ABCDEFGHIJKLMNOPQRSTUVWXYZ
AZCXEVGTIRKPMNOLQJSHUFWDYB
!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~
}"{$y&w(u*s,q.o0m2k4i6g8e:c<a>_@]B[DYFWHUJSLQNOPMRKTIVGXEZC\A^?`=b;d9f7h5j3l1n/p-r+t)v'x%z#|!~
P
P
AB
AB
xyz
xyz
Untuk string kosong, kembalikan string kosong itu sendiri.
Jawaban:
Jelly , 7 byte
Ini adalah program lengkap.
Cobalah online!
Bagaimana itu bekerja
sumber
MATL , 8 byte
Cobalah online! Atau verifikasi semua kasus uji .
Penjelasan
sumber
2L
juga dengan "Dorong [2,2,1j]", dan5M
"Dorong [2,2,1j] lagi" "... Dan beberapa orang mengatakan bahwa bahasa golf tidak dapat dibaca!2L
menghasilkan literal yang sudah ditentukan sebelumnya.5M
adalah clipboard otomatis yang menyimpan input ke panggilan fungsi terbaru. Ini sebenarnya bisa digantikan oleh2L
untuk jumlah byte yang samaAlice , 10 byte
Cobalah online!
Setengah dari byte program ini dihabiskan untuk memformat sumber dengan benar, perintah yang sebenarnya adalah adil
IYRZO
, karena Alice hanya memiliki builtin yang tepat untuk tugas ini.Penjelasan
Seperti yang saya katakan, mirror (
/\
), baris baru dan@
ada di sana hanya untuk membuat ip bergerak ke arah yang benar dan mengakhiri program di akhir. Kode aktual, linear, adalah sebagai berikut:Cukup mudah, menurut saya.
sumber
Java (OpenJDK 8) ,
108969493 byteDisimpan 1 byte dengan menggunakan trik penggunaan Neil yang rapi
s[s.length+~i|1]
Cobalah online!
sumber
String f(char[]s)
dengans->
.. Dan Anda dapat menyimpan byte juga dengan menempatkanint
inisialisasi dalam untuk loop:for(int a=s.length,b=0;b<a;b++)
. Cobalah online.Python 2 , 52 byte
Cobalah online! atau Coba semua test case
sumber
Oktaf, 32 byte
Cobalah online!
sumber
JavaScript (ES6), 48 byte
sumber
Jelly , 9 byte
Cobalah online!
-1 byte terima kasih kepada Dennis
sumber
¢
denganÇ
, Anda tidak memerlukan³
tautan pembantu.Retina ,
1713 byteCobalah online!
Memperbaiki kesalahan berkat Neil.
Disimpan 4 byte berkat Kobi.
Memilih setiap huruf yang diawali dengan jumlah karakter ganjil dan membalikkannya. Lakukan ini dengan menggunakan
\G
yang cocok dengan akhir pertandingan terakhir.sumber
$
sebagai gantinya#
.\G
sebaliknya pada tampilan di belakang, dan Anda dapat menghapus$
:O^`(?<=\G.).
(12 byte)$
karena semua input berada dalam urutan leksikografis. Saya telah menambahkan test case baru dimana kode Anda akan gagal.PHP> = 7.1, 58 Bytes
Versi Online
sumber
APL (Dyalog) , 9 byte
Membutuhkan
⎕IO←0
(default pada banyak sistem) untuk definisi yang tepat dari ganjil dan genap.Cobalah online!
⌽
membalikkan@
pada elemen yang difilter oleh hasil topeng dari menerapkan{
fungsi anoniomous2|
mod-2 dari⍳
indeks dari≢
perhitungan (panjang) dari⍵
argumen}
pada argumensumber
Röda , 34 byte
Cobalah online!
Penjelasan
Berikut adalah solusi alternatif pada bytecount yang sama
3634 byteIni adalah fungsi anonim yang mengambil input sebagai string dari aliran input.
sumber
Python 2 , 67 byte
Cobalah online!
sumber
OCaml , 70 byte
Cobalah online!
sumber
Haskell , 63 byte
Cobalah online! Penggunaan:
f "some string"
.Untuk string aneh seperti
abcdefghi
, fungsif
melewati string dan pembalikannya ke fungsi!
, yang bergantian mengambil karakter dari kedua string. Untuk string genap ini tidak berfungsi, dan kita perlu menambahkan karakter dummy terlebih dahulu untuk mendapatkan offset yang tepat.sumber
C, 69 byte
Cukup mudah. Berjalan di tali, mencetak karakter saat ini atau sebaliknya.
Tidak digabungkan dan dijelaskan:
sumber
Mathematica, 82 byte
sumber
Japt ,
1413 byte12 byte kode, +1 untuk
-P
bendera.Disimpan 1 byte berkat @Shaggy
Penjelasan:
Cobalah online!
sumber
ë2,1
agak jelek. Saya pikir Anda dapat melakukannyaó o
sebagai gantinya, mungkin ...Åë
berfungsi juga.Japt , 8 byte
Menguji
sumber
K (oK) , 18 byte
Larutan:
Cobalah online!
Contoh:
Penjelasan:
Sebagian besar diinterpretasikan dari kanan ke kiri, cari karakter indeks ganjil, balikkan dan masukkan kembali ke dalam string
sumber
J, 26 byte
ungolfed
penjelasan
(0 1$~#)]`(|.@])/.]
Gunakan Kunci/.
untuk membagi input menjadi kelompok genap / ganjil:(0 1$~#)
membuat definisi grup, dengan mengulangi 0 dan 1 secara siklik hingga panjang input. Kami menggunakan bentuk gerundial Key untuk kata kerja utamanya]`(|.@])
, yang berlaku identitas untuk kelompok pertama dan membalikkan kelompok kedua:(|.@])
.,@,./
Cobalah online!
sumber
(\:2|#\)({~/:)#\<.#\.
dan 19 byte dengan[:,@,./]]
| ./. ~ 2 | # `[:,@,./]]`|./.~2|#\
, kutu diurai0,@|:]]`|./.~2|#\
Python 3,
9387 bytesumber
reversed(s[1::2])
dengans[1::2][::-1]
untuk menyimpan 4 bytef=lambda s,j="".join:j(j(t)for t in zip(s[::2],s[1::2][::-1]))+("",s[-1])[len(s)%2]
Perl 6 ,
63 5855 byteMenguji
Menguji
Menguji
Saya harus menggunakan
roundrobin
daripadazip
, karenazip
berhenti segera setelah salah satu daftar input habis.sumber
Mathematica, 62 byte
mengambil input string
Cobalah online!
sumber
APL (Dyalog) , 24 byte
Bytes golf berkat @ Adám
Cobalah online!
sumber
GNU APL 1.2, 24 byte
APL bekerja dari kanan ke kiri.
⍴R←⍞
menetapkan input pengguna keR
dan kemudian mengevaluasi panjangnya. Membagi dua ini dengan mengalikan dengan.5
dan menerapkan⌊
fungsi lantai.⍳
mengembalikan semua angka dari 1 ke argumen.APL beroperasi pada array, jadi
2×
array yang baru saja kita dapatkan dari⍳
menggandakan masing-masing elemen, memberi kita hanya indeks genap (1-diindeks, jadi andalkan⎕IO
1).Saat mengakses beberapa indeks vektor, APL memberikan elemen pada indeks tersebut dalam vektor.
R[X←2×⍳⌊.5×⍴R←⍞]
hanya memberikan elemen genap.⌽
membalikkan elemen. Kemudian, tetapkan nilai yang dikembalikan kembali ke indeks genap (menugaskan indeks ini untukX
menyimpan 6 byte).◊
adalah pemisah pernyataan. Setelah pembalikan dilakukan, evaluasiR
untuk mencetak hasilnya.sumber
Perl 5, 46 + 3 untuk -F flag = 49 byte
Menggunakan
-F
bendera untuk membagi input menjadi array karakter secara otomatis@F
,. Loop melalui array dan output elemen untuk indeks genap atau indeks (ditambah satu untuk string panjang ganjil) dari ujung untuk input ganjil.Mengambil input dengan baris baru yang tertinggal. Tanpa trailing newline, cukup ubah pra-kenaikan
$x
menjadi pasca kenaikan.Sedikit lebih mudah dibaca:
sumber
05AB1E , 21 byte
Cobalah online!
Saya menduga alasan ini belum dilakukan di 05AB1E belum karena itu kotor ...
Namun lain kali,
zip
fungsi auto-drop-last-element lebih menyakitkan daripada membantu.PS Jika Anda memiliki saran peningkatan pada jawaban saya, posisikan sendiri; sepertinya cukup perbaikan untuk menjamin Anda mendapatkan poin. Saya cukup malu dengan jawaban ini.
sumber
q / kdb +,
70564738352927 byteLarutan:
Contoh:
Penjelasan:
Temukan indeks ganjil dari string, balikkan daftar ini, tarik keluar elemen pada titik-titik ini dan kemudian tetapkan kembali di tempat ke string asli.
Suntingan:
-9 byte; beralih
count
ke(#:)
,til
untuk(!)
,where
untuk(&:)
danreverse
untuk(|:)
.-3 byte; beralih
(#:)
ke(#)
,(&:)
untuk(&)
dan(|:)
untuk(|)
-6 byte; lengkap tulis ulang
-2 byte; menggunakan penugasan alih-alih melamar
sumber
05AB1E , 12 byte
Cobalah online!
sumber