Ile znaków jest na ikonie witryny Stack Exchange?


19

Biorąc pod uwagę nazwę witryny Stack Exchange, która nie ma jeszcze własnego projektu, zdecyduj, ile znaków ASCII (znaki inne niż ASCII są liczone osobno) ma się na ikonach. Twój kod powinien rozróżniać te 4 przypadki:

1 znak:

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

2 znaki:

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

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

Nie-ASCII:

Anime & Manga
Arduino
Aviation
Chess
CiviCRM
Poker

Wyłączone w tym wyzwaniu za posiadanie w nazwach znaków spoza ASCII:

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

Twój kod powinien wyświetlać spójną odrębną wartość dla każdego z 4 zestawów. Każde wyjście (lub jego reprezentacja ciągu dla wartości nieciągowych zwróconych z funkcji) nie powinna mieć więcej niż 10 bajtów, nie licząc opcjonalnego końcowego znaku nowej linii.

Możesz utworzyć wiele fragmentów kodu w tym samym języku. Wynik przesłania jest uważany za wynik każdego kawałka kodu skonkatenowanego w ustalonej kolejności (więc można użyć Regex).

Najkrótszy kod wygrywa.


To wygląda jak regex golf
HEGX64

Lub może to być analiza obrazu za pomocą favikonu, biorąc pod uwagę, że „Anime i Manga” mają japońskie znaki w tym logo - stąd znajdują się na liście „Non-ASCII”.
Chris J

@ChrisJ Nie należy uzyskiwać dostępu do Internetu w celu wykonania tego wyzwania. To może być kolejne pytanie ...
jimmy23013

Postać w Anime i Mandze jest oczywiście . Ale nie jest łatwo spierać się, czy rzecz w lotnictwie jest . Postanowiłem więc wybrać najłatwiejszy sposób.
jimmy23013

Więc wprowadzamy nazwę i wypisujemy liczbę znaków ascii?
GamrCorps

Odpowiedzi:


6

CJam, 50 48 45 bajtów

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

W powyższych ciągach znajdują się niedrukowalne znaki, które można uzyskać za pomocą urywków

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

Pokazuje to również, że wszystkie punkty kodowe są mniejsze niż 256. Dane wyjściowe dotyczą 01 litery, 12 liter, 23 liter i znaków 3innych niż ASCII.

Program po prostu konwertuje ciąg wejściowy na liczbę podstawową 22, wykonuje serię modułów, aby zmniejszyć liczbę, przed wykonaniem wyszukiwania z tabeli zakodowanej w podstawie 4.

Wypróbuj online | Zestaw testowy


1
Kłamiesz! Open Source ma 3 litery! Jak mogłeś to zrobić na mojej stronie! Jestem ... jestem ... mam złamane serce!
Zizouz212

@ Zizouz212 0123Wyjścia nie odpowiadają liczbie liter każda. Przez „odpowiednio” miałem na myśli kolejność wymienioną w OP, więc 01 litera, 12 litery, 23 litery i 3nie jest ASCII. Mylące, tak, ale był to wybór najbardziej golfowy.
Sp3000

4

Siatkówka, 146 136 134 130 124 107 102 bajtów

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

Dzięki @ Sp3000 za grę w golfa z 4 bajtów!
Dzięki @ Mwr247 za grę w golfa poza 17 bajtami, pozwalając mi używać wyrażeń regularnych z jego odpowiedzi !
Dzięki @ jimmy23013 za grę w golfa 5 bajtów, przypominając mi, że mogę zmienić wartości wyjściowe!

Dane wyjściowe to 1, 3, 2 i 4 odpowiednio dla 1-char, 2-char, 3-char i nie-ASCII.

Wersja ze wszystkimi testami została zmodyfikowana w kilku miejscach, aby działała z wieloma liniami.

Wypróbuj online!
Wypróbuj online ze wszystkimi testami!


@ Sp3000 Oh ... tak, dzięki! Nie zauważyłem tego. Tak się dzieje, gdy piszesz zbyt szybko, a potem nie sprawdzasz go poprawnie. Mogę nawet i?(ni|vi) -> [nv]?iteraz.
daavko

1
Mam kilka kompaktowych wyrażeń regularnych w mojej odpowiedzi JS. Zachęcamy do korzystania z nich, jeśli pomogą;)
Mwr247,

1
@ Mwr247 Dzięki, myślę, że ich użyję.
daavko,

1
Myślę, że możesz wydać 3 za 2-char, aby się ich pozbyć (?!D).
jimmy23013

@ jimmy23013 To ma sens ... Jakoś zapomniałem, że mogę przenosić wartości wyjściowe.
daavko,

2

Javscript ES6, 342 339 330 327 bajtów

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

Zwraca długi ciąg rozpoczynający się 9od jednego znaku, inny długi ciąg rozpoczynający się bod dwóch, trzeci ciąg rozpoczynający się iod trzech i po prostu undefineddla non-ascii.


Czy jest gdziekolwiek to przetestować?
Wykryłem

@ Zizouz212 oto skrzypce: jsfiddle.net/fpt60bpg
SuperJedi224

Czy to tylko ja, czy nie mogę sprawić, żeby działało?
Zizouz212

Wydaje mi się, że to działa.
SuperJedi224

1

PowerShell, 212 181 bajtów

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

Odkryłem, że jeśli weźmiesz pierwszy, trzeci i ostatni znak każdego z możliwych wpisów ( [0,2,-1]po zindeksowaniu zera), otrzymamy unikalny trzyliterowy ciąg dla każdego wpisu. Następnie używamy po prostu wyszukiwania opartego na łańcuchach, aby ustalić, który z nich mamy.

Pobiera dane wejściowe $args[0]i stosuje powyższą funkcję unikalności, zapisuje jako $a.

To jest następnie wysyłane za pośrednictwem naszej listy wyszukiwania przez, .IndexOf($a)a wynik zapisywany w $b. Następnie przechodzimy przez pseudo-trójskładnik, który indeksuje na podstawie wartości $bwyjściowej odpowiedniej wartości.

Wyjścia 1, 2, 3, i 4dla jednej postaci, dwuznakowego, trzy-znakowy, non-ASCII, odpowiednio.

Edycja - odkryto, że [0,2,-1]tworzy unikalny trzyznakowy ciąg dla każdego wpisu, oszczędzając 31 bajtów


2
Widzę, że masz „zakodowaną” kawę. Mój mózg też.
dotancohen

Czy jest miejsce, w którym mogę to przetestować?
Zizouz212

@ Zizouz212 Dowolny komputer z systemem Windows. Jest też coś takiego , ale wydaje się, że nie działa i najwyraźniej jest to PASH, a nie właściwy PowerShell.
Bob

@ Zizouz212 PowerShell jest pseudo-prawnie zastrzeżony, ponieważ jest przeznaczony tylko dla systemu Windows. Istnieją bezpłatne sposoby instalowania zwirtualizowanego systemu Windows (wersje testowe, wersje dla programistów itp.), Jeśli jesteś użytkownikiem FOSS. PASH jest mieszanką programów PowerShell i BASH typu open source, ale jest raczej poddany inżynierii wstecznej niż bezpośredniej i implementuje jedynie około 40% funkcji PowerShell v1, więc jest raczej ograniczony.
AdmBorkBork

1

JavaScript (ES6), 108 bajtów

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

Tworzy tablicę złożoną z dopasowań wyrażeń regularnych unikalnych dla każdej z trzech najmniejszych grup (1 znak, 3 znaki i non-ascii), a następnie mapuje test danych dla każdej tablicy. Gdy dane wyjściowe są uszeregowane, ocenia 1,0,0na non-ascii, 0,1,0na 3 znaki, 0,0,1na 1 znak i 0,0,0na 2 znaki.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.