Wie viele Zeichen befinden sich auf dem Symbol einer Stack Exchange-Site?

19

Entscheiden Sie anhand des Namens einer Stack Exchange-Site, die noch kein eigenes Design hat, wie viele ASCII-Zeichen (Nicht-ASCII-Zeichen werden separat gezählt) sich auf ihren Symbolen befinden. Ihr Code sollte diese 4 Fälle unterscheiden:

1 Zeichen:

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

2 Zeichen:

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

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

Nicht-ASCII:

Anime & Manga
Arduino
Aviation
Chess
CiviCRM
Poker

Ausgenommen von dieser Herausforderung, da der Name Nicht-ASCII-Zeichen enthält:

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

Ihr Code sollte für jeden der 4 Sätze einen konsistenten unterschiedlichen Wert ausgeben. Jede Ausgabe (oder ihre Zeichenfolgendarstellung für Nicht-Zeichenfolgenwerte, die von einer Funktion zurückgegeben werden) sollte nicht länger als 10 Byte sein, wobei die optionale nachgestellte Zeile nicht berücksichtigt wird.

Sie können mehrere Codeteile in derselben Sprache erstellen. Die Ausgabe Ihrer Übermittlung wird als Ausgabe jedes in einer festen Reihenfolge verketteten Codeteils betrachtet (Sie können also Regex verwenden).

Kürzester Code gewinnt.

jimmy23013
quelle
Das scheint wie Regex Golf
scheint
Oder es könnte eine Bildanalyse mit dem Favicon sein, da "Anime and Manga" einen japanischen Charakter in diesem Logo hat und somit auf der "Non-ASCII" -Liste steht.
Chris J
@ChrisJ Für diese Herausforderung solltest du nicht auf das Internet zugreifen. Das könnte eine andere Frage sein ...
Jimmy23013
Die Figur auf Anime & Manga ist offensichtlich eine . Aber es ist nicht leicht zu streiten, ob die Sache mit der Luftfahrt eine ist . Also beschloss ich, den einfachsten Weg zu gehen.
Jimmy23013
Also geben wir den Namen und die Anzahl der ASCII-Zeichen ein?
GamrCorps

Antworten:

6

CJam, 50 48 45 Bytes

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

In den obigen Zeichenfolgen sind nicht druckbare Zeichen enthalten, die mit den Ausschnitten abgerufen werden können

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

Dies zeigt auch, dass die Codepunkte alle unter 256 liegen. Die Ausgabe erfolgt 0für 1 Buchstabe, 1für 2 Buchstaben, 2für 3 Buchstaben und 3für Nicht-ASCII.

Das Programm konvertiert einfach die Eingabezeichenfolge in eine Zahl zur Basis 22, führt eine Reihe von Modulen durch, um die Zahl nach unten zu reduzieren, bevor eine Suche aus einer Base-4-codierten Tabelle durchgeführt wird.

Probieren Sie es online aus | Testsuite

Sp3000
quelle
1
Du lügst! Open Source hat 3 Buchstaben! Wie konntest du das mit meiner Seite machen? Ich bin ... ich bin ... ich bin mit gebrochenem Herzen!
Zizouz212
@ Zizouz212 Die 0123Ausgaben entsprechen nicht der Anzahl der Buchstaben. Mit "bzw." bezog ich mich auf die im OP aufgeführte Reihenfolge, 0ist also 1 Buchstabe, 1ist 2 Buchstaben, 2ist 3 Buchstaben und 3ist nicht-ASCII. Verwirrend, ja, aber es war die golferischste Ausgabewahl.
Sp3000
4

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

Danke @ Sp3000 für das Golfen mit 4 Bytes!
Vielen Dank an @ Mwr247, dass ich 17 Bytes weggolfen habe, indem ich Regexe aus seiner Antwort verwenden durfte !
Vielen Dank an @ jimmy23013, dass Sie 5 Byte abgespielt haben, indem Sie mich daran erinnert haben, dass ich die Ausgabewerte ändern kann!

Die Ausgabe ist 1, 3, 2 und 4 für 1-Zeichen, 2-Zeichen, 3-Zeichen bzw. Nicht-ASCII.

Die Version mit allen Testfällen wurde an wenigen Stellen bearbeitet, damit sie mit mehreren Zeilen funktioniert.

Probieren Sie es online!
Probieren Sie es online mit allen Testfällen!

Daavko
quelle
@ Sp3000 Oh ... ja, danke! Das habe ich nicht bemerkt. Das passiert, wenn du zu schnell tippst und es danach nicht richtig überprüfst, denke ich. Ich kann es sogar i?(ni|vi) -> [nv]?ijetzt.
Daavko
1
Ich habe einige ziemlich kompakte reguläre Ausdrücke in meiner JS-Antwort. Fühlen Sie sich frei, sie zu verwenden, wenn sie helfen werden;)
Mwr247
1
@ Mwr247 Danke, ich denke ich werde sie benutzen.
Daavko
1
Ich denke, Sie können 3 für 2-Zeichen ausgeben, um die loszuwerden (?!D).
Jimmy23013
@ jimmy23013 Das macht Sinn ... Ich habe irgendwie vergessen, dass ich die Ausgabewerte verschieben kann.
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}

Gibt eine lange Zeichenfolge zurück, die mit 9einem Zeichen beginnt , eine andere lange Zeichenfolge, die mit bzwei Zeichen beginnt , eine dritte Zeichenfolge, die mit idrei Zeichen beginnt , und einfach undefinedfür Nicht-ASCII-Zeichen.

SuperJedi224
quelle
Gibt es irgendwo etwas zu testen? Ich habe eine Reihe von
Verratsakten
@ Zizouz212 hier ist eine Geige: jsfiddle.net/fpt60bpg
SuperJedi224
Bin es nur ich oder kann ich es nicht zum Laufen bringen?
Zizouz212
Es scheint für mich zu funktionieren.
SuperJedi224
1

Power, 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]

Ich habe festgestellt, dass, wenn Sie das erste, dritte und letzte Zeichen jedes der möglichen Einträge nehmen ([0,2,-1] bei Indexierung auf Null) nehmen, wir für jeden Eintrag eine eindeutige Zeichenfolge mit drei Buchstaben erhalten. Wir verwenden dann einfach eine stringbasierte Suche, um festzustellen, welche wir haben.

Übernimmt die Eingabe $args[0] und wendet die oben genannte Eindeutigkeitsfunktion an und speichert unter$a .

Dies wird dann über unsere Suchliste gesendet .IndexOf($a) und das Ergebnis in gespeichert $b. Dann durchlaufen wir ein Pseudoternäres, das basierend auf dem Wert von indiziert$b indexiert wird, um den entsprechenden Wert auszugeben.

Ausgänge 1 ,2 , 3, und4 für ein Zeichen, zwei Zeichen, drei Zeichen, nicht-ASCII, respectively.

Bearbeiten - Es wurde festgestellt, dass [0,2,-1]für jeden Eintrag eine eindeutige Zeichenfolge mit drei Zeichen erstellt wird, wodurch 31 Byte gespart werden

AdmBorkBork
quelle
2
Ich sehe, dass Sie "Kaffee" fest codiert haben. Mein Gehirn auch.
Dotancohen
Gibt es einen Ort, an dem ich es ausprobieren kann?
Zizouz212
@ Zizouz212 Beliebiger Windows-Computer. Es gibt auch dies , aber es scheint nicht zu funktionieren und anscheinend ist es PASH, nicht PowerShell.
Bob
@ Zizouz212 PowerShell ist pseudo-proprietär, da es sich nur um Windows handelt. Wenn Sie FOSS-Benutzer sind, haben Sie die Möglichkeit, virtualisierte Windows- Versionen (Testversionen, Entwicklereditionen usw.) kostenlos zu installieren . PASH ist eine Open-Source-Mischung aus PowerShell und BASH, die jedoch nicht direkt, sondern rückentwickelt ist und nur etwa 40% der PowerShell v1-Funktionen implementiert.
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))

Erstellt ein Array, das aus Regex-Übereinstimmungen besteht, die für jede der drei kleinsten Gruppen eindeutig sind (1 Zeichen, 3 Zeichen und Nicht-ASCII), und ordnet anschließend die Daten für jedes Array einem Test zu. Wenn die Ausgabe stringifiziert ist, wird sie 1,0,0für Nicht-ASCII- 0,1,0Zeichen, 0,0,1für 3 Zeichen, für 1 Zeichen und 0,0,0für 2 Zeichen ausgewertet .

Mwr247
quelle