Quantos caracteres existem no ícone de um site do Stack Exchange?


19

Dado o nome de um site do Stack Exchange que ainda não possui um design próprio, decida quantos caracteres ASCII (caracteres não ASCII são contados separadamente) existem em seus ícones. Seu código deve distinguir esses 4 casos:

1 caractere:

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

2 caracteres:

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 caracteres:

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

Não ASCII:

Anime & Manga
Arduino
Aviation
Chess
CiviCRM
Poker

Excluído neste desafio por ter caracteres não ASCII em seus nomes:

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

Seu código deve gerar um valor distinto consistente para cada um dos 4 conjuntos. Cada saída (ou sua representação de string para valores não string retornados de uma função) deve ter no máximo 10 bytes, sem contar a nova linha à direita opcional.

Você pode criar vários trechos de código no mesmo idioma. A saída do seu envio é considerada a saída de cada parte do código concatenada em uma ordem fixa (para que você possa usar o Regex).

O menor código vence.


Este costuras como o golfe regex
HEGX64

Ou pode ser uma análise de imagem usando o favicon, já que "Anime e Manga" tem um caractere japonês nesse logotipo - portanto, está na lista "Não-ASCII".
Chris J

@ ChrisJ Você não deveria acessar a Internet para o objetivo deste desafio. Isso poderia ser uma outra questão ...
jimmy23013

O personagem de Anime e Manga é obviamente um . Mas não é fácil argumentar se a coisa na aviação é a . Então eu decidi seguir o caminho mais fácil.
precisa saber é o seguinte

Então inserimos o nome e produzimos a quantidade de caracteres ascii?
precisa saber é o seguinte

Respostas:


6

CJam, 50 48 45 bytes

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

Existem caracteres não imprimíveis nas sequências acima, que podem ser obtidos pelos trechos

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

Isso também mostra que os pontos de código estão todos abaixo de 256. A saída é 0para 1 letra, 12 letras, 23 letras e 3não ASCII.

O programa simplesmente converte a string de entrada em um número base 22, executa uma série de módulos para reduzir o número, antes de executar uma pesquisa a partir de uma tabela codificada na base 4.

Experimente online | Suíte de teste


11
Você mente! Código aberto tem 3 letras! Como você pôde fazer isso no meu site! Estou ... Estou ... Estou com o coração partido!
precisa saber é o seguinte

@ Zizouz212 As 0123saídas não correspondem ao número de letras cada. Por "respectivamente" eu estava me referindo à ordem listada no OP, assim 0como 1 letra, 12 letras, 23 letras e 3não é ASCII. Confuso, sim, mas foi a melhor opção de saída.
Sp3000 4/16/16

4

Retina, 146 136 134 130 124 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

Obrigado @ Sp3000 por jogar fora 4 bytes!
Obrigado @ Mwr247 por jogar 17 bytes, deixando-me usar expressões regulares de sua resposta !
Obrigado @ jimmy23013 por jogar fora 5 bytes lembrando-me que eu posso alterar os valores de saída!

A saída é 1, 3, 2 e 4 para 1 caractere, 2 caracteres, 3 caracteres e não ASCII, respectivamente.

A versão com todos os casos de teste tem edições em alguns locais para fazê-lo funcionar com várias linhas.

Experimente online!
Experimente online com todos os casos de teste!


@ Sp3000 Oh ... sim, obrigado! Não percebi isso. É o que acontece quando você digita muito rápido e não verifica corretamente depois, eu acho. Eu posso até i?(ni|vi) -> [nv]?iagora.
Daavko 03/03

11
Eu tenho algumas expressões regulares bastante compactas na minha resposta JS. Sinta-se livre para usá-los se eles vão ajudar;)
Mwr247

11
@ Mwr247 Obrigado, acho que vou usá-los.
Daavko 03/03

11
Eu acho que você pode produzir 3 para 2-char para se livrar do (?!D).
precisa saber é o seguinte

@ jimmy23013 Isso faz sentido ... De alguma forma eu esqueci que posso mover os valores de saída.
Daavko 03/03

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}

Retorna uma sequência longa iniciando com 9um caractere, uma sequência longa diferente iniciando com bdois, uma terceira sequência iniciando com ipara três e simplesmente undefinedpara não-ascii.


Existe algum lugar para testá-lo? Eu detectei uma série de atos de traição contra código-fonte aberto ...
Zizouz212 4/16/16

@ Zizouz212 aqui está um violino: jsfiddle.net/fpt60bpg
SuperJedi224 4/16

Sou apenas eu ou não posso fazê-lo funcionar?
precisa saber é o seguinte

Parece estar funcionando para mim.
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]

Descobri que, se você pegar o primeiro, o terceiro e o último caracteres de cada uma das entradas possíveis ( [0,2,-1]quando indexadas a zero), obteremos uma sequência de três letras exclusiva para cada entrada. Em seguida, estamos simplesmente usando uma pesquisa baseada em string para determinar qual delas temos.

Recebe entrada $args[0]e aplica a função de exclusividade acima, salva como $a.

Este é então enviado através da nossa lista de pesquisa via .IndexOf($a)e o resultado armazenado em $b. Em seguida, passamos por um pseudo-ternário que indexa com base no valor de $bpara gerar o valor apropriado.

Saídas 1, 2, 3, e 4para um caráter, de dois caracteres, de três caracteres, não-ASCII, respectivamente.

Edição - descoberta que [0,2,-1]cria uma sequência única de três caracteres para cada entrada, economizando 31 bytes


2
Vejo que você tem "café" codificado. Meu cérebro também.
dotancohen

Existe um lugar onde eu possa testá-lo?
precisa saber é o seguinte

@ Zizouz212 Qualquer computador com Windows. Há também isso , mas parece não estar funcionando e, aparentemente, é PASH, não é o PowerShell adequado.
Bob

@ Zizouz212 O PowerShell é pseudo-proprietário, pois é apenas para Windows. Existem maneiras gratuitas de instalar o Windows virtualizado (versões de avaliação, edições do desenvolvedor etc.) se você for um usuário do FOSS. O PASH é uma combinação de código-fonte aberto do PowerShell e BASH, mas tem engenharia reversa e não direta, e implementa apenas cerca de 40% dos recursos do PowerShell v1, por isso é 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))

Cria uma matriz composta por correspondências regex exclusivas para cada um dos três grupos menores (1 caractere, 3 caracteres e não ascii) e, em seguida, mapeia um teste nos dados de cada matriz. Quando a saída é especificada, ela avalia como 1,0,0não-ascii, 0,1,03 caracteres, 0,0,11 caractere e 0,0,02 caracteres.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.