Diberikan string input, tulis program yang menampilkan jumlah total garis dan kurva yang dimilikinya.
Tantangan
- Ambil input dari
STDIN
, atau metode input lainnya. - Output ke
STDOUT
, atau metode output lainnya, jumlah total garis dan kurva yang terkandung dalam string, dalam urutan itu , berdasarkan tabel di bawah ini dalam snipet kode. - Setiap karakter non-alfanumerik harus diabaikan.
- Celah standar dilarang.
- Ini kode-golf , jadi kode terpendek menang.
Klarifikasi
- Garis dan kurva ditentukan oleh font yang digunakan pada Stackexchange for
code blocks
. - Lingkaran (seperti
O, o, 0
) dan titik (i, j
), masing-masing dianggap 1 kurva. - Input dapat berupa string, daftar karakter, aliran karakter, bytecodes, dll.
- Output dapat array bilangan bulat, tupel bilangan bulat, dipisahkan koma string, dll Dua angka harus terpisah, sehingga
104
tidak sah, tapi10,4
,10 4
,10\n4
,[10,4]
,(10, 4)
, dan sebagainya adalah. - Menuju dan membuntuti spasi putih bisa diterima.
Input dan Output Sampel
# Format: str -> line, curve
hi -> 4, 2
HELLO WORLD -> 20, 4
l33+ 5pEak -> 13, 8
+=-_!...?~`g@#$%^ -> 1, 2
9001 -> 5, 3
O o O o O o -> 0, 6
Tabel Karakter
Char | Lines | Curves
0 | 1 | 1
1 | 3 | 0
2 | 1 | 1
3 | 0 | 2
4 | 3 | 0
5 | 2 | 1
6 | 0 | 1
7 | 2 | 0
8 | 0 | 2
9 | 0 | 1
A | 3 | 0
B | 1 | 2
C | 0 | 1
D | 1 | 1
E | 4 | 0
F | 3 | 0
G | 2 | 1
H | 3 | 0
I | 3 | 0
J | 1 | 1
K | 3 | 0
L | 2 | 0
M | 4 | 0
N | 3 | 0
O | 0 | 1
P | 1 | 1
Q | 0 | 2
R | 2 | 1
S | 0 | 1
T | 2 | 0
U | 0 | 1
V | 2 | 0
W | 4 | 0
X | 4 | 0
Y | 3 | 0
Z | 3 | 0
a | 0 | 2
b | 1 | 1
c | 0 | 1
d | 1 | 1
e | 1 | 1
f | 1 | 1
g | 1 | 2
h | 1 | 1
i | 3 | 1
j | 1 | 2
k | 3 | 0
l | 3 | 0
m | 3 | 2
n | 2 | 1
o | 0 | 1
p | 1 | 1
q | 1 | 1
r | 1 | 1
s | 0 | 1
t | 1 | 1
u | 1 | 1
v | 2 | 0
w | 4 | 0
x | 4 | 0
y | 1 | 1
z | 3 | 0
s
2 kurva atau 1? Apakah batang dij
garis dan kurva? Akan lebih baik jika Anda bisa membuat daftar nilai yang diperlukan untuk semua huruf.o
seharusnya 0 baris, 1 kurvaJawaban:
Haskell,
214199188175 byteCobalah online!
Jumlah garis dan kurva adalah digit nomor basis-5 dan disimpan sebagai nomor basis-16. Fungsi
g
diterjemahkan kembali ke basis-5.Edit: -13 bytes berkat @cole.
sumber
05AB1E ,
786965 byte-4 byte terima kasih kepada Kevin Cruijssen, Pergi dan periksa jawaban 05AB1E yang lebih baik
Cobalah online!
Output sebagai [Kurva, Garis]
Saya benar-benar buruk di 05AB1E yang baru saya ketahui. Pasti bisa menghemat lebih banyak byte jika saya bisa mendapatkan 05AB1E untuk dilakukan
è
di daftar daftar sayaPenjelasan
sumber
line curve
tidakcurve line
.Output to STDOUT, or any other output method, the total number of lines and curves contained in the string, in that order
. Perhatikanin that order
, jadiline curve
.[Line, Curve]
sebagai output-order, meskipun itu kebetulan dan tidak disengaja).Jelly , 45 byte
Tautan monadik yang menerima daftar karakter yang menghasilkan daftar (dua) bilangan bulat.
Cobalah online! Atau lihat test-suite .
Bagaimana?
sumber
Scala , 235 byte
Cobalah online!
Tidak terlalu kecil, mungkin bisa bermain golf lebih lanjut.
Catatan: 52-string string literal seperti kamus yang memetakan karakter ke karakter lain yang menunjukkan jumlah garis dan kurva sesuai dengan tabel berikut:
sumber
Python 2 ,
159154 byteUntuk setiap karakter
lines*4 + curves
memberikan nilai dari 0 hingga 16. Base-36 digunakan untuk mengkodekan nilai-nilai ini (1 karakter = 1 nilai).-5 byte terima kasih kepada @Chas Brown
Cobalah online!
Python 2 , 141 byte
Ini adalah port dari solusi Python3 saya. Versi ini menampilkan daftar int panjang, jadi sepertinya
[4L, 2L]
bukan[4, 2]
.Cobalah online!
sumber
'/'<x<'{'
bukannyax.isalnum()
.'/'<x<'{'
, tetapi saya mencoba untuk mengungkapkannya untuk menyingkirkanif
juga.Jelly , 51 byte
Cobalah online!
Tautan monadik yang menggunakan string sebagai input dan mengembalikan daftar bilangan bulat sebagai
[lines, curves]
sumber
JavaScript (Node.js) ,
251 219217 byte-34 byte dari @Expired Data : o
Cobalah online!
sumber
Retina 0.8.2 , 160 byte
Cobalah online! Tautan termasuk kasus uji. Penjelasan:
Gandakan string input.
Hitung garis setiap karakter pada baris pertama.
Hitung kurva masing-masing karakter di baris kedua.
Jumlahkan angka secara terpisah pada setiap baris.
sumber
R ,
164153 byteCobalah online!
Aku punya ide yang sama seperti jawaban Nimi ini menggunakan basis 5 encoding tapi mengkodekan sebagai karakter ASCII bukan basis 16. Penggunaan
nomatch = 0
dimatch
untuk menghilangkan karakter non-alfanumerik.Pengembalian
curves lines
.sumber
Arang , 60 byte
Cobalah online! Tautan adalah untuk mengucapkan versi kode. Penjelasan:
Ini adalah array dari dua string
13103202000101111131333201110112441331014323313243010202024433
dan10120110212111112112002111111110001002110010010000112110100000
. Senar kemudian dipetakan.Elemen-elemen input difilter apakah elemen-elemen tersebut terdapat dalam (62) karakter alfabet konversi basis default.
Elemen yang tersisa kemudian dikonversi dari basis (62) dan ini kemudian diindeks ke string yang dipetakan.
Angka-angka dijumlahkan dan dilemparkan kembali ke string untuk cetakan implisit.
sumber
Python 3 ,
165159148146 byteUntuk setiap karakter (termasuk non-alfanumerik)
lines*3 + curves
memberikan nilai dari 0 hingga 12, sehingga kita dapat menggunakan nomor base-13 panjang untuk menyandikan data. Untuk membuatnya lebih pendek itu dikonversi ke basis-36.Terima kasih kepada @Chas Brown atas sarannya yang luar biasa.
-2 byte dengan mengonversi lambda ke program.
Cobalah online!
sumber
Python 2 ,
179166165163 byteCobalah online!
Mengembalikan daftar
[curves, lines]
.sumber
Python 2 , 525 byte
Cobalah online!
Pendekatan yang mirip dengan implementasi referensi tetapi agak lebih pendek.
sumber
Perl 5
-MList::Util=sum -p
, 180 byteCobalah online!
sumber
05AB1E , 53 byte
Cobalah secara online atau verifikasi semua kasus uji .
Penjelasan:
Lihat tip tambang 05AB1E ini (bagian Bagaimana cara mengompresi bilangan bulat besar? Dan Cara mengompresi daftar bilangan bulat? ) Untuk memahami mengapa
•xþ¢*>ÌŸÑå#÷AUI'@æýXÁи<¥èå–ΘηžÎà₅åǚĕ
ini101629259357674935528492544214548347273909568347978482331029666966024823518105773925160
dan•xþ¢*>ÌŸÑå#÷AUI'@æýXÁи<¥èå–ΘηžÎà₅åǚĕ5в
sekarang[1,0,2,0,0,2,1,0,1,2,0,3,2,0,1,1,0,3,1,1,0,3,0,3,0,4,0,4,0,2,1,0,0,2,1,0,1,2,2,0,1,1,1,0,0,3,0,4,0,2,0,3,1,1,0,3,0,3,1,2,0,3,0,4,1,1,1,0,2,1,0,3,0,3,1,1,0,4,0,4,0,2,1,1,1,1,1,0,1,1,1,1,1,1,1,0,1,2,2,3,0,3,0,3,2,1,1,3,1,1,2,1,1,1,1,1,1,1,1,0,1,1,2,0]
.sumber
Python 3 , 697 byte
Upaya pertama yang sederhana. Saya memasukkan tabel ke dalam kamus, memutar-mutar string, menambah beberapa counter, dan mengembalikan tuple. Input adalah sebuah string.
Cobalah online!
sumber
C # (Visual C # Interactive Compiler) , 157 byte
Cobalah online!
sumber