Deskripsi Tantangan
Siklus semua huruf dari bagian pertama alfabet di satu arah, dan huruf dari bagian kedua alfabet di yang lain. Karakter lain tetap di tempatnya.
Contohnya
1: Halo dunia
Hello_world //Input
Hell ld //Letters from first half of alphabet
o wor //Letters from second half of alphabet
_ //Other characters
dHel ll //Cycle first letters
w oro //Cycle second letters
_ //Other characters stay
dHelw_oroll //Solution
2: codegolf
codegolf
c deg lf
o o
f cde gl
o o
focdeogl
3 .: string kosong
(empty string) //Input
(empty string) //Output
Memasukkan
String yang Anda butuhkan untuk memutar. Mungkin kosong. Tidak mengandung baris baru.
Keluaran
String input yang diputar, membuntuti baris baru
, Dapat ditulis ke layar atau dikembalikan oleh fungsi.
Aturan
- Tidak ada celah yang diizinkan
- Ini adalah kode-golf, jadi kode terpendek dalam byte yang menyelesaikan masalah akan menang
- Program harus mengembalikan solusi yang benar
Jawaban:
MATL , 29 byte
Cobalah online!
Penjelasan
sumber
Retina , 55 byte
Cobalah online!
Gunakan dua tahap penyortiran untuk memutar huruf babak pertama dan kedua secara terpisah.
sumber
05AB1E ,
444342 bytePenjelasan
Buat daftar huruf alfabet dari kedua kasus.
['Aa','Bb', ..., 'Zz']
Membagi menjadi 2 bagian dan menyimpan salinan di register.
Ekstrak surat dari input yang merupakan bagian dari semester 1 alfabet, putar dan toko di X .
Ekstrak surat dari input yang merupakan bagian dari 2 setengah dari alfabet, putar dan toko di Y .
Loop utama
Cobalah online!
Catatan: terkemuka The
Ð
dapat dihilangkan dalam 2sable untuk 41 solusi byte.sumber
<s>44</s>
masih terlihat seperti 44.Javascript (ES6),
155142138 byteSunting: disimpan
34 byte dengan menggunakanunshift()
(terinspirasi oleh jawaban edc65)Bagaimana itu bekerja
The
R
Fungsi mengambil metode array sebagai parameter nyam
:Ini pertama kali digunakan dengan
push
metode untuk menyimpan karakter yang diekstraksi dalama[]
(bagian pertama dari alfabet) danb[]
(bagian kedua dari alfabet). Setelah array ini diputar,R()
disebut kali kedua denganshift
metode untuk menyuntikkan karakter baru ke string terakhir.Oleh karena itu sintaks yang sedikit tidak biasa:
R`push`
danR`shift`
.Demo
sumber
a.unshift(a.pop(b.push(b.shift())))
CJam , 41 byte
Cobalah online!
Menggunakan pendekatan yang mirip dengan jawaban pengacakan vokal saya .
sumber
Python, 211 Bytes
Yang terbaik yang bisa saya lakukan. Mengambil string dari STDIN dan mencetak hasilnya ke STDOUT.
alternatif dengan 204 Bytes, tetapi sayangnya mencetak baris baru setelah setiap karakter:
sumber
Python 2, 149 byte
sumber
JavaScript (ES6), 144
Menggunakan
parseInt
basis 36 untuk memisahkan babak pertama, babak kedua dan lainnya. Untuk karakter apa punc
, saya mengevaluasiy=parseInt(c,36)
demikianc '0'..'9' -> y 0..9
c 'a'..'m' or 'A'..'M' -> y 10..22
c 'n'..'z' or 'N'..'Z' -> y 23..35
c any other -> y NaN
Jadi
y=parseInt(c,36), x=(y>22)+(y>9)
berikanx==1
untuk babak pertama,x==2
untuk babak kedua danx==0
untuk yang lainnya (sepertiNaN
> angka salah)Langkah pertama: string input dipetakan ke array 0,1 atau 2. Sementara semua karakter string ditambahkan ke 3 array. Pada akhir langkah pertama ini array 1 dan 2 diputar dalam arah yang berlawanan.
Langkah kedua: array yang dipetakan dipindai, membangun kembali string output yang mengambil setiap karakter dari 3 array sementara.
Kurang golf
Uji
sumber
Perl. 53 byte
Termasuk +1 untuk
-p
Jalankan dengan input pada STDIN:
drotate.pl
:sumber
Python,
142133 byteVariasi yang lebih baik pada tema:
ungolfed:
solusi sebelumnya:
ungolfed:
sumber
Ruby, 89 byte
sumber
PHP, 189 byte
Cukup sulit untuk bermain golf ... Ini proposal saya:
sumber