8 votes

Pouvez-vous recommander des informations sur les lettres/chiffres les moins ambigus ?

Je suis intéressé par la génération de codes courts (jusqu'à 6 caractères) qui sont sans ambiguïté pour la lisibilité humaine :

Par exemple : 2Z8B5S serait un très mauvais code car B ressemble beaucoup à 8 et 2 ressemble beaucoup à Z, etc.

Un bon code serait quelque chose comme : AE37HT, disons.

Évidemment, je pourrais essayer de le découvrir moi-même, mais je cherchais à savoir s'il existait des études réalisées par des gens comme la NASA ou autre.

Si vous avez également des références sur la façon dont la lisibilité est affectée par la couleur, la police de caractères, la taille et la distance d'observation (je regarde quelque chose qui pourrait faire environ un pouce de haut à une distance d'environ 1,80 m), cela serait également utile. Sur l'écran ou éventuellement sur papier, également.

J'ai trouvé cet ensemble de directives, mais il ne contient pas de résultats empiriques que je pourrais transformer en tableau pour générer les codes :

http://www.usabilitysciences.com/usability-of-codes-passwords-numbers-and-letters/

7voto

Reed Copsey Points 315315

Franchement, je pense que le facteur le plus important ici est de choisir la bonne police.

Si votre objectif est purement la lisibilité, il s'agira de choisir une police de préférence :

1) Largeur fixe. Pour repérer des chiffres/lettres aléatoires, la largeur fixe est d'une aide précieuse, puisque le crénage ne change pas à mesure que vous vous déplacez dans la police.

2) Utilisez une police de caractères avec un aspect séparé 0/O - ces caractères dérangent les gens. Recherchez d'autres combinaisons lettres/chiffres similaires. Il est possible d'exclure les 0/O du mélange pour cette seule raison.

3) Choisissez une police avec des empattements et des changements de poids subtils.

Pour des conseils sur la lisibilité, voir cette page .

Avec la bonne police, je pense que vous pourriez choisir n'importe quelle combinaison de lettres et de chiffres et la faire comprendre clairement (à part peut-être le 0 et le O). Je pense que le 8/B, le 5/S et d'autres échantillons seraient clairs dans la bonne police.

L'autre chose que vous pourriez envisager serait d'utiliser une couleur pour les lettres et une seconde pour les chiffres - cela donnerait des indices sur les combinaisons chiffres/lettres potentiellement ambigües. Il s'agirait toutefois d'un indice subtil, car un changement de couleur radical attirerait l'attention sur les lettres ou les chiffres, ce qui nuirait à la lisibilité générale.


Modifier après avoir lu votre commentaire à une autre réponse :

Je n'ai besoin que de quelques milliers de codes, donc je ne m'inquiète pas vraiment de la taille du domaine.

Si c'est le cas, je recommanderais de laisser l'ensemble des chiffres et d'ajouter de manière sélective des lettres qui n'ont aucune similitude visuelle (ou auditive, si vous lisez ces lignes) avec les chiffres. Avec 6 chiffres, même avec des nombres, vous avez plus de possibilités de code que nécessaire. Il sera plus facile d'ajouter sélectivement des lettres pour aider à la différenciation que d'essayer d'en supprimer sélectivement. Je m'en tiendrais probablement aux chiffres 1 à 9, A, Z, R, W et autres lettres qui ne correspondent pas aux chiffres.

7voto

Craigo Points 601

Si tu ne voulais pas te soucier des polices de caractères. Voici une liste que j'ai établie (sans les minuscules) :

'0' can look like a 'O'
'1' can look like a 'l'
'2' can look like a 'Z'
'5' can look like a 'S'
'8' can look like a 'B'
'B' can look like a '8'
'I' can look like a '1'
'J' can look like a '1'
'L' can look like a '1'
'O' can look like a '0'
'S' can look like a '5'
'T' can look like a '1'
'Z' can look like a '2'

3voto

DOK Points 21175

Je suis d'accord avec Reed pour dire que la meilleure solution consiste à police .

Si on essaie d'éliminer les chiffres ambigus, on perd 1 (ressemble à une minuscule l ), 8 (capital B ) et 0 (majuscules ou minuscules) O ), soit 30 % des caractères numériques disponibles. C'est beaucoup. Vous pourriez même avoir des problèmes avec 6 et le capital G .

Ainsi, en éliminant les lettres et les chiffres qui se ressemblent, vous allez vraiment limiter vos choix.

Bien sûr, même avec une police de caractères, il y a quelques similitudes - le zéro et le O majuscule vous poseront toujours des problèmes.

Pourquoi pas Courier New ? Ou quelque chose de similaire. Serif. Mono-espacé.

L'un de mes exemples de police préférés est le nom de l'État de l'Illinois. Essayez de le taper dans une zone de texte en utilisant Arial. Mettez trois L là-dedans : Illlinois. Ensuite, essayez de voir qu'il y a 3 L. Et, bonne chance pour déplacer le point d'insertion au bon endroit. C'est tellement plus facile avec une police de type Courier : Illlinois .

Il y a une raison pour laquelle StackOverflow et d'autres sites affichant du code utilisent une police de type Courier pour afficher le code. Et pourquoi SO et d'autres sites web et logiciels (Apple) utilisent des polices de type Courier pour les champs de saisie de données (zones de texte, zones de texte comme ceci.

2voto

Rob Wells Points 21714

Bonjour,

Vous pourriez regarder du côté des agences de contrôle du trafic aérien, peut-être Eurocontrol peut aider parce que c'est le genre de choses avec lesquelles ils travaillent ?

Edita: S'agit-il d'une confusion visuelle ou orale ?

Edita: Vous pouvez consulter les chapitres consacrés à l'attribution de noms dans l'ouvrage "Code Complete" de Steve McConnell, qui propose quelques règles pour aider à créer des noms non ambigus.

HTH

Santé.

2voto

luvieere Points 19689

Que diriez-vous d'une approche à rebours pour générer les codes, où vous invalideriez toute solution qui ne correspond pas à un ensemble de règles, comme le fait de ne pas avoir de caractères d'apparence similaire les uns à côté des autres. Si vous pouvez identifier toutes les paires de caractères indésirables et marquer comme invalides toutes les solutions qui les contiennent, je suppose que c'est assez simple.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X