Bir Stack Exchange sitesinin simgesinde kaç karakter var?


19

Henüz kendi tasarımı olmayan bir Stack Exchange sitesinin adı göz önüne alındığında, simgeler üzerinde ASCII karakterlerinin (ASCII olmayanlar ayrı olarak sayılır) kaç tane olduğuna karar verin. Kodunuz şu 4 durumu ayırt etmelidir:

1 karakter:

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

2 karakter:

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

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

ASCII olmayan:

Anime & Manga
Arduino
Aviation
Chess
CiviCRM
Poker

ASCII olmayan karakterlerin adlarında bulunması nedeniyle bu meydan okumada hariç tutuldu:

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

Kodunuz 4 setin her biri için tutarlı bir ayrı değer çıkarmalıdır. Her çıktı (veya bir işlevden döndürülen dize olmayan değerler için dize temsili), isteğe bağlı sondaki yeni satırı saymayacak şekilde 10 bayttan fazla olmamalıdır.

Aynı dilde birden çok kod parçası oluşturabilirsiniz. Gönderinizin çıktısının, sabit bir sırada birleştirilen her bir kod parçasının çıktısı olduğu düşünülür (böylece Regex'i kullanabilirsiniz).

En kısa kod kazanır.


Bu regex golf gibi dikişler
HEGX64

Veya "Anime ve Manga" nın o logoda Japonca bir karaktere sahip olduğu ve bu nedenle "ASCII Olmayan" listesinde yer aldığı için favicon kullanılarak görüntü analizi yapılabilir.
Chris J

@ChrisJ Bu meydan okuma için İnternet'e erişmeniz gerekmez. Bu başka bir soru olabilir ...
jimmy23013

Anime & Manga'daki karakter açıkçası bir . Ancak Havacılık ile ilgili bir şey olup olmadığını tartışmak kolay değil . Bu yüzden en kolay yolu izlemeye karar verdim.
jimmy23013

Peki biz adı girin ve ascii karakter miktarını çıktı?
GamrCorps

Yanıtlar:


6

CJam, 50 48 45 bayt

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

Yukarıdaki dizelerde parçacıklar tarafından elde edilebilecek yazdırılamaz karakterler var

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

Bu aynı zamanda kod noktalarının 256'nın altında olduğunu gösterir. Çıktı 01 harf, 12 harf, 23 harf ve 3ASCII olmayanlar içindir.

Program, giriş dizesini bir taban 22 numarasına dönüştürür, bir taban-4 kodlu tablodan bir arama yapmadan önce, sayıyı azaltmak için bir dizi modüller gerçekleştirir.

Çevrimiçi deneyin | Test odası


1
Yalan söylüyorsun! Açık Kaynak 3 harflidir! Bunu siteme nasıl yapabilirsin! Ben ... ben ... ben kalbim kırıldı!
Zizouz212

@ Zizouz212 0123Çıktıların her biri harf sayısına karşılık gelmiyor. "Sırasıyla" ile OP'de listelenen sıraya atıfta bulunuyordum, yani 01 harf, 12 harf, 23 harf ve 3ASCII olmayan. Kafa karıştırıcı, evet, ama en golfçü çıkış tercihiydi.
Sp3000

4

Retina, 146 136 134 130 124 107 102 bayt

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

4 bayt golf için @ Sp3000 teşekkürler!
Bana gelen Regexes kullanmalarına izin vererek 17 bayt kapalı golf için Mwr247 @ teşekkürler onun cevabını !
Çıktı değerlerini değiştirebileceğimi hatırlatarak 5 byte'lık golf için teşekkürler @ jimmy23013!

Çıktı sırasıyla 1-char, 2-char, 3-char ve ASCII olmayanlar için 1, 3, 2 ve 4'tür.

Tüm test senaryolarına sahip sürüm, birden fazla satırda çalışmasını sağlamak için birkaç yerde düzenlemelere sahiptir.

Çevrimiçi deneyin!
Tüm test senaryoları ile çevrimiçi deneyin!


@ Sp3000 Oh ... evet, teşekkürler! Fark etmedim. Çok hızlı yazdığınızda ve daha sonra düzgün bir şekilde kontrol etmediğinizde bu olur sanırım. i?(ni|vi) -> [nv]?iŞimdi bile yapabilirim .
daavko

1
JS yanıtımda oldukça kompakt regex'ler var. Eğer yardımcı olacaklarsa onları kullanmaktan çekinmeyin;)
Mwr247

1
@ Mwr247 Teşekkürler, sanırım onları kullanacağım.
daavko

1
Ben kurtulmak için 2-char için 3 çıktı alabilirsiniz düşünüyorum (?!D).
jimmy23013

@ jimmy23013 Bu mantıklı ... Bir şekilde çıktı değerlerini hareket ettirebileceğimi unuttum.
daavko

2

Javscript ES6, 342 339 330 327 bayt

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

Uzun bir dize ile başlayan İade 9tek karakter için farklı bir uzun dize ile başlayan biki, üçüncü dize ile başlayan ibasitçe üç ve undefinedolmayan ASCII için.


Test etmek için herhangi bir yer var mı? Ben Açık Kaynak ... karşı ayaklanmadan bir dizi tespit ettik
Zizouz212

@ Zizouz212 İşte bir keman: jsfiddle.net/fpt60bpg
SuperJedi224

Sadece ben miyim yoksa işe yaramıyor muyum?
Zizouz212

Benim için çalışıyor gibi görünüyor.
SuperJedi224

1

PowerShell, 212 181 bayt

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

Olası girişlerin her birinin ilk, üçüncü ve son karakterlerini alırsanız ( [0,2,-1]sıfır indekslendiğinde), her giriş için benzersiz bir üç harfli dize elde ettiğimi buldum . Daha sonra, hangisine sahip olduğumuzu belirlemek için dize tabanlı bir arama kullanıyoruz.

Girdi alır $args[0]ve yukarıdaki benzersiz işlevini uygular, olarak kaydeder $a.

Bu daha sonra üzerinden arama listemiz aracılığıyla .IndexOf($a)ve sonuçta saklanır $b. Daha sonra, $buygun değeri çıktılamak için değerine dayalı olarak dizinler oluşturan bir sahte üçlüden geçiyoruz .

Çıkışlar 1, 2, 3ve 4tek karakteri, iki karakterlik sırasıyla üç karakter, ASCII olmayan, için.

Düzenle - [0,2,-1]her giriş için benzersiz bir üç karakter dizesi oluşturan ve 31 bayt kaydettiği keşfedildi


2
"Kahve" kodlanmış olduğunu görüyorum. Beynim de öyle.
dotancohen

Test edebileceğim bir yer var mı?
Zizouz212

@ Zizouz212 Herhangi bir Windows bilgisayarı. Ayrıca bu var , ama çalışıyor gibi görünmüyor ve görünüşe göre PASH, PowerShell uygun değil.
Bob

@ Zizouz212 PowerShell, yalnızca Windows olması nedeniyle sahte bir tescilli şirkettir. Bir FOSS kullanıcısıysanız sanallaştırılmış Windows (değerlendirme sürümleri, geliştirici sürümleri vb.) Yüklemenin ücretsiz yolları vardır . PASH, PowerShell ve BASH'ın açık kaynaklı bir karışımıdır, ancak doğrudan yerine tersine mühendislik uygulanmıştır ve PowerShell v1 özelliklerinin yalnızca% 40'ını uygular, bu nedenle oldukça sınırlıdır.
AdmBorkBork

1

JavaScript (ES6), 108 bayt

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

En küçük üç grubun (1 karakter, 3 karakter ve ascii olmayan) her birine özgü normal ifade eşleşmelerinden oluşan bir dizi oluşturur, ardından her dizi için veriler üzerinde bir test eşler. Çıktı stringize edildiğinde 1,0,0ascii olmayanlar, 0,1,03 karakter, 0,0,11 karakter ve 0,0,02 karakter olarak değerlendirilir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.