Quanti caratteri ci sono sull'icona di un sito Stack Stack?


19

Dato il nome di un sito di Stack Exchange che non ha ancora un suo design, decidi quanti caratteri ASCII (quelli non ASCII vengono conteggiati separatamente) ci sono nelle loro icone. Il tuo codice dovrebbe distinguere questi 4 casi:

1 personaggio:

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

2 personaggi:

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

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

Escluso in questa sfida per avere caratteri non ASCII nei loro nomi:

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

Il codice dovrebbe generare un valore distinto coerente per ciascuno dei 4 set. Ogni output (o la sua rappresentazione di stringa per valori non di stringa restituiti da una funzione) non deve superare i 10 byte, senza contare la riga finale finale facoltativa.

Puoi creare più pezzi di codice nella stessa lingua. L'output del tuo invio è considerato l'output di ogni pezzo di codice concatenato in un ordine fisso (quindi puoi usare Regex).

Il codice più corto vince.


Questo è come regex golf
HEGX64

O potrebbe essere l'analisi delle immagini usando la favicon, dato che "Anime e Manga" ha un carattere giapponese in quel logo - quindi essere nella lista "Non ASCII".
Chris J

@ChrisJ Non dovresti accedere a Internet ai fini di questa sfida. Potrebbe essere un'altra domanda ...
jimmy23013

Il personaggio di Anime & Manga è ovviamente un . Ma non è facile discutere se la cosa su Aviation sia a . Così ho deciso di seguire il modo più semplice.
jimmy23013,

Quindi inseriamo il nome e produciamo la quantità di caratteri ASCII?
GamrCorps

Risposte:


6

CJam, 50 48 45 byte

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

Ci sono caratteri non stampabili nelle stringhe sopra, che possono essere ottenuti dagli snippet

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

Ciò mostra anche che i punti di codice sono tutti al di sotto di 256. L'output è 0per 1 lettera, 1per 2 lettere, 2per 3 lettere e 3per non ASCII.

Il programma converte semplicemente la stringa di input in un numero di base 22, esegue una serie di moduli per ridurre il numero verso il basso, prima di eseguire una ricerca da una tabella codificata in base 4.

Provalo online | Suite di test


1
Tu MENTI! Open Source ha 3 lettere! Come hai potuto fare questo sul mio sito! Sono ... sono ... ho il cuore spezzato!
Zizouz212

@ Zizouz212 Le 0123uscite non corrispondono al numero di lettere ciascuna. Con "rispettivamente" mi riferivo all'ordine elencato nel PO, quindi 0è 1 lettera, 1è 2 lettere, 2è 3 lettere e 3non è ASCII. Confuso, sì, ma è stata la scelta di uscita più golfosa.
Sp3000

4

Retina, 146 136 134 130 124 107 102 byte

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

Grazie @ Sp3000 per giocare a golf con 4 byte!
Grazie @ Mwr247 per giocare a golf di 17 byte permettendomi di usare regex dalla sua risposta !
Grazie @ jimmy23013 per aver giocato a golf di 5 byte ricordandomi che posso cambiare i valori di output!

L'output è 1, 3, 2 e 4 rispettivamente per 1 carattere, 2 caratteri, 3 caratteri e non ASCII.

La versione con tutti i test ha modifiche in pochi punti per farlo funzionare su più righe.

Provalo online!
Provalo online con tutti i test!


@ Sp3000 Oh ... sì, grazie! Non l'ho notato. Questo è ciò che accade quando digiti troppo velocemente e non lo controlli dopo, suppongo. Posso anche i?(ni|vi) -> [nv]?iadesso.
Daavko,

1
Ho delle regex piuttosto compatte nella mia risposta JS. Sentiti libero di usarli se ti aiuteranno;)
Mwr247

1
@ Mwr247 Grazie, penso che li userò.
Daavko,

1
Penso che puoi liberare 3 per 2 caratteri per sbarazzarti di (?!D).
jimmy23013,

@ jimmy23013 Questo ha senso ... In qualche modo ho dimenticato di poter spostare i valori di output.
Daavko,

2

Javscript ES6, 342 339 330 327 byte

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

Restituisce una stringa lunga che inizia con 9un carattere, una stringa lunga diversa che inizia con bdue, una terza stringa che inizia con itre e semplicemente undefinedper non ascii.


C'è un posto dove provarlo? Ho rilevato una serie di atti di tradimento contro l'Open Source ...
Zizouz212

@ Zizouz212 ecco un violino: jsfiddle.net/fpt60bpg
SuperJedi224

Sono solo io o non riesco a farlo funzionare?
Zizouz212

Sembra funzionare per me.
SuperJedi224

1

PowerShell, 212 181 byte

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

Ho scoperto che se prendi il primo, il terzo e l'ultimo carattere di ciascuna delle possibili voci ( [0,2,-1]quando con indice zero), otteniamo una stringa univoca di tre lettere per ogni voce. Quindi stiamo semplicemente usando una ricerca basata su stringhe per determinare quale abbiamo.

Accetta input $args[0]e applica la funzione di unicità sopra riportata, salva come $a.

Questo viene quindi inviato attraverso la nostra lista di ricerca tramite .IndexOf($a)e il risultato memorizzato $b. Quindi, passiamo attraverso uno pseudo-ternario che indicizza in base al valore di $bprodurre il valore appropriato.

Uscite 1, 2, 3, e 4per un carattere, due caratteri, tre caratteri, non ASCII, rispettivamente.

Modifica: scoperto che [0,2,-1]crea una stringa univoca di tre caratteri per ciascuna voce, salvando 31 byte


2
Vedo che hai "caffè" hardcoded. Anche il mio cervello lo fa.
dotancohen,

C'è un posto dove posso provarlo?
Zizouz212

@ Zizouz212 Qualsiasi computer Windows. C'è anche questo , ma non sembra funzionare e apparentemente è PASH, non proprio PowerShell.
Bob

@ Zizouz212 PowerShell è pseudo-proprietario, in quanto è solo per Windows. Esistono modi gratuiti per installare Windows virtualizzato (versioni di valutazione, edizioni per sviluppatori, ecc.) Se sei un utente FOSS. PASH è una miscela open source di PowerShell e BASH, ma è retroingegnerizzato piuttosto che diretto e implementa solo circa il 40% delle funzionalità di PowerShell v1, quindi è piuttosto limitato.
AdmBorkBork

1

JavaScript (ES6), 108 byte

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 un array composto da regex corrispondenti univoci a ciascuno dei tre gruppi più piccoli (1 carattere, 3 caratteri e non ascii), quindi mappa un test sui dati per ciascun array. Quando l'output è rigoroso, viene valutato 1,0,0per non ascii, 0,1,0per 3 caratteri, 0,0,1per 1 carattere e 0,0,0per 2 caratteri.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.