pengantar
Mari kita amati string berikut:
AABBCCDDEFFGG
Anda dapat melihat bahwa setiap huruf telah digandakan , kecuali untuk surat itu E
. Itu berarti bahwa surat E
itu telah diduplikasi . Jadi, satu-satunya hal yang perlu kita lakukan di sini adalah membalikkan proses itu, yang memberi kita string tidak terduplikasi berikut :
AABBCCDDEEFFGG
Mari kita ambil contoh yang lebih sulit:
AAAABBBCCCCDD
Anda dapat melihat bahwa ada jumlah yang tidak sama berturut-turut B
, sehingga itu berarti bahwa salah satu dari BB
itu diduplikasi dari string asli. Kami hanya perlu menghapus duplikat surat ini, yang memberi kami:
AAAABBBBCCCCDD
Tantangan
Diberikan string de-duplikat yang tidak kosong , yang hanya terdiri dari karakter alfabet (baik huruf besar atau huruf kecil saja), kembalikan string yang tidak terduplikasi . Anda dapat mengasumsikan bahwa akan selalu ada setidaknya satu karakter yang tidak terduplikasi dalam string.
Uji kasus
AAABBBCCCCDDDD --> AAAABBBBCCCCDDDD
HEY --> HHEEYY
AAAAAAA --> AAAAAAAA
N --> NN
OOQQO --> OOQQOO
ABBB --> AABBBB
ABBA --> AABBAA
Ini adalah kode-golf , jadi pengiriman terpendek yang valid dalam byte menang!
AABBBB
.ABBB
dipetakan keAABBBB
, bukanAABBBBBB
?A BB B
. Karakter yang tidak dipasangkan (dan karena itu tidak digandakan) perlu digandakan, menghasilkanAA BB BB
, yang merupakan string yang tidak terduplikasi.Jawaban:
MATL , 7 byte
Cobalah online! Atau verifikasi semua kasus uji .
Mari kita ambil
'ABBA'
contoh input.sumber
Retina , 11 byte
Cobalah online - berisi semua kotak uji
sumber
Perl, 16 byte
15 byte kode +
-p
bendera.Untuk menjalankannya:
sumber
Haskell, 36 byte
Contoh penggunaan:
u "OOQQO"
->"OOQQOO"
.Jika string memiliki setidaknya 2 elemen, ambil dua salinan dari yang pertama dan tambahkan panggilan rekursif
Jika ada kurang dari dua elemen (satu atau nol), ambil dua salinan dari daftar.
sumber
Brachylog , 17 byte
Cobalah online!
Penjelasan
sumber
Ruby, 21 byte
20 byte plus
-p
bendera.sumber
JavaScript (ES6),
3730 byteDisimpan 7 byte dengan menggunakan '$ 1 $ 1' yang jauh lebih efisien seperti [lainnya] [jawaban] lakukan
Uji kasus
Tampilkan cuplikan kode
sumber
Mathematica, 41 byte
Fungsi tanpa nama yang menginput string dan menghasilkan string. Deduplicate sepenuhnya maka sepenuhnya undeduplicate. Tidak terlalu pendek, tapi aku tidak bisa melakukan yang lebih baik untuk saat ini.
sumber
Menembus 98 , 24 byte
Cobalah secara Online!
$
dapat dengan mudah diganti dengan-
, dan ke-2@
dengan;
.Saya pikir ini bisa golf lebih lanjut karena
-
pada awal keduanya-,
(atau di$,
atas) dan-\,
.Bagaimana?
sumber
Java 7, 58 byte
Tidak Disatukan:
Kode uji:
Coba di sini.
Keluaran:
sumber
PHP, 65 byte, tidak ada regex
mengambil input dari argumen baris perintah. Jalankan dengan
-r
.regex? Di PHP, regex yang digunakan oleh sebagian besar jawaban menduplikasi setiap karakter. akan menjadi 44 byte:
sumber
Brain-Flak 69 Bytes
Termasuk +3 untuk
-c
Cobalah secara Online!
Penjelasan:
sumber
Jelly , 9 byte
Cobalah online!
sumber
V 10 byte
TryItOnline
Temukan dan ganti regex seperti yang lainnya di utas. Satu-satunya perbedaan adalah bahwa saya dapat mengganti apa saja yang memerlukan
\
di depannya dengan karakter dengan nilai ascii yang sama, tetapi bit set tinggi. (Jadi(
, 00101000 menjadi¨
, 10101000)sumber
Perl 6 , 17 byte
dengan -p command-line switch
Contoh:
sumber
Racket 261 byte
Tidak Disatukan:
Pengujian:
Keluaran:
sumber
05AB1E , 10 byte
Cobalah online!
Penjelasan
sumber
Python3,
10294 byteTerima kasih kepada xnor karena telah menghemat 8 byte! -> bithack.
sumber
x+x%2
sebagaix&-2
.s.count(c)&-2
dan mengembalikan sebuah string kosong ...: / Ada pikiran?x+1&-2
harus melakukannya. Merata pergi ke diri mereka sendiri dan peluang bulat untuk meratakan.R, 81 byte
Membaca string dari stdin, splin menjadi vektor karakter dan melakukan pengkodean run-length (rle). Selanjutnya ulangi setiap nilai dari rle, jumlah panjang dan panjang mod
2
.Jika kita dapat membaca input yang dipisahkan oleh spasi (secara implisit sebagai vektor / larik karakter) maka kita dapat melewati bagian pemisahan dan program dikurangi menjadi 64 byte:
sumber
> <> (Ikan) 39 byte
Cukup yakin ini bisa banyak bermain golf menggunakan teknik yang berbeda.
Dibutuhkan input dan membandingkannya dengan item tumpukan saat ini, jika berbeda maka akan mencetak item tumpukan pertama dua kali, jika sama mencetak keduanya.
Tumpukan saat kosong diberikan dengan 0 yang tidak mencetak apa pun sehingga dapat ditambahkan kapan saja.
sumber
Pyth, 15 byte
Verifikasi semua kasus uji di sini.
Terima kasih kepada Luis Mendo untuk metodologi ini.
Penjelasan
Seperti yang sering terjadi, saya merasa ini bisa lebih pendek. Saya pikir harus ada cara yang lebih baik untuk mengekstrak elemen dari daftar daripada apa yang saya gunakan di sini.
sumber
PowerShell , 28 byte
Cobalah online! (termasuk semua kasus uji)
Port of the Retina menjawab . Satu-satunya hal yang perlu diperhatikan adalah kita mendapatkan
$args
alih - alih yang biasa$args[0]
(karena-replace
kehendak iterate atas setiap item dalam array input, kita dapat bermain golf dari indeks), dan'$1$1'
perlu menjadi tanda kutip tunggal sehingga mereka diganti dengan regex variabel daripada diperlakukan sebagai variabel PowerShell (yang akan terjadi jika mereka adalah kuotasi ganda).sumber
C, 67 byte
Telepon dengan:
sumber
brainfuck, 22 byte
Cobalah online.
Mencetak karakter saat ini dua kali, kecuali itu sama dengan karakter yang baru saja dicetak dua kali.
sumber