Tantangan
Diberikan string yang menggambarkan aturan pemotongan dan string lain, potong bagian dari string kedua menggunakan aturan yang dijelaskan oleh string pertama.
Kedua string akan terdiri dari huruf a-z
atau A-Z
, mana yang Anda pilih (mereka tidak harus diwakili dengan cara yang sama). Cara string kedua diubah dijelaskan di bawah ini:
Algoritma
Ambil string pertama dan bayangkan mengisi celah antara huruf-huruf yang tidak berbatasan (bertambah) dengan =
; misalnya, abcfg
=> abc==fg
. Lalu, sejajarkan kedua string dan kembalikan semua karakter dari string pertama yang tidak di atas tanda sama dengan. Misalnya, diberikan abcfg
dan qrstuvw
sebagai input:
qrstuvw - Modify
abc==fg - Modifier
qrs--vw -> qrsvw
Jika pengubah lebih pendek setelah diisi dengan tanda sama dengan, semua karakter tambahan di string kedua harus dimasukkan. Jika pengubah lebih panjang, karakter yang tertinggal diabaikan.
Pengubah tidak dijamin akan diurutkan.
Uji Kasus
abcfg, qrstuvw -> qrsvw
abqrs, qwertyuiopasdfghjklzxcvbnm -> qwjklzxcvbnm
za, qr -> qr
azazaz, qwertyuioplkjhgfdsazxcvbnmnbvcxzasdfghjklpoiuytrewq -> qmn
Implementasi Referensi (digunakan untuk menghasilkan kasus uji) -> TIO
Aturan
- Celah Standar Berlaku
- Anda dapat mengambil input sebagai dua string, dua daftar karakter, matriks karakter, dll. (Format wajar lainnya dapat diterima)
- Anda dapat menampilkan sebagai string atau daftar karakter (atau format standar lainnya untuk string)
- Ini adalah kode-golf , jadi jawaban terpendek dalam byte di setiap bahasa dinyatakan sebagai pemenang untuk bahasanya. Tidak ada jawaban yang akan diterima.
- Salah satu string mungkin kosong.
Selamat Golf!
Terinspirasi oleh dua tantangan Kevin Cruijssen baru-baru ini, "Di sana, saya memperbaikinya (dengan pita / tali )"
There, I blew it up (with a segfault)
Jawaban:
JavaScript (ES6),
8180 byteMengambil input dalam sintaks currying
(modify)(modifier)
.Cobalah online!
Berkomentar
sumber
Python 3 , 99 byte
Cobalah online!
sumber
05AB1E ,
2017 byteCobalah online!
Menghitung jarak ASCII antara masing-masing karakter, menambahkan banyak spasi jika positif. Jarak negatif menghasilkan penambahan 0 spasi, sesuai spesifikasi. Setelah itu, saya mendorong semua karakter pada indeks yang sama di string 2 sebagai spasi di string yang dimanipulasi pertama.
90% yakin saya bisa kehilangan 2-3 byte lagi dengan tidak menggunakan spasi, tetapi mendorong char pada index N. Masih mengerjakan varian ini saat ini ... Apa "ide yang lebih baik" saya berakhir sebagai:
05AB1E , 18 byte
Cobalah online!
Saya merasa seperti kehilangan sesuatu, jika Anda melihat peningkatan
ε1‚Z}
,ʒ²g‹}
atau0¸ì
lmk ...Ç¥ε1‚Z}ηO0¸ìè
berusia 13, tetapi membungkus kapann > |input_2|
harusinput_2[n%|input_2|]
...sumber
IgÅ1«
, tetapi mungkin ada cara yang lebih baik?Stax , 15 byte
Jalankan dan debug itu
Ini adalah representasi ascii.
sumber
╟╣i
Jelly , 14 byte
Tautan diad yang menerima pengubah sebagai daftar karakter di sebelah kiri dan daftar karakter untuk dimodifikasi di sebelah kanan mengembalikan daftar karakter.
Cobalah online!
Bagaimana?
sumber
¬
Trik yang digunakan dalam jawaban saya. :) (secara teknis kami memiliki algoritma yang sama, tetapi Anda melakukan lebih pendek, dilakukan dengan baik!)¬
, tetapi lupa ketika saya melakukan posting lemak-jari ponsel dari upaya 13 byte yang belum siap.JavaScript (ES6), 79 byte
Menggunakan algoritma yang sama untuk menghitung jarak antar huruf sebagai jawaban terakhir saya .
Kasus uji:
Tampilkan cuplikan kode
sumber
APL (Dyalog Classic) ,
353432 byteCobalah online!
sumber
K (ngn / k) ,
272425 byteCobalah online!
sumber
Haskell , 49 byte
Cobalah online!
sumber
Perl 5 , 45 byte
Cobalah online!
sumber
Ruby ,
6864 byteCobalah online!
sumber
Arang ,
2928 byteCobalah online! Tautan adalah untuk mengucapkan versi kode. Berdasarkan jawaban saya di sana, saya memperbaikinya dengan kaset. Penjelasan:
Catatan: Ini harus 28 byte, tetapiAnd
rusak pada saat penulisan.sumber
Java 8, 117 byte
Penjelasan:
Cobalah online.
sumber