Tantangan
Dalam tantangan ini, Anda harus melakukan dua tugas yang berbeda (tetapi terkait) tergantung pada urutan input.
Program Anda akan menerima string s
dan integer n
sebagai input dan akan
- dipecah
s
menjadi potongan-potongan panjangn
jika yangs
lebih dulu. Elemen terakhir akan lebih pendek jika perlu. - dibagi
s
menjadin
potongan-potongan dengan panjang yang sama jikan
datang terlebih dahulu. Jikalen(s)
bukan merupakan kelipatan dari elemenn
pertamalen(s) mod n
akan menjadi lebih lama.
Anda hanya dapat mengambil 2 input tersebut. s
tidak akan pernah hanya berisi digit.
Catatan
- Anda dapat menggunakan pemetaan terbalik. Catat ini dalam jawaban Anda jika Anda melakukannya.
s
hanya akan berisi karakter ASCII yang dapat dicetak (tidak ada baris baru).- Anda tidak dapat menggunakan bawaan apa pun yang menyelesaikan kedua tugas tersebut secara langsung. Semua bawaan lainnya diizinkan.
- Anda harus mengambil kedua argumen dari sumber yang sama.
- Anda dapat mengambil argumen dalam daftar yang diurutkan atau format lain yang dengan jelas menunjukkan pesanan mereka selama tidak jelas.
- Anda dapat mengambil input sebagai satu string / aliran dan menggunakan karakter yang bukan input yang valid (seperti nullbyte) untuk memisahkannya.
n
akan selalu sama atau kurang dari panjangs
dan lebih besar dari nol.- Anda dapat menampilkan daftar yang dihasilkan dalam format resonable apa pun selama itu menunjukkan dengan jelas bagian-bagian tertentu dan urutannya.
Contoh
Input: programming, 3
Elemen terakhir hanya berisi 2 karakter, karena 11 tidak dapat dibagi oleh 3.
Output: ["pro", "gra", "mmi", "ng"]
Input: 3, programming
11 bukan kelipatan 3, jadi 2 elemen pertama akan lebih panjang:
Output: ["prog", "ramm", "ing"]
Aturan
- Fungsi atau program lengkap diizinkan.
- Aturan default untuk input / output.
- Celah standar berlaku.
- Ini adalah kode-golf , sehingga byte-count terendah akan menang. Tiebreak adalah pengiriman sebelumnya.
Uji kasus
Kasing uji dibuat dengan program Pyth ini (menggunakan bawaan, jadi tidak ada jawaban yang valid). Terima kasih kepada @FryAmTheEggman untuk menyediakan versi dasar dari itu!
3, helloworld -> ['neraka', 'owo', 'rld'] helloworld, 3 -> ['hel', 'low', 'orl', 'd'] 1, pemrograman -> ['pemrograman'] pemrograman, 1 -> ['p', 'r', 'o', 'g', 'r', 'a', 'm', 'm', 'i', 'n', 'g'] 8, pemrograman -> ['pr', 'og', 'ra', 'm', 'm', 'i', 'n', 'g'] pemrograman, 8 -> ['programm', 'ing'] 9, golf kode -> ['c', 'o', 'd', 'e', '', 'g', 'o', 'l', 'f'] golf kode, 9 -> ['golf kode'] 4, 133tpeak -> ['133', 'ts', 'pe', 'ak'] 133tspeak, 4 -> ['133t', 'spea', 'k']
Selamat Coding!
Jawaban:
MATL,
462621272942 byteCobalah secara Online! (Diperbarui sedikit agar berfungsi dengan versi bahasa terbaru)
Penjelasan
sumber
e
builtin dilarang?XUZN?...
denganU?...
dan menukar keduaif
cabang. Juga, Anda tidak perlu3$
e
tidak secara langsung menyelesaikan masalah, jadi saya tidak menganggapnya dilarang, tidak.JavaScript (ES6), 132 byte
Ini mungkin terlalu banyak direkayasa.
sumber
JavaScript (Firefox),
8887 byteSebut saja seperti
(...)("programming")(3)
menggunakan Firefox 30+.sumber
Ruby, 119 byte
Dan saya mengambil tempat pertama dengan 2 byte ...
sumber
x.scan(/.{,#{y}})
berfungsi juga untuk memisahkan string dalam kasus pertama. Atau apakah itu dianggap sebagai builtin?AWK,
121130128122 BytesSatu-satunya masalah adalah jika entri pertama adalah string yang dimulai dengan nilai numerik. Ini akan menyebabkan
AWK
melihat string sebagai angka itu dan entri kedua sebagai string.OKE ... memperbaiki masalah numerik, tetapi menambahkan 9 byte :(.
Ulang sedikit untuk menyimpan beberapa byte.
Hampir kembali ke panjang aslinya. :)
sumber
Haskell, 131 byte
Contoh penggunaan:
Cara kerjanya: pekerjaan utama dilakukan oleh fungsi helper
q
yang mengambil sepasang angka(d,m)
dan strings
. Pertama membangun daftarm
waktud+1
diikuti oleh banyak tak terbatasd
(mis(1,3)
- -[2,2,2,1,1,1,1,1,...]
). Ini kemudian digunakansplitPlaces
untuk membagis
menjadi potongan-potongan panjang yang diberikan oleh daftar.splitPlaces
berhenti jikas
kehabisan elemen, sehingga daftar yang tak terbatas baik-baik saja.Fungsi utama
#
pemeriksaan yang parameter adalah jumlahn
/ stringstr
dan panggilanq
dengan baik(div (length str) n, mod (length str) n)
atau(n, 0)
ditambahstr
.sumber
C # (LINQPAD) - 335 byte
Bagian pembacaan input memakan sedikit ruang. Pemenang jawaban terlama.
Penggunaan # 1:
Penggunaan # 2:
sumber
Pyth, 181 byte
Mari kita berpura-pura kode terpanjang dalam byte menang \ o /
Coba di sini! (Juru bahasa online tampaknya memiliki bug, itu menampilkan input sementara seharusnya tidak)
Inilah output dari terminal:
Serius, saya terbuka untuk pendekatan baru. Saya baru mengenal python, jadi saya mungkin melewatkan beberapa singkatan.
Maksud saya, saya pikir jawaban saya kurang jelas dari titik itu lebih panjang dari jawaban javascript ...
sumber
testcases
. Testcases dihasilkan oleh Pyth. Solusinya adalah.xcsJKcJsK
, di manaJ
danK
merupakan dua argumen.PHP, 114 byte
(Ganti
+@$p
denganis_numeric($p)
untuk memperbaiki.)(Sisipkan
~
untuk ASCII yang dapat dicetak,a&
untuk ASCII apa pun sebelum$t;
diperbaiki.)-nr
atau coba online .sumber
PowerShell ,
122118 byteCobalah online!
Kurang golf:
sumber