Il est très difficile de se souvenir de mon mot de passe, j'ai donc trouvé un moyen de générer un mot de passe.
La façon dont je génère mon mot de passe est à partir d'un mot ou d'une phrase, en suivant ces étapes:
Partir de gauche à droite
Trouvez le nombre de chaque lettre
Mettre une lettre avec son nombre dans une commande
Les lettres avec une répétition plus élevée seront finalement
Les lettres avec la même répétition seront classées par ordre alphabétique
Les chiffres et les lettres spéciales seront ignorés, y compris les espaces (par exemple, 9, 4, @, (, *, etc. sont ignorés)
Lettres de groupe ignorant la casse. Dans la sortie, utilisez le cas de la dernière occurrence dans l'entrée
- Le nombre de lettres peut être n'importe quel nombre, par exemple 5H17M345K
- Si l'entrée est composée uniquement de chiffres ou de lettres spéciales, la sortie sera une chaîne vide, par exemple Entrée "12 $ * 34 ^!" puis sortez ""
- lorsque l'ordre pour la même occurrence par ordre alphabétique n'a pas d'importance, par exemple 1a1B1c
Exemple:
Input: Kitkat Tango
(2k / 1i / 3T / 2a / 1n / 1g / 1o)
Output: 1g1i1n1o2a2k3T
Un autre exemple:
Input: Database Partitions Task
(1D / 5a / 4T / 1b / 3s / 1e / 1P / 1r / 2i / 1o / 1n / 3s / 1k)
Output: 1b1D1e1k1n1o1P1r2i3s4T5a
Remarque: les lettres avec 1 répétition sont au début classées par ordre alphabétique puis les lettres avec plus de répétitions
C'est le code-golf , le code le plus court l'emporte.
la source
1.
ajouter au moins 1 cas de test qui comprend plus de 9 occurrences d'une ou plusieurs lettres,2.
spécifier que la sortie doit être une chaîne (bien que je déconseille fortement d'être aussi strict; cela n'ajoute rien au défi ),3.
spécifiez que nous devons être en mesure de gérer les entrées ne contenant pas de lettres et4.
clarifiez si nous devons ou non gérer une chaîne vide en entrée.1
. De plus, à l'avenir, vous pourriez envisager d'utiliser notre bac à sable pour essayer de résoudre des problèmes comme ceux-ci avant de publier un défi.Réponses:
Japt v2.0a0
-P
, 14 octetsEssayez-le
la source
05AB1E ,
191716 octets1 octet enregistré grâce à Kevin Cruijssen
Essayez-le en ligne! ou comme suite de tests
Explication
la source
‚
(paire avec) en«
(concat / fusion), de sorte que l'un des deuxJ
s (jointures) puisse être supprimé.J
intérieur? Edit: En fait, j'en avais besoin en tant que paire dans la version 19 octets et je n'ai pas pensé à le changer quand j'ai fait celui de 17: PJ
oin, selon la réponse à cette questionC # (Visual C # Interactive Compiler) , 105 octets
Essayez-le en ligne!
Merci à Dana de l'avoir ramené à 105 octets contre 138 octets.
la source
.OrderBy(a=>a)
?Perl 6 ,
6663 octetsEssayez-le en ligne!
Explication
la source
Rétine ,
67664139 octets-25 octets et correction d'un bug mineur grâce à @Neil .
-2 octets grâce à @Neil et @Shaggy ensemble.
Essayez-le en ligne ou vérifiez tous les cas de test .
Explication:
Supprimez tout sauf les lettres majuscules et minuscules:
ie
Kitkat Tango 123!
→KitkatTango
Trier les lettres individuelles insensibles à la casse ( merci à @MartinEnder pour cela ):
ie
KitkatTango
→aagiKknottT
Capturez chaque morceau de la casse des lettres adjacentes répétées: à
savoir
aagiKknottT
→ [aa
,g
,i
,Kk
,n
,o
,ttT
]Préfixer par la longueur de chaque match, et ne garder que la dernière lettre de chaque morceau:
soit [
aa
,g
,i
,Kk
,n
,o
,ttT
] →2a1g1i2k1n1o3T
Triez les chiffres et les groupes de lettres en fonction des chiffres:
2a1g1i2k1n1o3T
→1g1i1n1o2a2k3T
Après quoi, le résultat est implicitement émis.
la source
"aA" < "aa"
)\w
et.
leO`\w.
ont été utilisés pour indiquer que nous trions des paires de caractères. Je ne sais pas si nous pouvons trier chaque paire de caractères, mais uniquement en fonction du premier caractère. Mais bon, la suggestion de Martin de trier chaque personnage en fonction d'une substitution (qui est la variante minuscule de la correspondance) fonctionne comme un charme. :)\P{L}
pourrait fonctionner, ce qui économise 2 octets.Langue Wolfram (Mathematica) ,
102969387 octetsEssayez-le en ligne!
la source
Pyth,
272422 octetsEssayez-le en ligne ici .
Edit: Golfé 3 octets par ordre de caractère avant groupe, version précédente:
sm+ldedo,lNr0eN.gr0kf}r0TGQ
Edit 2: Golfed off 2 octets supplémentaires en formatant la sortie avant toute commande, version précédente:
sm+ldedlD.gr0krD0f}r0TGQ
Edit 3: Golfé d'un autre octet en changeant le filtre, grâce à @FryAmTheEggman. A également dû corriger un bogue lorsque OP a précisé qu'une seule lettre peut apparaître plus de 9 fois, ce qui a ajouté un octet à: o (Version précédente:
srD0m+lded.gr0kf}r0TGQ
la source
APL (Dyalog Extended) , 28 octets SBCS
Fonction de préfixe tacite anonyme.
Essayez-le en ligne!
'\PL'
non-lettres⎕R
PCRE R remplacées par''
des chaînes vides(
…)
Appliquez la fonction tacite suivante:⌊
avec les minuscules comme clés,…
⌸
appliquez la fonction tacite ci-dessous à chaque clé et à son ensemble de valeurs correspondant, à savoir⊢
l'argument:(
…)
Appliquer la fonction tacite suivante⍤
à⊢
la liste de valeurs:⊢/
la dernière valeur…
,
Ajoutez ce qui suit à cela:⍕
la stringification⍤
du≢
décompte⊂
entourer (pour traiter la liste de caractères comme une chaîne unique)∊
ε nlist (Aplatir)⍤
la∧
Version tri-croissant de cettela source
Perl 5,
746866 octets-6 octets passant
-p
à-n
et utilisantsay
au lieu de$_=join"",
-2 octets grâce à Abigail utilisant\pL
au lieu de[a-z]
TIO
59 octets, au cas où il n'y aurait pas plus de 9 occurrences de chaque caractère
la source
Python 2 , 116 octets
Essayez-le en ligne!
la source
Database Partitions Task
n'est pas égale à1b1D1e1k1n1o1P1r2i3s4T5a
In the output, use the case of the last occurrence in the input
vous aurez besoinrfind
au lieu defind
cela....] for
peut devenir...]for
pour compenser cela cependant.Python 3 , 105 octets
Essayez-le en ligne!
-1 merci à ArBo .
la source
Haskell ,
114/113105 octets-9 octets grâce à Laikoni ( en utilisant la liste-compréhension et au
(||)
lieu defilter
avecelem
et raccourcirlength
pour se débarrasser de laidzip
)!Essayez-le en ligne!
la source
Rouge ,
220196206 octetsEssayez-le en ligne!
Merci à Shaggy d'avoir trouvé un bug.
la source
Gelée , 15 octets
Un programme complet imprimant le mot de passe comme spécifié (en tant que lien monadique, il produit une liste de listes contenant chacune un entier et un caractère).
Essayez-le en ligne!
la source
Husk , 15 octets
Aucun problème avec les importations lors de l' utilisation Husk, nous pouvons donc utiliser les différentes fonctions pratiques telles que
groupOn
,sortOn
,toLower
etc:Essayez-le en ligne ou essayez-les tous!
Explication
la source
JavaScript (Node.js) , 127 octets
Essayez-le en ligne!
parseInt(numberAsString, radix)
va essayer d'analyser un entier au début de la chaîne. Par exemple,parseInt('120px', 10)
affichera 120. Lorsque l'analyse a échoué, elle revient à laNaN
place. Nous connectons un'0'
au début de chaque caractère afin qu'il revienne0
pour tout caractère non numérique-alpha. Et nous pouvons trier les mêmes lettres ensemble et les caractères non alpha au début par cet algorithme.sort
etjoin
,"Hello world!123"
deviendrait" !123deHllloorw"
. Une contre-correspondance/([a-z])\1*/ig
ignorera tout caractère non alpha et divisera la chaîne en morceaux avec les mêmes lettres. ".map
convertir"aaa"
au"3a"
besoin dans la question."3b"
serait moins qu'en"12a"
base 36 comme on s'y attend: il compare d'abord les décomptes (n div 36
), et compare la lettre plus tard (n mod 36
).join
, ensemble.JavaScript (Node.js) , 146 octets
Essayez-le en ligne!
la source
f=
. Le premier était plus court. Mais il obtient 4 octets de plus car OP a demandé que la sortie soit une chaîne vide. Et je les ai juste gardés là ...Java 10,
223209301 octets+92 octets comme correctif pour les entrées avec plus de 9 d'une seule lettre .. Je verrai si je peux redescendre avec une approche différente.
Essayez-le en ligne.
Explication:
la source
Scala , 103 octets
Essayez-le en ligne!
la source
Swift 4.2.1 / Xcode 10.1 ,
105410501048370368364 octetsEssayez-le en ligne!
@KevinCruijssen a également supprimé certains espaces.
la source
false
au golf de0>1
ettrue
vers1>0
. Essayez-le en ligne 1027 octets . Il y a probablement beaucoup plus de golf, comme le double queif let v=$0.key.escaped(asASCII:0>1).lowercased().unicodeScalars.first?.value{return v<$1.key.value}else{return 0>1}
vous avez, mais je laisse cela à quelqu'un qui connaît Swift.true
etfalse
de ma réponse.=
affectations: essayez-le en ligne 364 octets . Profitez de votre séjour! :)Fusain , 30 octets
Essayez-le en ligne! Le lien est vers la version détaillée du code. Explication:
Parcourez l'alphabet en minuscules et trouvez le nombre de caractères le plus élevé dans l'entrée en minuscules. Boucle sur la plage implicite. (La boucle va de
0
à,n-1
donc je dois incrémenter la variable de boucle à chaque utilisation.)Parcourez à nouveau l'alphabet minuscule.
Si le nombre de la lettre actuelle est égal à la valeur de la boucle externe ...
Concaténez le nombre actuel avec la dernière occurrence de la lettre actuelle et imprimez implicitement.
la source
Gelée , 14 octets
Essayez-le en ligne!
Programme complet.
la source
NodeJS, 299 octets, -6 octets grâce à @tsh
Pas si beau mais ça marche!
Javascript (ES8) (Firefox ou Chrome), 294 octets, -1 octet merci à @tsh
Avec une nouvelle
.flat
méthode, je peux économiser 10 octets:Essayez ceci en ligne: https://repl.it/repls/ConcernedHorribleHypothesis
la source
.replace
x 3 fois ->[R='replace]
et[R]
x 2 fois.charCodeAt(0)
->.charCodeAt()
(0
par défaut)R ,
131129 octetsEssayez-le en ligne!
la source
Julia 1.0 , 158 octets
Version originale non golfée avec la même logique:
Essayez-le en ligne!
la source
Perl 6,
8682 octetsla source