Diberikan string sebagai input, output satu atau lebih varian string sehingga:
- Tidak ada karakter di posisi aslinya
- Tidak ada karakter yang berdekatan dengan karakter yang semula berbatasan dengannya
Anda dapat mengasumsikan ini akan selalu dimungkinkan untuk string yang diberikan, dan hanya akan berisi karakter alfabet huruf tunggal ( [a-z]
atau [A-Z]
jika Anda suka)
Perhatikan bahwa duplikat dengan karakter yang sama tidak dianggap unik.
Misalnya, dengan diberi input programming
, output tidak boleh mengandung karakter m
at the 7th atau 8th, dan tidak bisa mengandung a g
at the 4th atau 11th character (1 diindeks)
Contoh:
Ambil talinya abcdef
Berikut ini adalah output yang valid: daecfb
Namun berikut ini tidak valid: fdbcae
seperti dalam contoh ini c
dan b
masih berdekatan.
Adjacency juga membungkus, artinya Anda tidak bisa melakukan apa- fdbeca
apa f
dan a
masih berdekatan.
Testcases:
Perhatikan ini bukan satu - satunya output yang valid untuk input yang diberikan
Ditulis sebagai input -> output
:
helowi -> ioewhl
mayube -> euabmy
stephens -> nhseespt
aabcdeffghij -> dbfhjfigaeca
Mencetak:
Ini adalah kode-golf sehingga byte paling sedikit di setiap bahasa menang!
sumber
No character is adjacent to a character that it was originally adjacent to
. Apakah pesanan tidak penting untuk kedekatan? Jadi masukan "abcd" tidak dapat memiliki "ab" di mana saja, dan tidak dapat memiliki "ba" di mana pun?Jawaban:
Jelly ,
2423 byteCobalah online!
Sangat lama karena aku buruk di Jelly, tapi akhirnya berhasil, setidaknya ... masih dalam proses bermain golf.
sumber
Python 2 , 185 byte
Cobalah online!
Mencetak semua string yang valid
sumber
mayube
,stephens
danhelowi
, tampaknya bekerja untuk semua 3. Saya perlu membuat validator keluaran untuk melakukan beberapa pengujian yang lebih intensifaabcdeffghij
, tetapi itu tidak berarti itu tidak berhasil, hanya saja dibutuhkan lebih dari satu menit untuk input ituprint next(l for l in permutations(x) if not((g(l)|g(l[::-1]))&(g(x)|g(x[::-1]))or any(a==b for a,b in zip(x,l))))
`l`[2::5]
PHP> = 7.1, 147 Bytes
PHP Sandbox Online
PHP> = 7.1, 184 Bytes
Gunakan jarak levenshtein alih-alih cara Regex
PHP Sandbox Online
PHP , 217 byte
Versi di bawah 7.1
Cobalah online!
sumber
helowi
, keluaranioewlh
,i
danh
berdekatanBrachylog , 21 byte
Cobalah online!
Penjelasan
Saya benar-benar ingin
p.;?z≠ᵐ&j¬{s₂p~s~j}
bekerja kurang dari 2 byte, tetapi tampaknya~j
tidak cukup pintar ...sumber
PHP 7.1,
136131 byteterinspirasi oleh solusi Jörg :
Jalankan sebagai pipa dengan
-r
atau uji secara online . (Pastikan PHP versi 7.1 atau lebih tinggi dipilih)Membutuhkan PHP 7.1; tambahkan 14 byte untuk PHP yang lebih lama: Ganti
$k-1
dengan($k?:strlen($a))-1
;(dua byte lebih untuk PHP <5.3:
$k?$k-1:strlen($a)-1
)kerusakan
sumber
$c=$a[$k=0], $d=$a[$k-1]
) via$s.$s
.PHP 7.1,
187 185 172 178143 byteJalankan sebagai pipa dengan
-r
atau uji secara online . (Pastikan PHP versi 7.1.0 atau lebih tinggi dipilih!)kerusakan
sumber
mayube
, outputyeuamb
,m
dana
berdekatanRuby,
11097102 byteCobalah online!
sumber
3594817062
sebagai output pada tautan TIO Anda.JavaScript 6, 116 Bytes
sumber
Stax ,
2321 byteJalankan dan debug online!
Terima kasih karena @recursive karena menyimpan 2 byte.
Butuh waktu sangat lama untuk berlari. Versi yang lebih masuk akal / layak adalah (hanya 2 byte lebih lama)
Jalankan dan debug online!
Penjelasan
Gunakan versi yang belum dibongkar untuk menjelaskan.
sumber
G
. Anda lakukan{...}X!...x!
untuk mengeksekusi blok yang sama dua kali. Secara umum, Anda dapat menulis ulang ini sebagaiG...G
dengan}...
di akhir program, seperti ini .G
dalam pos lain untuk menyimpan satu byte dengan mengganti{...}*
denganD...
. Saya kira saya masih belum terbiasa dengan hal itu ...