Saya menemukan pertanyaan ini, karena sepertinya sangat umum digunakan untuk menemukan karakter unik dalam string. Tetapi bagaimana jika kita ingin menyingkirkan mereka?
Input hanya berisi huruf kecil. Hanya huruf dari a hingga z yang digunakan. Panjang input dapat dari 1 hingga 1000 karakter.
Contoh:
input: helloworld
output: llool
Tujuan: Kode terpendek menang
Bahasa: Salah satu dari 20 bahasa TIOBE teratas
-CDS
opsi$1
dengan$&
dan Anda bisa kehilangan beberapa pasang tanda kurung.(GolfScript,
1513 karakter)GolfScript bukan salah satu dari 20 teratas, tetapi codegolf tanpa GolfScript ... ( jalankan sendiri )
Versi Sebelumnya: ( run script )
sumber
:;
? Anda sengaja mencoba membingungkan para pemula, bukan? ;))
- itu akan membuatnya tersenyum:)
. Sayangnya, saya tidak menemukan cara untuk menghilangkan digit 1. (Catatan untuk pemula GolfScript: Anda dapat mengganti apa pun;
dalam kode denganx
(atau huruf atau digit lainnya - atau karakter apa pun yang tidak digunakan dalam skrip). Dalam kasus khusus;
ini hanya nama variabel - dan tidak memiliki arti "pop and discard". Dalam GolfScript hampir semua token adalah variabel lagian, dan menggunakan simbol yang telah ditentukan adalah cara yang bagus untuk membuat skrip bahkan lebih tidak dapat dibaca oleh orang luar ;-).):a{]a.@--,(},
J, 12 karakter
Setelah memasukkan jawaban Perl yang valid, inilah jawaban (bahasa yang tidak ada dalam TIOBE top 20) tidak valid.
Pemakaian:
Mendeklarasikan kata kerja
a
yang hanya menghasilkan item yang tidak unik.sumber
GolfScript (14 karakter)
Demo online
Mungkin tidak memenuhi syarat untuk menang, tetapi berguna untuk memiliki tolok ukur.
sumber
Ruby
464036sumber
s
dan menggunakan$_
untuk penampilan kedua (ruang sebelumnya kemudian dapat dibuang).Perl 44
Eksekusi:
sumber
K, 18
sumber
1<#
bukan~1=#
Python 2.7 (
5251),Python 3 (52)Saya tidak berharap itu terlalu pendek.
2.7:
a=raw_input();print filter(lambda x:a.count(x)>1,a)
3.0:a=input();print''.join(i for i in a if a.count(x)>1)
raw_input()
: simpan input sebagai string (input()
=eval(raw_input())
)(Python 3.0:
input()
telah diubah menjadiraw_input()
)filter(lambda x:a.count(x)>1,a)
: Saring melalui semua karakter di dalamnyaa
jika ditemukana
lebih dari satu kali (a.count(x)>1
).sumber
input()
daripadaraw_input()
. Meskipun Anda harus menambahkan satu karakter untuk braket penutup, karenaprint
ini adalah fungsi dalam python 3.''.join(...)
sed dan coreutils (128)
Memang ini bukan bagian dari daftar TIOBE, tapi ini menyenangkan (-:
Versi de-golf:
Penjelasan
Sed pertama mengkonversi input menjadi satu karakter per baris. Sed kedua menemukan karakter yang hanya muncul sekali. Sed ketiga menulis skrip sed yang menghapus karakter unik. Sed terakhir mengeksekusi skrip yang dihasilkan.
sumber
Brachylog (v2), 8 byte
Cobalah online!
Pengiriman fungsi. Secara teknis tidak bersaing karena pertanyaannya memiliki batasan pada bahasa apa yang diizinkan untuk bersaing (namun, beberapa jawaban lain telah mengabaikan batasan tersebut).
Penjelasan
sumber
Japt ,
65 byte-1 byte terima kasih kepada @Oliver
Cobalah online!
sumber
o@
:Æ
Python (56)
Berikut ini alternatif (beberapa karakter lagi) dengan Python:
Jika Anda menerima output sebagai daftar (mis.
['l', 'l', 'o', 'o', 'l']
), Maka kami dapat mengubahnya menjadi 49 karakter:sumber
>1
itu ide yang bagus! Bolehkah saya memasukkan itu ke dalam solusi saya?Mathematica
7263Oke, Mathematica bukan di antara 20 bahasa teratas, tetapi saya memutuskan untuk tetap bergabung dengan pesta itu.
x
adalah string input.sumber
Perl (55)
Baca dari stdin.
sumber
C # - 77 karakter
Jika Anda menerima output sebagai larik, maka akan berkurang hingga 65 karakter:
sumber
Ocaml,
139133Menggunakan ExtString.String ExtLib
Versi non-golf
Fungsi
g
mengembalikan jumlah kemunculan c dalam string s. Fungsif
menggantikan semua karakter baik oleh string kosong atau string yang berisi karakter tergantung pada jumlah kejadian. Sunting: Saya mempersingkat kode dengan 6 karakter dengan menyalahgunakan representasi internal bools :-)Oh, dan ocaml adalah 0 pada indeks TIOBE ;-)
sumber
PHP - 70
dengan asumsi $ s = 'helloworld'.
sumber
Java 8, 90 byte
Penjelasan:
Cobalah online.
sumber
PowerShell , 59 byte
Cobalah online!
Kurang golf:
Catatan:
$repeatedChars
adalah array. Secara default, Powershell bergabung dengan elemen array dengan spasi sambil mengubah array menjadi string. Jadi, regexp berisi spasi (Dalam contoh ini,[^l o]
). Spasi tidak mempengaruhi hasil karena string input hanya berisi huruf.sumber
APL (Dyalog Extended) , 8 byte SBCS
Fungsi awalan diam-diam anonim.
Cobalah online!
⍧⍨
count-in selfie (hitung kejadian elemen argumen dalam argumen itu sendiri)1<
Topeng Boolean di mana seseorang kurang dari itu⊢⊆⍨
mempartisi argumen dengan topeng itu (memulai partisi baru di 1s dan menghapus 0s)∊
ϵ daftar (ratakan)sumber
JavaScript, 45 byte
sumber
R , 70 byte
Cobalah online!
Upaya yang buruk, bahkan dari 20 bahasa teratas TIOBE. Saya tahu sesuatu dapat dilakukan tentang babak kedua, tetapi pada saat ini, golf apa pun lolos dari saya.
sumber
JavaScript, 34 byte
Input sebagai string, output sebagai array karakter.
Cobalah secara Online!
sumber
map
: tio.run/##BcExDoAgDADAvzgYOtjBHT9CTCSICqmUWKL8vt5l/…JavaScript (Node.js) , 82 byte
Cobalah online!
sumber
.join``
bukan.join("")
.PHP - 137
Kode
Kode Normal
sumber
PHP -
8378Versi yang ditingkatkan:
Tentu saja ini perlu pemberitahuan untuk dimatikan
Sunting: Peningkatan yang diilhami oleh @hengky mulyono
Saya sangat buruk di codegolf :)
sumber
C ++, 139 byte
ungolfed:
sumber