Berapa banyak karakter yang ada di ikon situs Stack Exchange?

19

Mengingat nama situs Stack Exchange yang belum memiliki desain sendiri, tentukan berapa banyak karakter ASCII (yang bukan ASCII dihitung secara terpisah) yang ada di ikon mereka. Kode Anda harus membedakan 4 kasus ini:

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

Non-ASCII:

Anime & Manga
Arduino
Aviation
Chess
CiviCRM
Poker

Dikecualikan dalam tantangan ini karena memiliki karakter non-ASCII dalam namanya:

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

Kode Anda harus menampilkan nilai berbeda yang konsisten untuk masing-masing 4 set. Setiap output (atau representasi string-nya untuk nilai-nilai non-string yang dikembalikan dari suatu fungsi) harus tidak lebih dari 10 byte, tidak termasuk baris tambahan opsional.

Anda dapat membuat beberapa bagian kode dalam bahasa yang sama. Output dari kiriman Anda dianggap sebagai output dari setiap bagian kode yang disatukan dalam urutan yang tetap (sehingga Anda dapat menggunakan Regex).

Kode terpendek menang.

jimmy23013
sumber
Lapisan ini seperti golf regex
HEGX64
Atau bisa juga analisis gambar menggunakan favicon, mengingat bahwa "Anime dan Manga" memiliki karakter Jepang di logo itu - sehingga berada di daftar "Non-ASCII".
Chris J
@ ChrisJ Anda tidak seharusnya mengakses Internet untuk tujuan tantangan ini. Itu mungkin pertanyaan lain ...
jimmy23013
Karakter pada Anime & Manga jelas a . Tetapi tidak mudah untuk berdebat apakah yang ada di Aviation adalah a . Jadi saya memutuskan untuk mengikuti cara termudah.
jimmy23013
Jadi kami memasukkan nama dan menampilkan jumlah karakter ascii?
GamrCorps

Jawaban:

6

CJam, 50 48 45 byte

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

Ada karakter yang tidak patut dicetak dalam string di atas, yang dapat diperoleh oleh snippet

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

Ini juga menunjukkan bahwa poin kode semuanya di bawah 256. Output adalah 0untuk 1 huruf, 1untuk 2 huruf, 2untuk 3 huruf dan 3untuk non-ASCII.

Program hanya mengkonversi string input ke nomor basis 22, melakukan serangkaian modulos untuk mengurangi nomor turun, sebelum melakukan pencarian dari tabel basis-4 yang dikodekan.

Cobalah online | Suite uji

Sp3000
sumber
1
Kamu berbohong! Open Source memiliki 3 huruf! Bagaimana Anda bisa melakukan ini di situs saya! Aku ... aku ... aku patah hati!
Zizouz212
@ Zizouz212 0123Outputnya tidak sesuai dengan jumlah huruf masing-masing. Dengan "masing-masing" saya merujuk pada urutan yang tercantum dalam OP, jadi 01 huruf, 12 huruf, 23 huruf dan 3bukan ASCII. Membingungkan, ya, tapi itu adalah pilihan output yang paling golf.
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

Terima kasih @ Sp3000 untuk bermain golf 4 byte!
Terima kasih @ Mwr247 untuk bermain golf 17 byte dengan membiarkan saya menggunakan regex dari jawabannya !
Terima kasih @ jimmy23013 untuk bermain golf 5 byte dengan mengingatkan saya bahwa saya dapat mengubah nilai output!

Outputnya adalah 1, 3, 2, dan 4 masing-masing untuk 1-char, 2-char, 3-char, dan non-ASCII.

Versi dengan semua testcases telah diedit di beberapa tempat untuk membuatnya berfungsi dengan banyak baris.

Cobalah online!
Cobalah online dengan semua testcases!

daavko
sumber
@ Sp3000 Oh ... ya, terima kasih! Tidak memperhatikan itu. Itulah yang terjadi ketika Anda mengetik terlalu cepat dan tidak memeriksanya dengan benar setelah itu, saya kira. Saya bahkan bisa i?(ni|vi) -> [nv]?isekarang.
daavko
1
Saya memiliki beberapa regex yang cukup ringkas dalam jawaban JS saya. Jangan ragu untuk menggunakannya jika mereka akan membantu;)
Mwr247
1
@ Mwr247 Terima kasih, saya pikir saya akan menggunakannya.
daavko
1
Saya pikir Anda dapat menghasilkan 3 untuk 2-char untuk menyingkirkan (?!D).
jimmy23013
@ jimmy23013 Itu masuk akal ... Saya entah bagaimana lupa saya bisa memindahkan nilai output sekitar.
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}

Mengembalikan string panjang yang dimulai dengan 9untuk satu karakter, string panjang yang berbeda dimulai dengan buntuk dua, string ketiga dimulai dengani untuk tiga, dan hanya undefineduntuk non-ascii.

SuperJedi224
sumber
Apakah ada tempat untuk mengujinya? Saya telah mendeteksi serangkaian tindakan pengkhianatan terhadap Open Source ...
Zizouz212
@ Zizouz212 ada biola: jsfiddle.net/fpt60bpg
SuperJedi224
Apakah hanya saya, atau tidak bisakah saya membuatnya bekerja?
Zizouz212
Tampaknya bekerja untuk saya.
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]

Saya menemukan bahwa jika Anda mengambil karakter pertama, ketiga, dan terakhir dari setiap entri yang mungkin ( [0,2,-1]ketika diindeks nol), kami memperoleh string tiga huruf unik untuk setiap entri. Kami kemudian hanya menggunakan pencarian berbasis string untuk menentukan yang mana yang kami miliki.

Mengambil input $args[0] , dan menerapkan fungsi keunikan di atas, menyimpan sebagai $a.

Ini kemudian dikirim melalui daftar pencarian kami melalui .IndexOf($a)dan hasilnya disimpan di $b. Kemudian, kita pergi melalui pseudo-ternary yang diindeks berdasarkan nilai$b untuk menghasilkan nilai yang sesuai.

Output 1, 2, 3, dan4 untuk satu karakter, dua karakter, tiga karakter, non-ASCII, masing-masing.

Edit - ditemukan yang [0,2,-1]membuat string tiga karakter unik untuk setiap entri, menghemat 31 byte

AdmBorkBork
sumber
2
Saya melihat bahwa Anda mendapatkan "kopi" dengan hardcode. Otak saya juga.
dotancohen
Apakah ada tempat di mana saya bisa mengujinya?
Zizouz212
@ Zizouz212 Komputer Windows apa pun. Ada juga ini , tetapi tampaknya tidak berfungsi dan ternyata itu PASH, tidak tepat PowerShell.
Bob
@ Zizouz212 PowerShell pseudo-proprietary, karena hanya Windows. Ada cara gratis untuk menginstal Windows tervirtualisasi (versi evaluasi, edisi pengembang, dll.) Jika Anda pengguna FOSS. PASH adalah perpaduan open-source dari PowerShell dan BASH, tetapi direkayasa ulang alih-alih langsung, dan hanya mengimplementasikan sekitar 40% dari fitur PowerShell v1, sehingga agak terbatas.
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))

Membuat array yang terdiri dari pencocokan regex yang unik untuk masing-masing dari tiga grup terkecil (1 karakter, 3 karakter, dan non-ascii), lalu memetakan tes pada data untuk setiap array. Ketika output dirangkai, ia mengevaluasi 1,0,0untuk non-ascii, 0,1,0untuk 3 karakter, 0,0,1untuk 1 karakter, dan 0,0,0untuk 2 karakter.

Mwr247
sumber