Dado el nombre de un sitio de Stack Exchange que aún no tiene su propio diseño, decida cuántos caracteres ASCII (los que no son ASCII se cuentan por separado) hay en sus iconos. Su código debe distinguir estos 4 casos:
1 personaje:
Astronomy
Beer
Freelancing
Health
History
Law
Music: Practice & Theory
Parenting
The Great Outdoors
Writers
2 personajes:
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 personajes:
Cognitive Sciences
elementary OS
Ethereum
History of Science and Mathematics
Linguistics
Open Source
Programming Puzzles & Code Golf
Signal Processing
Tor
No ASCII:
Anime & Manga
Arduino
Aviation
Chess
CiviCRM
Poker
Excluido en este desafío por tener caracteres no ASCII en sus nombres:
LEGO® Answers
Русский язык
Su código debe generar un valor distintivo consistente para cada uno de los 4 conjuntos. Cada salida (o su representación de cadena para valores que no sean cadenas devueltos por una función) no debe tener más de 10 bytes, sin contar la nueva línea final opcional.
Puede crear múltiples piezas de código en el mismo idioma. El resultado de su envío se considera el resultado de cada código concatenado en un orden fijo (por lo que puede usar Regex).
El código más corto gana.
fuente
画
. Pero no es fácil discutir si la cuestión de la aviación es un✈
. Entonces decidí seguir el camino más fácil.Respuestas:
CJam,
504845 bytesHay caracteres no imprimibles en las cadenas de arriba, que pueden ser obtenidos por los fragmentos
Esto también muestra que los puntos de código están todos por debajo de 256. La salida es
0
para 1 letra,1
para 2 letras,2
para 3 letras y3
para no ASCII.El programa simplemente convierte la cadena de entrada en un número base 22, realiza una serie de módulos para reducir el número hacia abajo, antes de realizar una búsqueda desde una tabla codificada en base 4.
Pruébalo en línea | Banco de pruebas
fuente
0123
salidas no corresponden al número de letras cada una. Por "respectivamente" me refería al orden que figura en el OP, por lo que0
es 1 letra,1
es 2 letras,2
es 3 letras y3
no es ASCII. Confuso, sí, pero fue la mejor opción de salida de golf.Retina,
146136134130 130124107102 bytes¡Gracias @ Sp3000 por jugar golf en 4 bytes!
¡Gracias @ Mwr247 por jugar 17 bytes al permitirme usar expresiones regulares de su respuesta !
¡Gracias @ jimmy23013 por jugar 5 bytes al recordarme que puedo cambiar los valores de salida!
La salida es 1, 3, 2 y 4 para 1-char, 2-char, 3-char y no ASCII, respectivamente.
La versión con todos los casos de prueba tiene ediciones en pocos lugares para que funcione con varias líneas.
Pruébalo en línea!
¡Pruébelo en línea con todos los casos de prueba!
fuente
i?(ni|vi) -> [nv]?i
ahora.(?!D)
.Javscript ES6,
342339330327 bytesDevuelve una cadena larga que comienza con
9
un carácter, una cadena larga diferente que comienza conb
dos, una tercera cadena que comienza coni
tres y, simplemente,undefined
sin ascii.fuente
PowerShell,
212181 bytesDescubrí que si toma el primer, tercer y último carácter de cada una de las entradas posibles (
[0,2,-1]
cuando está indexado a cero), obtenemos una cadena única de tres letras para cada entrada. Entonces simplemente estamos usando una búsqueda basada en cadenas para determinar cuál tenemos.Toma datos
$args[0]
y aplica la función de unicidad anterior, guarda como$a
.Esto se envía a través de nuestra lista de búsqueda a través
.IndexOf($a)
y el resultado se almacena en$b
. Luego, pasamos por un pseudoternario que indexa en función del valor de$b
para generar el valor apropiado.Salidas
1
,2
,3
, y4
para un solo carácter, de dos caracteres, de tres caracteres, no ASCII, respectivamente.Editar: descubrió que
[0,2,-1]
crea una cadena de tres caracteres única para cada entrada, ahorrando 31 bytesfuente
JavaScript (ES6), 108 bytes
Crea una matriz compuesta de coincidencias de expresiones regulares únicas para cada uno de los tres grupos más pequeños (1 carácter, 3 caracteres y no ascii), luego asigna una prueba en los datos para cada matriz. Cuando la salida está en cadena, se evalúa
1,0,0
como no ascii,0,1,0
para 3 caracteres,0,0,1
para 1 carácter y0,0,0
para 2 caracteres.fuente