Сколько символов на иконке сайта Stack Exchange?


19

Учитывая имя сайта Stack Exchange, который еще не имеет собственного дизайна, решите, сколько символов ASCII (не ASCII считаются отдельно) на их значках. Ваш код должен различать эти 4 случая:

1 персонаж:

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

2 персонажа:

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 персонажа:

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

Исключено в этом испытании за то, что в их именах есть не-ASCII символы:

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

Ваш код должен выводить непротиворечивое отличное значение для каждого из 4 наборов. Каждый вывод (или его строковое представление для нестроковых значений, возвращаемых функцией) должен быть не более 10 байтов, не считая необязательного завершающего символа новой строки.

Вы можете создать несколько частей кода на одном языке. Вывод вашего представления считается выводом каждого фрагмента кода, объединенного в фиксированном порядке (так что вы можете использовать Regex).

Самый короткий код выигрывает.


Это швы, как regex golf
HEGX64

Или это может быть анализ изображений с помощью значка, учитывая, что в этом логотипе «Аниме и манга» есть японский символ, поэтому он находится в списке «не ASCII».
Крис Джей

@ChrisJ Вы не должны выходить в Интернет для выполнения этой задачи. Это может быть другой вопрос ...
jimmy23013

Персонаж аниме и манги, очевидно . Но не легко спорить, является ли вещь на авиации . Поэтому я решил пойти по самому легкому пути.
jimmy23013

Таким образом, мы вводим имя и выводим количество символов ascii?
GamrCorps

Ответы:


6

CJam, 50 48 45 байт

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

В приведенных выше строках есть непечатаемые символы, которые можно получить по фрагментам

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

Это также показывает, что все кодовые точки находятся ниже 256. Выходные данные 0для 1 буквы, 1для 2 букв, 2для 3 букв и 3для не-ASCII.

Программа просто преобразует входную строку в число 22, выполняет серию модулей для уменьшения числа перед тем, как выполнить поиск в кодированной таблице 4.

Попробуй это онлайн | Тестирование


1
Ты врешь! Открытый источник имеет 3 буквы! Как ты мог сделать это на моем сайте! Я ... Я ... Я с разбитым сердцем!
Zizouz212

@ Zizouz212 0123Выходные данные не соответствуют количеству букв в каждой. Под «соответственно» я имел в виду порядок, указанный в OP, поэтому 01 буква, 12 буквы, 23 буквы и 3не-ASCII. Смущает, да, но это был самый удачный выбор для игры.
Sp3000

4

Сетчатка, 146 136 134 130 124 107 102 байта

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

Спасибо @ Sp3000 за 4 байта!
Спасибо @ Mwr247 за отыгрывание 17 байтов, позволив мне использовать регулярные выражения из его ответа !
Спасибо @ jimmy23013 за 5 байтов, напомнив, что я могу изменить выходные значения!

Выходные значения 1, 3, 2 и 4 для 1-символьного, 2-символьного, 3-символьного и не-ASCII соответственно.

Версия со всеми тестовыми сценариями имеет несколько правок, позволяющих работать с несколькими строками.

Попробуйте онлайн!
Попробуйте онлайн со всеми тестами!


@ Sp3000 Ох ... да, спасибо! Не заметил этого Это то, что происходит, когда вы печатаете слишком быстро и потом не проверяете это должным образом. Я могу даже i?(ni|vi) -> [nv]?iсейчас.
Даавко

1
У меня есть довольно компактные регулярные выражения в моем ответе на JS. Не стесняйтесь использовать их, если они помогут;)
Mwr247

1
@ Mwr247 Спасибо, думаю, я ими воспользуюсь.
Даавко

1
Я думаю, что вы можете вывести 3 для 2-х символов, чтобы избавиться от (?!D).
jimmy23013

@ jimmy23013 Это имеет смысл ... Я почему-то забыл, что могу перемещать выходные значения.
Даавко

2

Javscript ES6, 342 339 330 327 байт

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

Возвращает длинную строку, начинающуюся с 9одного символа, другую длинную строку, начинающуюся с bдвух, третью строку, начинающуюся с iтрех, и просто undefinedдля non-ascii.


Есть ли где-нибудь, чтобы проверить это? Я обнаружил серию актов государственной измены против Open Source ...
Zizouz212

@ Zizouz212 вот скрипка: jsfiddle.net/fpt60bpg
SuperJedi224

Это только у меня, или я не могу заставить это работать?
Zizouz212

Кажется, это работает для меня.
SuperJedi224

1

PowerShell, 212 181 байт

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

Я обнаружил, что если вы возьмете первый, третий и последний символы каждой из возможных записей ( [0,2,-1]при нулевом индексировании), мы получим уникальную трехбуквенную строку для каждой записи. Затем мы просто используем поиск на основе строк, чтобы определить, какой у нас есть.

Принимает ввод $args[0]и применяет вышеуказанную функцию уникальности, сохраняет как $a.

Затем он отправляется через наш список поиска через .IndexOf($a)и результат сохраняется в $b. Затем мы проходим через псевдо-троицу, которая индексирует на основе значения, $bчтобы вывести соответствующее значение.

Выходы 1, 2, 3, и в 4течение одного-символа, два-символа, состоящий из трех символов, не ASCII, соответственно.

Изменить - обнаружил, что [0,2,-1]создает уникальную трехсимвольную строку для каждой записи, сохраняя 31 байт


2
Я вижу, что у вас есть "кофе" в жестком коде. Мой мозг тоже.
dotancohen

Есть ли место, где я могу это проверить?
Zizouz212

@ Zizouz212 Любой компьютер с Windows. Есть и это , но, похоже, он не работает, и, очевидно, это PASH, а не PowerShell.
Боб

@ Zizouz212 PowerShell является псевдо-проприетарным, поскольку он предназначен только для Windows. Существуют бесплатные способы установки виртуальной Windows (ознакомительные версии, версии для разработчиков и т. Д.), Если вы являетесь пользователем FOSS. PASH представляет собой смесь PowerShell и BASH с открытым исходным кодом, но он реверс-инжиниринг, а не прямой, и реализует только около 40% функций PowerShell v1, поэтому он довольно ограничен.
AdmBorkBork

1

JavaScript (ES6), 108 байт

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

Создает массив, состоящий из совпадений регулярных выражений, уникальных для каждой из трех наименьших групп (1 символ, 3 символа и не ascii), а затем сопоставляет тест с данными для каждого массива. Когда вывод является строковым, он оценивается 1,0,0как non-ascii, 0,1,0для 3 символов, 0,0,1для 1 символа и 0,0,0для 2 символов.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.