Terkait: Tantangan yang agak mirip (tapi jauh lebih mudah) secara horizontal: Di sana saya memperbaikinya (dengan kaset)
Tantangan:
Diberikan string yang hanya berisi huruf besar dan kecil (mana saja yang Anda suka) dan baris baru, masukkan rope
secara vertikal untuk memperbaikinya. Kami melakukan ini dengan memeriksa perbedaan dua huruf yang berdekatan dalam alfabet (mengabaikan pembungkus dan hanya turun ke bawah), dan mengisi ruang dengan sebanyak ROPE
/ yang rope
kita butuhkan.
CATATAN: Satu perbedaan utama lainnya antara tantangan ini dan tantangan Di sana saya memperbaikinya (dengan pita) adalah bahwa kita tidak membuang-buang rope
waktu seperti yang kita lakukan dengan tape
(disarankan oleh @ Jonathan Allan di bagian satu dari tantangan).
Contoh:
Memasukkan:
abc
bcd
ddd
eex
gfz
hka
imh
Keluaran:
abc
bcd
Rdd
deE
efR
OPO
gEP
hRE
iOR
kO
PP
mE
R
O
P
E
R
O
P
E
R
O
x
P
z
a
E
R
O
P
E
R
h
Mengapa?
- Antara
b
dand
di kolom 1 harusc
(panjang 1), jadi kami isi ini denganR
; - Antara
e
dang
di kolom 1 harusf
(panjang 1), jadi kami isi ini denganO
; - Antara
f
dank
di kolom 2 harusghij
(panjang 4), jadi kami isi ini denganPERO
; - Antara
k
danm
di kolom 2 harusl
(panjang 1), jadi kami isi ini denganP
; - Antara
d
danc
di kolom 3 harusefghijklmnopqrstuvw
(panjang 19), jadi kami isi dengan iniEROPEROPEROPEROPERO
; - Antara
x
danz
di kolom 3 harusy
(panjang 1), jadi kami isi ini denganP
; - Antara
a
danh
di kolom 3 harusbcdefg
(panjang 6), jadi kami isi dengan iniEROPER
.
Aturan tantangan:
- Perbedaannya hanya berlaku ke bawah, jadi tidak ada tali di antara
za
(kolom 3 pada contoh di atas). - Dimungkinkan untuk memiliki beberapa huruf berdekatan yang sama seperti
dd
(kolom 3 pada contoh di atas). - Anda akan terus menggunakan
ROPE
kolom satu per satu untuk tidak membuang-buang bagian (disarankan oleh @JonathanAllan di bagian 1 dari tantangan). - Anda diizinkan mengambil input dalam format apa pun yang masuk akal. Dapat berupa string tunggal, string-array / daftar, karakter-matriks, dll. Output memiliki fleksibilitas yang sama.
- Anda diizinkan menggunakan huruf kecil dan / atau huruf besar dengan cara apa pun yang Anda inginkan. Ini berlaku untuk input, output, dan
ROPE
. - Ruang tambahan adalah opsional (perhatikan bahwa jumlah ruang utama yang benar adalah wajib sehingga kolomnya benar).
Jumlah trailing dan / atau baris baru yang baru juga opsional. - Anda dapat mengasumsikan bahwa semua kasus uji akan memiliki panjang yang sama di semua baris, jadi
a\naa
/[[a][a,a]]
tidak akan menjadi input yang valid. - Mungkin tidak
ROPE
diperlukan, dalam hal ini input tetap tidak berubah.
Aturan umum:
- Ini adalah kode-golf , jadi jawaban tersingkat dalam byte menang.
Jangan biarkan bahasa kode-golf mencegah Anda dari memposting jawaban dengan bahasa yang bukan kode. Cobalah untuk memberikan jawaban sesingkat mungkin untuk bahasa pemrograman 'apa pun'. - Aturan standar berlaku untuk jawaban Anda, jadi Anda diperbolehkan menggunakan STDIN / STDOUT, fungsi / metode dengan parameter yang tepat dan tipe pengembalian, program penuh. Panggilanmu.
- Celah default tidak diperbolehkan.
- Jika memungkinkan, silakan tambahkan tautan dengan tes untuk kode Anda.
- Juga, silakan tambahkan penjelasan jika perlu.
Kasus uji:
As string:
Input: "abc\nbcd\nddd\neex\ngfz\nhka\nimh"
Output: "abc\nbcd\nRdd\ndeE\nefR\nOPO\ngEP\nhRE\niOR\n kO\n PP\n mE\n R\n O\n P\n E\n R\n O\n P\n E\n R\n O\n x\n P\n z\n a\n E\n R\n O\n P\n E\n R\n h"
As array-matrix:
Input: [[a,b,c],[b,c,d],[d,d,d],[e,e,x],[g,f,z],[h,k,a],[i,m,h]]
Output: [[a,b,c],[b,c,d],[R,d,d],[d,e,E],[e,f,R],[O,P,O],[g,E,P],[h,R,E],[i,O,R],[ ,k,O],[ ,P,P],[ ,m,E],[ , ,R],[ , ,O],[ , ,P],[ , ,E],[ , ,R],[ , ,O],[ , ,P],[ , ,E],[ , ,R],[ , ,O],[ , ,x],[ , ,P],[ , ,z],[ , ,a],[ , ,E],[ , ,R],[ , ,O],[ , ,P],[ , ,E],[ , ,R],[ , ,h]]
As string:
Input: "a\nz\na"
Output: "a\nR\nO\nP\nE\nR\nO\nP\nE\nR\nO\nP\nE\nR\nO\nP\nE\nR\nO\nP\nE\nR\nO\nP\nE\nz\na"
As array-matrix:
Input: [[a],[z],[a]]
Output: [[a],[R],[O],[P],[E],[R],[O],[P],[E],[R],[O],[P],[E],[R],[O],[P],[E],[R],[O],[P],[E],[R],[O],[P],[E],[z],[a]]
As string:
Input: "zz\nyy\nxx\nxx\ncc\ncc\nbb\nad"
Output: "zz\nyy\nxx\nxx\ncc\ncc\nbb\naR\n d"
As array-matrix:
Input: [[z,z],[y,y],[x,x],[x,x],[c,c],[c,c],[b,b],[a,d]]
Output: [[z,z],[y,y],[x,x],[x,x],[c,c],[c,c],[b,b],[a,R],[ ,d]]
As string:
Input: "a\nb\nc\nc\nx\nx\ny\nz"
Output: "a\nb\nc\nc\nR\nO\nP\nE\nR\nO\nP\nE\nR\nO\nP\nE\nR\nO\nP\nE\nR\nO\nP\nE\nx\nx\ny\nz"
As array-matrix:
Input: [[a],[b],[c],[c],[x],[x],[y],[z]]
Output: [[a],[b],[c],[c],[R],[O],[P],[E],[R],[O],[P],[E],[R],[O],[P],[E],[R],[O],[P],[E],[R],[O],[P],[E],[x],[x],[y],[z]]
As string:
Input: "zai\nybj\nxcq\nxcu\ncxw\ncxw\nbyr\nazw"
Output: "zai\nybj\nxcR\nxcO\ncRP\ncOE\nbPR\naEO\n Rq\n OP\n PE\n ER\n Ru\n OO\n Pw\n Ew\n Rr\n OP\n PE\n ER\n RO\n Ow\n P \n E \n x \n x \n y \n z "
As array-matrix:
Input: [[z,a,i],[y,b,j],[x,c,q],[x,c,u],[c,x,w],[c,x,w],[b,y,r],[a,z,w]]
Output: [[z,a,i],[y,b,j],[x,c,R],[x,c,O],[c,R,P],[c,O,E],[b,P,R],[a,E,O],[ ,R,q],[ ,O,P],[ ,P,E],[ ,E,R],[ ,R,u],[ ,O,O],[ ,P,w],[ ,E,w],[ ,R,r],[ ,O,P],[ ,P,E],[ ,E,R],[ ,R,O],[ ,O,w],[ ,P, ],[ ,E, ],[ ,x, ],[ ,x, ],[ ,y, ],[ ,z, ]]
As string:
Input: "asdljasdjk"
Output: "asdljasdjk"
As array-matrix:
Input: [[a,s,d,l,j,a,s,d,j,k]]
Output: [[a,s,d,l,j,a,s,d,j,k]]
As string:
Input: "asdljasdjk\nlkawdasuhq\nasjdhajksd"
Output: "asdljasdjk\nRkaOdasPhR\nOPOPEajEPO\nPEPER REP\nERERO ORE\nROROh POR\nOPOP EPq\nPEPE ROd\nERER OR \nRsRO PO \nO jP EP \nl w RE \na d Os \n P \n E \n R \n O \n u \n k "
As array-matrix:
Input: [[a,s,d,l,j,a,s,d,j,k],[l,k,a,w,d,a,s,u,h,q],[a,s,j,d,h,a,j,k,s,d]]
Output: [[a,s,d,l,j,a,s,d,j,k],[R,k,a,O,d,a,s,P,h,R],[O,P,O,P,E,a,j,E,P,O],[P,E,P,E,R, , ,R,E,P],[E,R,E,R,O, , ,O,R,E],[R,O,R,O,h, , ,P,O,R],[O,P,O,P, , , ,E,P,q],[P,E,P,E, , , ,R,O,d],[E,R,E,R, , , ,O,R, ],[R,s,R,O, , , ,P,O, ],[O, ,j,P, , , ,E,P, ],[l, , ,w, , , ,R,E, ],[a, , ,d, , , ,O,s, ],[ , , , , , , ,P, , ],[ , , , , , , ,E, , ],[ , , , , , , ,R, , ],[ , , , , , , ,O, , ],[ , , , , , , ,u, , ],[ , , , , , , ,k, , ]]
As string:
Input: "re\nop\npo\ner"
Output: "re\noR\npO\neP\n E\n R\n O\n P\n E\n R\n O\n p\n o\n P\n E\n r"
As array-matrix:
Input: [[r,e],[o,p],[p,o],[e,r]]
Output: [[r,e],[o,R],[p,O],[e,P],[ ,E],[ ,R],[ ,O],[ ,P],[ ,E],[ ,R],[ ,O],[ ,p],[ ,o],[ ,P],[ ,E],[ ,r]]
hope
? Harapan lebih kuat dari tali. (Ini adalah upaya yang buruk untuk humor, bukan pertanyaan nyata)tape
Tantangannya jauh lebih mudah (imho). Dan ya, Anda bisa menampilkan array kolom.Jawaban:
Jelly , 21 byte
Cobalah online!
Penjelasan
-1 byte terima kasih kepada Tn. Xcoder
-2 byte terima kasih kepada Erik the Outgolfer
sumber
rope
each
-ing otomatis masing-masing hal: P05AB1E ,
383725 byteDisimpan 10 byte dengan saran dari Magic Octopus Guci dan byte lain mengubah format output.
Menghasilkan daftar string.
Footer cetakan cantik.
Cobalah online!
Penjelasan
sumber
Tape
kita memulai setiap kali kita harus memasukkannyaaTAdTAg
,. Sekarang dengan tali, kami melanjutkan di mana kami tinggalkan di tali, jadiaROdPEg
.pop a,b,c | push c[b..a]
type dealio?Python 2 ,
197194 byteCobalah online!
sumber
Ruby , 119 byte
Cobalah online!
Ya, ini jauh lebih sulit daripada tantangan "TAPE". Saya mencoba membangun solusi saya untuk tugas itu, tetapi ini memiliki beberapa tikungan tambahan.
Mengambil input sebagai array karakter berbentuk kolom, mengembalikan array string, juga dalam format berbentuk kolom. Kode di footer dari tautan TIO melakukan pra-dan pasca pemrosesan data I / O sehingga kami dapat menyediakan string yang lebih mudah dikelola dan kemudian mencetak hasilnya dengan baik.
Penjelasan
Kode membuat dua melewati array input.
Pada pass pertama kami menerapkan
reduce
operasi yang mengisi ruang antara karakter dengan jumlah ROPE yang diperlukan (y.ord-x[-1].ord-1
karakter, jika positif). Kita juga perlu melacak panjang ROPE yang digunakan (l
).Tidak seperti dalam kasus TAPE kita tidak bisa hanya menggunakan
rjust
untuk mengisi, karena itu akan selalu dimulai dari karakter R. Alih-alih, mengambil string yang tepat dari string "ROPEROPE ..." yang panjang tampaknya lebih ringan pada hitungan byte, terutama karena kita juga perlu memperbaruil
dengan cepat.Di umpan kedua kami meninggalkan-menjustifikasi string yang dihasilkan dengan spasi untuk mencocokkan panjang yang terpanjang dari mereka. Karena kita membutuhkan hasil lengkap dari iterasi sebelumnya di sini, pass pertama memodifikasi array di tempatnya (karenanya
map!
, tidakmap
).sumber
-1 byte, terima kasih kepada Kevin Cruijssen
-70 byte terima kasih kepada Jonathan Frech , wow .......
Python 3 , 203 byte
Cobalah online!
sumber
ord(t)-ord(p)-1
bisaord(t)+~ord(p)
untuk menyimpan byte lagi. ;) Ini tip yang relevan.+=[o]
->+=o,
.p!=' '
juga setara denganp>' '
.Python 3 , 182 byte
Cobalah online!
Fungsi mengambil inputnya sebagai daftar (atau iterable) string dan juga mengembalikan generator untuk urutan string, yang hampir sama baiknya dengan daftar.
Tidak disatukan
... untuk keterbacaan yang lebih baik dari generator bersarang.
Penjelasan
Fungsi ini digunakan
zip
untuk mengubah daftar garis yang masuk menjadi generator kolom.Generator terdalam melihat pasangan karakter yang berdekatan dan ...
... mengiris jumlah yang diperlukan ROPE kontinu dari
cycle
generator (tak terbatas) .Setelah jumlah string yang banyak bergabung dari generator, fungsi tersebut mentransposisi ulang daftar kolom kembali ke generator atau jalur dan mengisi entri yang hilang
zip_longest
.sumber
Stax , 25 byte
Jalankan dan debug online!
Input dan output diberikan sebagai daftar yang dipisahkan oleh ruang. Input adalah daftar baris yang diperlukan, output adalah daftar kolom yang diizinkan.
Penjelasan
Gunakan versi yang belum dibongkar untuk menjelaskan.
sumber