¿Cuántos caracteres hay en el icono de un sitio de Stack Exchange?

19

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.

jimmy23013
fuente
Esto parece un
juego de
O podría ser un análisis de imágenes usando el favicon, dado que "Anime y Manga" tiene un carácter japonés en ese logotipo, por lo tanto, está en la lista "No ASCII".
Chris J
@ChrisJ Se supone que no debes acceder a Internet para este desafío. Esa podría ser otra pregunta ...
jimmy23013
El personaje de Anime y Manga es obviamente un . 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.
jimmy23013
¿Entonces ingresamos el nombre y sacamos la cantidad de caracteres ascii?
GamrCorps

Respuestas:

6

CJam, 50 48 45 bytes

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

Hay caracteres no imprimibles en las cadenas de arriba, que pueden ser obtenidos por los fragmentos

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

Esto también muestra que los puntos de código están todos por debajo de 256. La salida es 0para 1 letra, 1para 2 letras, 2para 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

Sp3000
fuente
1
¡Tu mientes! ¡El código abierto tiene 3 letras! ¿Cómo pudiste hacerle esto a mi sitio? Estoy ... estoy ... estoy desconsolada!
Zizouz212
@ Zizouz212 Las 0123salidas no corresponden al número de letras cada una. Por "respectivamente" me refería al orden que figura en el OP, por lo que 0es 1 letra, 1es 2 letras, 2es 3 letras y 3no es ASCII. Confuso, sí, pero fue la mejor opción de salida de golf.
Sp3000
4

Retina, 146 136 134 130 130 124 107 102 bytes

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

¡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!

daavko
fuente
@ Sp3000 Oh ... sí, gracias! No me di cuenta de eso. Supongo que eso es lo que sucede cuando escribes demasiado rápido y no lo verificas correctamente después. Puedo incluso i?(ni|vi) -> [nv]?iahora.
daavko
1
Tengo algunas expresiones regulares bastante compactas en mi respuesta JS. Siéntase libre de usarlos si ayudan;)
Mwr247
1
@ Mwr247 Gracias, creo que los usaré.
daavko
1
Creo que puede generar 3 para 2-char para deshacerse de (?!D).
jimmy23013
@ jimmy23013 Eso tiene sentido ... De alguna manera olvidé que puedo mover los valores de salida.
daavko
2

Javscript ES6, 342 339 330 327 bytes

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

Devuelve una cadena larga que comienza con 9un carácter, una cadena larga diferente que comienza con bdos, una tercera cadena que comienza con itres y, simplemente, undefinedsin ascii.

SuperJedi224
fuente
¿Hay algún lugar para probarlo? He detectado una serie de actos de traición contra Open Source ...
Zizouz212
@ Zizouz212 aquí hay un violín: jsfiddle.net/fpt60bpg
SuperJedi224
¿Soy solo yo o no puedo hacer que funcione?
Zizouz212
Parece estar funcionando para mí.
SuperJedi224
1

PowerShell, 212 181 bytes

$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]

Descubrí 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 $bpara generar el valor apropiado.

Salidas 1, 2, 3, y 4para 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 bytes

AdmBorkBork
fuente
2
Veo que tienes "café" codificado. Mi cerebro también lo hace.
dotancohen
¿Hay algún lugar donde pueda probarlo?
Zizouz212
@ Zizouz212 Cualquier computadora con Windows. También hay esto , pero no parece estar funcionando y aparentemente es PASH, no PowerShell adecuado.
Bob
@ Zizouz212 PowerShell es pseudo-propietario, ya que es solo de Windows. Hay formas gratuitas de instalar Windows virtualizado (versiones de evaluación, ediciones de desarrollador, etc.) si es un usuario de FOSS. PASH es una combinación de código abierto de PowerShell y BASH, pero tiene ingeniería inversa en lugar de directa, y solo implementa alrededor del 40% de las características de PowerShell v1, por lo que es bastante limitado.
AdmBorkBork
1

JavaScript (ES6), 108 bytes

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))

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,0como no ascii, 0,1,0para 3 caracteres, 0,0,1para 1 carácter y 0,0,0para 2 caracteres.

Mwr247
fuente