É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.
la source
画
. 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.Réponses:
CJam,
504845 octetsIl y a des caractères non imprimables dans les chaînes ci-dessus, qui peuvent être obtenus par les extraits
Cela montre également que les points de code sont tous inférieurs à 256. La sortie est
0
pour 1 lettre,1
pour 2 lettres,2
pour 3 lettres et3
pour 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
la source
0123
sorties ne correspondent pas au nombre de lettres chacune. Par "respectivement", je faisais référence à l'ordre indiqué dans le PO, donc0
1 lettre,1
2 lettres,2
3 lettres et3
non-ASCII. Déroutant, oui, mais c'était le choix de sortie le plus golfique.Rétine,
146136134 134130124107102 octetsMerci @ 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!
la source
i?(ni|vi) -> [nv]?i
maintenant.(?!D)
.Javscript ES6,
342339330327 octetsRenvoie une chaîne longue commençant par
9
pour un caractère, une chaîne longue différente commençant parb
pour deux, une troisième chaîne commençant pari
pour trois et simplementundefined
pour non-ascii.la source
PowerShell,
212181 octetsJ'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$b
pour sortir la valeur appropriée.Sorties
1
,2
,3
et4
pour 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 octetsla source
JavaScript (ES6), 108 octets
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,0
non-ascii,0,1,0
à 3 caractères,0,0,1
à 1 caractère et0,0,0
à 2 caractères.la source