Tugas Anda adalah menulis sebuah program yang, diberi nomor dan string, membagi string menjadi potongan-potongan seukuran itu dan membalikkannya.
Aturan
Program Anda akan menerima bilangan bulat positif n
, serta string s
dengan panjang setidaknya satu yang terdiri dari hanya ASCII yang dapat dicetak (tidak termasuk spasi). Tali kemudian harus dipecah menjadi potongan-potongan panjang n
, jika panjang tali tidak habis dibagi oleh n
sisa di akhir harus dianggap potongannya sendiri. Kemudian, balik urutan bongkahannya dan satukan kembali.
Uji Kasus
n s Output
2 abcdefgh ghefcdab
3 foobarbaz bazbarfoo
3 abcdefgh ghdefabc
2 a a
1 abcdefgh hgfedcba
2 aaaaaa aaaaaa
2 baaaab abaaba
50 abcdefgh abcdefgh
6 abcdefghi ghiabcdef
Ini adalah kode-golf , jadi Anda harus membidik sesedikit mungkin byte.
Jawaban:
Jelly , 2 byte
Program lengkap yang mencetak hasilnya.
Cobalah online!
Bagaimana?
sumber
Python 3 , 35 byte
Cobalah online!
sumber
and
kerja kata kunci di sini? @Dennis05AB1E ,
5 43 byte-1 berkat Dennis
-1 berkat carusocomputing
Cobalah online!
sumber
¹
tidak dibutuhkan.JavaScript (ES6), 37 byte
Mengambil input dengan mencari: angka pertama, lalu string, seperti
f(2)("abcdefgh")
.Tampilkan cuplikan kode
sumber
Perl 6 ,
2820 byteCobalah
Cobalah
Diperluas:
sumber
Bash + coreutils, 22
Cobalah online .
sumber
Haskell , 32 byte
Cobalah online!
sumber
PHP, 53 Bytes
sumber
Röda , 36 byte
Cobalah online!
Ini adalah fungsi yang membutuhkan satu argumen. Karakter string harus dalam arus.
try
digunakan untuk membuang kesalahan jikahead
fungsi tidak dapat membacan-1
nilai.Penjelasan:
Tidak sesulit biasanya. Saya pikir itu cukup indah. :)
sumber
[[try head n]]
bekerja[[_]..[try head n-1]]
?_
loop ekspresi.[[try head n]]
akan mengambil nilai n satu kali , tetapi[[_]..[try head n-1]]
mengambil nilai n selama ada nilai yang tersisa.CJam , 5 byte
Input adalah angka dan string yang dilampirkan dalam tanda kutip ganda, dipisahkan oleh spasi putih.
Cobalah online! Atau verifikasi semua kasus uji .
Penjelasan
sumber
Batch, 74 byte
Agak mengganggu ini akhirnya menjadi rekursif daripada ekor rekursif.
sumber
V ,
1310 byteCobalah online!
Dalam Aksi:
berubah menjadi
yang menjadi
sebelum semua baris baru dihapus
sumber
brainfuck , 78 byte
Byte pertama dari input adalah ukuran chunk, diberikan oleh nilai byte. Sisa dari byte dianggap sebagai string.
Cobalah online!
Diperluas dan dikomentari
sumber
PowerShell,
5649 byte-7 byte berkat mazzy
Cobalah online!
sumber
.ps1
dan coba panggil skrip ini alih-alih kode Anda. Jika berhasil, maka tes itu berhasil.Mathematica, 46 byte
Fungsi anonim. Mengambil angka dan string sebagai input dan mengembalikan string sebagai output. Tidak banyak yang bisa dilihat di sini.
sumber
Javascript -
544746 byteDibuat ulang:
Digunakan sebagai
Terima kasih kepada @ETHproductions untuk beberapa percepatan RegEx Terima kasih kepada @Shaggy untuk byte tambahan dalam eval!
Asli:
sumber
eval('/.{1,'+n+'}/g')
s=>n=> ...
eval("/.{1,${n}}/g")
, menggunakan backticks alih-alih tanda kutip.Pyth, 5 byte
Cobalah online .
Penjelasan
sumber
Retina , 38 byte
1 byte disimpan berkat @LeakyNun
(Perhatikan spasi di baris kedua, dan spasi tambahan)
Program ini mengambil input sebagai unary pada baris pertama, dan string pada baris kedua.
Cobalah online!
Test Suite! (sedikit dimodifikasi)
Penjelasan
Langkah pertama adalah menambahkan spasi (akan menjadi penting nanti).
Sekarang kita mundur. Ini menggunakan grup penyeimbang .NET. Penting untuk dicatat bahwa grup di sini bertindak sebagai tumpukan, sehingga setiap pertandingan pada dasarnya didorong ke tumpukan. Di sini kita menangkap setiap digit dalam nomor unary ke dalam grup 2. Sekarang setiap kali karakter dalam string ditemukan, kecocokan muncul dari grup 2. Ini memastikan jumlah karakter tidak melebihi jumlah dari angka unary.
Dan akhirnya menghapus nomor unary dan baris baru.
sumber
\d
dengan.
menyimpan byte.^
juga mubazir.\d
lagi. Dan terima kasih telah bermain golf tanda sisipan :)Java,
147138 BytesString r(String s,int n){String r="";int l=s.length();for(int i=l/n*n;i>=0;i-=n)if(!(i>=l))r+=(i+n)>=l?s.substring(i):s.substring(i,i+n);return r;}
Disimpan 9 Bytes berkat Kevin Cruijssen!
Dalam bentuk yang diperluas:
Ini sebenarnya adalah percobaan pertama saya untuk codegolf, jadi umpan baliknya diterima!
sumber
int l=s.length();for(int i=l/n*n;
bisaint l=s.length(),i=l/n*n;for(;
jadi Anda hanya punyaint
satu kali. Danif(!(i>=l))
bisa jadiif(l<i)
. Danr+=(i+n)>=l?
bisa tanpa kurung:r+=i+n>=l?
. Juga, jika Anda belum melihatnya, saya dapat merekomendasikan mencari tips untuk bermain golf di Jawa untuk beberapa tips bermain golf yang keren untuk digunakan. :) Sekali lagi, selamat datang.Perl 5 , 25 byte
Menggunakan
-lnM5.010
bendera.Cobalah online!
Berteriaklah pada Grinnz karena memberitahuku tentang
=~ m/.{1,$n}/g
-M5.010
memungkinkan penggunaansay
fungsi, yang untuk keperluan kita dicetak dengan nama yang lebih pendek.-n
menempatkan baris input pertama ke dalam$_
, dan-l
mematikan baris baru yang tertinggal.Kami kemudian mendapatkan input baris kedua menggunakan
<>
, dan menerapkannya pada regex.{1,$_}
: karakter apa saja, antara 1 dan $ _ (input pertama) kali. Karena ini serakah secara default, ia mencoba untuk selalu cocok dengan $ _ karakter. The1,
diperlukan untuk memungkinkan potongan sisa di akhir.The
/g
pengubah memberi kita setiap pertandingan itu regex dalam string masukan sebagai daftar, yang kemudian dibalik dan dicetak. Di Perl, meneruskan daftar untuksay
bergabung tanpa pembatas secara default.sumber
APL Dyalog Diperpanjang ,
1615 byteCobalah online!
sumber
f←
,/
→∊
∊∘⌽⊢⊂⍨≢⍤⊢⍴1↑⍨⊣
Python, 62 byte
Cobalah online!
sumber
f=lambda n,s:s and f(n,s[n:])+s[:n]
Ditumpuk , 9 byte
Cobalah online!
#<
potongan,rev
membalikkan, dan''#`
bergabung dengan string kosong. Cukup sederhana.sumber
QBIC , 24 byte
Ini memanfaatkan fungsi substring baru yang baru saja saya tambahkan ke QBIC:
sumber
Pyth, 4 byte
Mengambil input sebagai
"s",n
: Cobalah sendiri!sumber
Cembung , 2 byte
Cobalah online!
sumber
C, 69 byte
Hasilnya dicetak ke output standar.
sumber
Scala,
5755 byteYakub terima kasih! Cobalah sini .
Catatan: Dengan menggunakan bentuk simbol foldLeft ("/:"), saya dapat melepas beberapa byte lagi.
sumber
mkString
sebagai gantinyareduceLeft
, dan mencukur 7 byte:(n:Int,s:String)=>s.grouped(n).toSeq.reverse.mkString("")
Ohm , 5 byte
Cobalah online!
Penjelasan
sumber
R ,
6960 byteCobalah online!
Terima kasih kepada Kirill L. untuk saran untuk menghapus
seq
.sumber
:
dan beberapa manipulasi memungkinkan kita menyingkirkan trailing-1
.