Combien de caractères y a-t-il sur l'icône d'un site Stack Exchange?

19

Étant donné le nom d'un site Stack Exchange qui n'a pas encore sa propre conception, décidez du nombre de caractères ASCII (ceux non ASCII sont comptés séparément) sur leurs icônes. Votre code doit distinguer ces 4 cas:

1 caractère:

Astronomy
Beer
Freelancing
Health
History
Law
Music: Practice & Theory
Parenting
The Great Outdoors
Writers

2 caractères:

3D Printing
Amateur Radio
Biblical Hermeneutics
Bitcoin
Board & Card Games
Buddhism
Chinese Language
Coffee
Community Building
Computational Science
Computer Graphics
Data Science
Earth Science
Ebooks
Economics
Emacs
Engineering
Expatriates
French Language
Gardening & Landscaping
Genealogy & Family History
German Language
Hardware Recommendations
Hinduism
Homebrewing
Islam
Italian Language
Japanese Language
Joomla
Lifehacks
Martial Arts
Mathematics Educators
Motor Vehicle Maintenance & Repair
Music Fans
Mythology
Open Data
Personal Productivity
Pets
Philosophy
Physical Fitness
Politics
Portuguese Language
Project Management
Puzzling
Quantitative Finance
Reverse Engineering
Robotics
Russian Language
Software Quality Assurance & Testing
Software Recommendations
Sound Design
Space Exploration
Spanish Language
Sports
Startups
Sustainable Living
Tridion
Vi and Vim
Video Production
Windows Phone
Woodworking
Worldbuilding

3 caractères:

Cognitive Sciences
elementary OS
Ethereum
History of Science and Mathematics
Linguistics
Open Source
Programming Puzzles & Code Golf
Signal Processing
Tor

Non ASCII:

Anime & Manga
Arduino
Aviation
Chess
CiviCRM
Poker

Exclus dans ce défi pour avoir des caractères non ASCII dans leurs noms:

LEGO® Answers
Русский язык

Votre code doit générer une valeur distincte cohérente pour chacun des 4 ensembles. Chaque sortie (ou sa représentation sous forme de chaîne pour les valeurs non-chaîne renvoyées par une fonction) ne doit pas dépasser 10 octets, sans compter la nouvelle ligne de fin facultative.

Vous pouvez créer plusieurs morceaux de code dans la même langue. La sortie de votre soumission est considérée comme la sortie de chaque morceau de code concaténé dans un ordre fixe (vous pouvez donc utiliser Regex).

Le code le plus court gagne.

jimmy23013
la source
Cela ressemble au golf regex
HEGX64
Ou pourrait être une analyse d'image utilisant le favicon, étant donné que "Anime et Manga" a un caractère japonais dans ce logo - donc étant sur la liste "Non-ASCII".
Chris J
@ChrisJ Vous n'êtes pas censé accéder à Internet dans le cadre de ce défi. Cela pourrait être une autre question ...
jimmy23013
Le personnage d'Anime & Manga est évidemment un . Mais il n'est pas facile de se demander si la chose sur l'aviation est un . J'ai donc décidé de suivre la voie la plus simple.
jimmy23013
Nous entrons donc le nom et la sortie du nombre de caractères ascii?
GamrCorps

Réponses:

6

CJam, 50 48 45 octets

l22b391"þÁ "+{i%}/"Yª>Þÿ9cîÂcVáòe~"322b4b=

Il y a des caractères non imprimables dans les chaînes ci-dessus, qui peuvent être obtenus par les extraits

[254 193 160]:c
[89 170 62 222 30 255 20 57 99 238 194 99 86 225 242 101 126 20]:c

Cela montre également que les points de code sont tous inférieurs à 256. La sortie est 0pour 1 lettre, 1pour 2 lettres, 2pour 3 lettres et 3pour non-ASCII.

Le programme convertit simplement la chaîne d'entrée en un nombre de base 22, effectue une série de modules pour réduire le nombre, avant d'effectuer une recherche à partir d'une table codée en base 4.

Essayez-le en ligne | Suite de tests

Sp3000
la source
1
Tu mens! Open Source a 3 lettres! Comment pourriez-vous faire cela sur mon site! Je suis ... je suis ... j'ai le cœur brisé!
Zizouz212
@ Zizouz212 Les 0123sorties ne correspondent pas au nombre de lettres chacune. Par "respectivement", je faisais référence à l'ordre indiqué dans le PO, donc 01 lettre, 12 lettres, 23 lettres et 3non-ASCII. Déroutant, oui, mais c'était le choix de sortie le plus golfique.
2016
4

Rétine, 146 136 134 134 130 124 107 102 octets

A\w*i|Che|CR|ke
4
my|Be|lan|^H.*y$|lt|aw|:|Pa|Ou|Wr
1
gn.|^e|Et|^H.*S|gui|rc|lf|To
2
.*(\d).*
$1
..+
3

Merci @ Sp3000 pour avoir joué au golf sur 4 octets!
Merci @ Mwr247 d'avoir joué au golf 17 octets en me permettant d'utiliser des expressions rationnelles de sa réponse !
Merci @ jimmy23013 pour avoir joué 5 octets au golf en me rappelant que je peux changer les valeurs de sortie!

La sortie est 1, 3, 2 et 4 pour 1 caractère, 2 caractères, 3 caractères et non ASCII, respectivement.

La version avec tous les tests a été modifiée à quelques endroits pour la faire fonctionner avec plusieurs lignes.

Essayez-le en ligne!
Essayez-le en ligne avec tous les tests!

daavko
la source
@ Sp3000 Oh ... oui, merci! Je n'ai pas remarqué ça. C'est ce qui se produit lorsque vous tapez trop vite et que vous ne le vérifiez pas correctement par la suite, je suppose. Je peux même i?(ni|vi) -> [nv]?imaintenant.
daavko
1
J'ai quelques regex assez compactes dans ma réponse JS. N'hésitez pas à les utiliser s'ils vous aident;)
Mwr247
1
@ Mwr247 Merci, je pense que je vais les utiliser.
daavko
1
Je pense que vous pouvez sortir 3 pour 2 caractères pour vous débarrasser de la (?!D).
jimmy23013
@ jimmy23013 Cela a du sens ... J'ai en quelque sorte oublié que je peux déplacer les valeurs de sortie.
daavko
2

Javscript ES6, 342 339 330 327 octets

a=>{for(c of "9As4BebFr6He7Hi3LaoMu9PaiTh7Wrzb3DdAmlBi7BiiBo8BugCh6CoiColCohCocDadEa6Eb9Ec5EmbEnbExfFrnGaqGefGeoHa8HibHo5IsgIthJa6Jo9LicMalMayMoaMu9My9OplPe4PeaPhgPh8PojPoiPr8PukQujRe8RogRu10SooSocSohSpgSp6Sp8StiSu7TraVigVidWibWodWoziCodel8EtyHibLibOpvPrhSi3To".split`z`)if(~c.indexOf(a.length.toString(36)+a[0]+a[1]))return c}

Renvoie une chaîne longue commençant par 9pour un caractère, une chaîne longue différente commençant par bpour deux, une troisième chaîne commençant par ipour trois et simplement undefinedpour non-ascii.

SuperJedi224
la source
Y a-t-il un endroit pour le tester? J'ai détecté une série d'actes de trahison contre l'Open Source ...
Zizouz212
@ Zizouz212 voici un violon: jsfiddle.net/fpt60bpg
SuperJedi224
Est-ce juste moi ou je ne peux pas le faire fonctionner?
Zizouz212
Cela semble fonctionner pour moi.
SuperJedi224
1

PowerShell, 212 181 octets

$a=-join$args[0][0,2,-1];$b="Aty,Ber,Feg,Hah,Hsy,Lww,Msy,Prg,Tes,Wis,Cgs,eeS,Ehm,Hss,Lns,Oee,Pof,Sgg,Trr,Aia,Ado,Ain,Ces,CvM,Pkr".IndexOf($a);(((1,3)[$b-ge40],4)[$b-ge76],2)[$b-lt0]

J'ai trouvé que si vous prenez les premier, troisième et dernier caractères de chacune des entrées possibles ( [0,2,-1]quand ils sont indexés à zéro), nous obtenons une chaîne de trois lettres unique pour chaque entrée. Nous utilisons ensuite simplement une recherche basée sur des chaînes pour déterminer celle que nous avons.

Prend des données $args[0]et applique la fonction d'unicité ci-dessus, enregistre sous $a.

Il est ensuite envoyé via notre liste de recherche via .IndexOf($a)et le résultat est stocké dans $b. Ensuite, nous passons par un pseudo-ternaire qui indexe en fonction de la valeur de $bpour sortir la valeur appropriée.

Sorties 1, 2, 3et 4pour un caractère, deux caractères, trois caractères, non-ASCII, respectivement.

Modifier - découvert qui [0,2,-1]crée une chaîne de trois caractères unique pour chaque entrée, économisant 31 octets

AdmBorkBork
la source
2
Je vois que vous avez un "café" codé en dur. Mon cerveau aussi.
dotancohen
Y a-t-il un endroit où je peux le tester?
Zizouz212
@ Zizouz212 N'importe quel ordinateur Windows. Il y a aussi cela , mais cela ne semble pas fonctionner et apparemment c'est PASH, pas PowerShell proprement dit.
Bob
@ Zizouz212 PowerShell est pseudo-propriétaire, en ce sens qu'il est uniquement Windows. Il existe des moyens gratuits d'installer Windows virtualisé (versions d'évaluation, éditions développeur, etc.) si vous êtes un utilisateur FOSS. PASH est un mélange open-source de PowerShell et BASH, mais il est rétroconçu plutôt que direct, et ne met en œuvre qu'environ 40% des fonctionnalités de PowerShell v1, il est donc plutôt limité.
AdmBorkBork
1

JavaScript (ES6), 108 octets

a=>[/A\w*i|Che|CR|ke/,/my|Be|lan|^H.*y$|lt|aw|:|Pa|Ou|Wr/,/gn.|^e|Et|^H.*S|gui|rc|lf|To/].map(b=>+b.test(a))

Crée un tableau composé de correspondances d'expression régulière uniques à chacun des trois plus petits groupes (1 caractère, 3 caractères et non ascii), puis mappe un test sur les données de chaque tableau. Lorsque la sortie est chaîne, elle est évaluée à 1,0,0non-ascii, 0,1,0à 3 caractères, 0,0,1à 1 caractère et 0,0,0à 2 caractères.

Mwr247
la source