Sangat sulit untuk mengingat kata sandi saya, jadi saya menemukan cara untuk membuat kata sandi.
Cara saya membuat kata sandi berasal dari kata atau kalimat, mengikuti langkah-langkah ini:
Mulai dari kiri ke kanan
Temukan hitungan setiap huruf
Masukkan surat dengan jumlah di urutan
Surat dengan pengulangan yang lebih tinggi pada akhirnya
Surat dengan pengulangan yang sama akan dipesan sesuai abjad
Angka dan huruf khusus akan diabaikan termasuk spasi putih (mis. 9, 4, @, (, *, dll. Diabaikan)
Huruf grup mengabaikan case. Dalam output, gunakan kasus kemunculan terakhir dalam input
- Hitungan surat bisa berupa angka apa saja, misalnya 5H17M345K
- Jika input semua angka atau huruf khusus maka output akan menjadi string kosong mis. Input "12 $ * 34 ^!" lalu output ""
- ketika pesanan untuk kejadian yang sama sesuai abjad tidak masalah misalnya 1a1B1c
Contoh:
Input: Kitkat Tango
(2k / 1i / 3T / 2a / 1n / 1g / 1o)
Output: 1g1i1n1o2a2k3T
Contoh lain:
Input: Database Partitions Task
(1D / 5a / 4T / 1b / 3s / 1e / 1P / 1r / 2i / 1o / 1n / 3s / 1k)
Output: 1b1D1e1k1n1o1P1r2i3s4T5a
Catatan: huruf-huruf dengan 1 repeat berada di urutan awal menurut abjad kemudian huruf-huruf dengan lebih banyak repetisi
Ini kode-golf , kode terpendek yang menang.
sumber
1.
menambahkan setidaknya 1 test case yang mencakup lebih dari 9 kemunculan satu atau lebih huruf,2.
tentukan bahwa output harus berupa string (walaupun saya akan sangat menyarankan agar tidak seketat itu; itu tidak menambah apapun pada tantangan ),3.
tentukan bahwa kita harus dapat menangani input yang tidak mengandung huruf, dan,4.
mengklarifikasi apakah kita perlu menangani string kosong sebagai input.1
. Juga, di masa depan Anda mungkin mempertimbangkan untuk menggunakan Kotak Pasir kami untuk mencoba menyelesaikan masalah seperti ini sebelum memposting sebuah tantangan.Jawaban:
Japt v2.0a0
-P
, 14 byteCobalah
sumber
05AB1E ,
191716 byteDisimpan 1 byte berkat Kevin Cruijssen
Cobalah online! atau sebagai Test Suite
Penjelasan
sumber
‚
(pasangkan dengan) ke«
(concat / gabungan), sehingga salah satu dari duaJ
s (bergabung) dapat dihapus.J
dalam saja? Sunting: Sebenarnya, saya membutuhkan mereka sebagai pasangan dalam versi 19-byte dan saya tidak berpikir untuk mengubahnya ketika saya membuat 17 byte: PJ
oin kedua , tergantung pada jawaban untuk pertanyaan iniC # (Visual C # Interactive Compiler) , 105 byte
Cobalah online!
Terima kasih kepada dana untuk membawanya ke 105 byte dari 138 byte.
sumber
.OrderBy(a=>a)
?Perl 6 ,
6663 byteCobalah online!
Penjelasan
sumber
Retina ,
67664139 byte-25 byte dan perbaikan bug kecil berkat @Neil .
-2 byte berkat @ Neil dan @Shaggy bersama-sama.
Cobalah secara online atau verifikasi semua kasus uji .
Penjelasan:
Hapus semuanya kecuali huruf besar dan kecil:
ie
Kitkat Tango 123!
→KitkatTango
Mengurutkan huruf individual tidak peka huruf besar-kecil ( berkat @MartinEnder untuk ini ):
yaitu
KitkatTango
→aagiKknottT
Menangkap setiap sepotong case-sensitive berulang huruf yang berdekatan:
yaitu
aagiKknottT
→ [aa
,g
,i
,Kk
,n
,o
,ttT
]Tambahkan panjang setiap pertandingan, dan hanya menyimpan surat terakhir dari setiap potongan:
yaitu [
aa
,g
,i
,Kk
,n
,o
,ttT
] →2a1g1i2k1n1o3T
Sortir angka dan grup surat berdasarkan angka:
2a1g1i2k1n1o3T
→1g1i1n1o2a2k3T
Setelah itu hasilnya adalah output secara implisit.
sumber
"aA" < "aa"
)\w
dan.
diO`\w.
digunakan untuk menunjukkan bahwa kami menyortir pasangan karakter. Tidak yakin apakah kami dapat mengurutkan setiap pasangan karakter, tetapi hanya mengurutkannya berdasarkan karakter pertama. Tapi ah, saran Martin untuk menyortir setiap karakter berdasarkan substitusi (yang merupakan varian huruf kecil dari pertandingan) bekerja seperti pesona. :)\P{L}
mungkin berhasil, yang menghemat 2 byte.Bahasa Wolfram (Mathematica) ,
102969387 byteCobalah online!
sumber
Pyth,
272422 byteCobalah online di sini .
Sunting: Golf 3 byte dengan memesan menurut karakter sebelum grup, versi sebelumnya:
sm+ldedo,lNr0eN.gr0kf}r0TGQ
Sunting 2: Memotong 2 byte lainnya dengan memformat output sebelum pemesanan apa pun, versi sebelumnya:
sm+ldedlD.gr0krD0f}r0TGQ
Sunting 3: Memotong byte lain dengan mengubah filter, terima kasih kepada @FryAmTheEggman. Juga harus memperbaiki bug ketika OP mengklarifikasi bahwa satu huruf dapat muncul lebih dari 9 kali, yang menambahkan byte kembali pada: o (Versi sebelumnya:
srD0m+lded.gr0kf}r0TGQ
sumber
APL (Dyalog Extended) , 28 byte SBCS
Fungsi awalan diam-diam anonim.
Cobalah online!
'\PL'
non-huruf⎕R
PCRE R di- eplaced dengan''
string kosong(
...)
terapkan fungsi diam-diam berikut:⌊
dengan huruf kecil sebagai kunci,...
⌸
menerapkan fungsi diam-diam di bawah ini untuk setiap tombol dan sekumpulan nilai yang terkait, yaitu⊢
argumen:(
...)
terapkan fungsi diam-diam berikut⍤
ke⊢
daftar nilai:⊢/
nilai terakhir...
,
tambahkan yang berikut ini:⍕
yang stringification⍤
dari≢
penghitungan⊂
terlampir (untuk memperlakukan daftar karakter sebagai string tunggal)∊
ϵ daftar (ratakan)⍤
versi yang∧
diurutkan-naik itusumber
Perl 5,
746866 byte-6 byte berubah
-p
menjadi-n
dan menggunakansay
bukan$_=join"",
-2 byte berkat Abigail menggunakan\pL
bukan[a-z]
TIO
59 byte, jika tidak ada lebih dari 9 kemunculan setiap karakter
sumber
Python 2 , 116 byte
Cobalah online!
sumber
Database Partitions Task
tidak sama dengan1b1D1e1k1n1o1P1r2i3s4T5a
In the output, use the case of the last occurrence in the input
Anda akan membutuhkanrfind
alih-alihfind
untuk ini....] for
dapat menjadi...]for
untuk mengimbangi itu.Python 3 , 105 byte
Cobalah online!
-1 terima kasih kepada ArBo .
sumber
Haskell ,
114/113105 byte-9 byte terima kasih kepada Laikoni (menggunakan daftar-pemahaman dan
(||)
bukannyafilter
denganelem
& memendeklength
untuk menyingkirkan yang jelekzip
)!Cobalah online!
sumber
Merah ,
220196206 byteCobalah online!
Terima kasih kepada Shaggy karena menemukan bug.
sumber
Jelly , 15 byte
Program lengkap yang mencetak kata sandi seperti yang ditentukan (sebagai Tautan monadik, ia menghasilkan daftar daftar yang masing-masing berisi bilangan bulat dan karakter).
Cobalah online!
sumber
Sekam , 15 byte
Tidak ada masalah dengan impor saat menggunakan sekam, oleh karena itu kita dapat menggunakan berbagai fungsi berguna seperti
groupOn
,sortOn
,toLower
dll:Cobalah online atau coba semuanya!
Penjelasan
sumber
JavaScript (Node.js) , 127 byte
Cobalah online!
parseInt(numberAsString, radix)
akan mencoba mengurai integer di awal string. Sebagai contoh,parseInt('120px', 10)
akan menghasilkan 120. Ketika parsing gagal, itu kembaliNaN
sebagai gantinya. Kami menyambungkan'0'
ke awal setiap karakter sehingga akan kembali0
untuk karakter alfa non numerik. Dan kita dapat mengurutkan huruf yang sama bersama-sama dan karakter non-alfa ke awal dengan algoritma ini.sort
danjoin
,"Hello world!123"
akan menjadi" !123deHllloorw"
. Pencocokan terhadap/([a-z])\1*/ig
akan mengabaikan karakter non-alfa dan membagi string menjadi potongan-potongan dengan huruf yang sama. `.map
dikonversi"aaa"
menjadi"3a"
seperti yang diminta dalam pertanyaan."3b"
akan lebih sedikit dari"12a"
pada basis 36 seperti yang kami harapkan: Ini membandingkan jumlah pertama (n div 36
), dan membandingkan surat kemudian (n mod 36
).join
mereka bersama.JavaScript (Node.js) , 146 byte
Cobalah online!
sumber
f=
. Yang pertama dulu lebih pendek. Tetapi mendapat 4 byte lebih karena OP meminta output mungkin string kosong. Dan saya hanya menyimpannya di sana ...Java 10,
223209301 byte+92 byte sebagai perbaikan untuk input dengan lebih dari 9 huruf tunggal .. Akan lihat apakah saya dapat menurunkannya lagi dengan pendekatan yang berbeda.
Cobalah online.
Penjelasan:
sumber
Scala , 103 byte
Cobalah online!
sumber
Swift 4.2.1 / Xcode 10.1 ,
105410501048370368364 bytesCobalah online!
@KevinCruijssen juga menghapus beberapa spasi.
sumber
false
ke0>1
dantrue
ke1>0
. Cobalah secara online 1027 byte . Mungkin banyak lagi yang bisa di-golf, seperti duplikat yangif let v=$0.key.escaped(asASCII:0>1).lowercased().unicodeScalars.first?.value{return v<$1.key.value}else{return 0>1}
Anda miliki, tetapi saya akan menyerahkannya kepada seseorang yang benar-benar mengenal Swift.true
danfalse
dari jawaban saya.=
-assigns: Cobalah online 364 byte . Selamat menikmati! :)Arang , 30 byte
Cobalah online! Tautan adalah untuk mengucapkan versi kode. Penjelasan:
Jalankan melalui alfabet huruf kecil dan temukan jumlah karakter tertinggi dalam input huruf kecil. Ulangi rentang implisit. (Loop benar-benar pergi dari
0
ken-1
jadi saya harus kenaikan variabel loop pada setiap penggunaan.)Ulangi lagi huruf kecil.
Jika jumlah huruf saat ini sama dengan nilai loop luar ...
Gabungkan hitungan saat ini dengan kemunculan huruf terakhir saat ini dan cetak secara implisit.
sumber
Jelly , 14 byte
Cobalah online!
Program lengkap.
sumber
NodeJS, 299 byte, -6 byte terima kasih kepada @tsh
Tidak begitu cantik tapi berhasil!
Javascript (ES8) (Firefox atau Chrome), 294 byte, -1 byte terima kasih kepada @tsh
Dengan
.flat
metode baru , saya dapat menyimpan 10 byte:Coba ini secara online: https://repl.it/repls/ConcernedHorribleHypothesis
sumber
.replace
x 3 kali ->[R='replace]
dan[R]
x 2 kali.charCodeAt(0)
->.charCodeAt()
(0
default)R ,
131129 byteCobalah online!
sumber
Julia 1.0 , 158 byte
Versi ungolfed asli dengan logika yang sama:
Cobalah online!
sumber
Perl 6,
8682 bytesumber