Tantangannya sederhana: Tentukan jenis input, dan hasilkan pengidentifikasi yang memberi tahu jenis inputnya.
- "UI", Unsigned integer:
0
,1
,34
,111111111111111111111111111111111111111111
- "SI", Signed integer:
+0
,+1
,+42
,-1
,-3
,-111111111111111111111111111111111111111111
- "UD", Unsigned desimal:
0.0
,1.23
,1234.1234
- "SD", Signed desimal:
-0.0
,+0.0
,-1.235
- "LE", Surat:
a
-z
danA
-Z
- "SY", Simbol: Poin kode ASCII:
[32-47, 58-64, 91-96, 123-126]
(yaitu semua karakter kecuali angka dan huruf) - "ST", String: Dua atau lebih karakter yang tidak dapat diuraikan sebagai salah satu format angka di atas
Aturan:
- Panjang input akan 1-99 karakter
- Input hanya akan berisi karakter ASCII yang dapat dicetak, titik kode: 32-126.
- Keluaran harus berupa dua huruf pengenal sebagaimana didefinisikan di atas (UI, SI ...)
- Aturan I / O standar berlaku
Contoh:
UI:
0
01
34
12938219383278319086135768712319838871631827319218923
SI:
-0
+01
+1
-123
+123
UD:
0.0
3.1415
2.718281828459045235360287471352662497757
SD:
+0.0
-3.1415
+2.718281828459045235360287471352662497757
LE:
a
k
L
Z
SY:
@
"
+
-
ST:
Hello, World!
f2!"
+23df
1234A
'"!
.012
1.
UI
+-1
5+3
SY
lebih dari satu karakter?111111111111111111111111111111111111111111
tipe integer.uint8
atauint64
, tapi itu jelas bilangan bulat .Jawaban:
Pyth - 47 byte
Dapat memperbanyak golf beberapa byte dengan beberapa trik mengiris.
Test Suite .
sumber
JavaScript (ES6), 99
Uji
sumber
(\+|-)
tapi tidak ada byte yang disimpanKode Mesin Turing, 1544 bytes
Cobalah online!
sumber
Retina,
9897 byteCara yang bagus untuk melatih keterampilan regex saya.
Cobalah online!
sumber
^[a-zA-Z]$
kei`^[a-z]$
untuk menyimpan satu byteLua, 157 byte
Cobalah online!
Golf:
Tidak Disatukan:
sumber
JavaScript (ES6),
125120 byteVersi alternatif, juga 120 byte:
sumber
eval(`/regex/`)
constructor + template stringJava, 192 byte
sumber
return (v.length()==1?"SY":"ST");
dapatreturn v.length()<2?"SY":"ST";
(-3 bytes) Atau bisa ini:String t(String v){for(String x:"UI\\d+;SI[-+]\\d+;UD\\d+\\.\\d+;SD[-+]\\d+\\.\\d+".split(";"))if(v.matches(x.substring(2)))return x.substring(0,2);return v.length()<2?"SY":"ST";}
( 179 bytes ) Dan selain Anda bisa mengubahString t(String v)
untukv->
ketika Anda menggunakan Java 8 lambda.Javascript (ES6), 138 byte
Saya mencoba menggunakan a
replace
untuk menjadi lebih "mewah".Ini menciptakan fungsi anonim yang mengembalikan string jenis.
Setiap tips untuk meningkatkan ini akan sepenuhnya diterima.
sumber
1.
seharusnyaST
, bukanUD
. Ubah Anda\d*
ke\d+
1.0
.1.
sebagai gantinya1
) TETAPI Itu bukan pilihan Anda atau milik saya: ada kasus ujiPython 3.5 -
241240 byte:( Disimpan 1 byte berkat @CatsAreFluffy )
Mungkin agak lama, tetapi melakukan pekerjaan dengan cukup sempurna. Ini adalah cara yang sangat baik untuk meningkatkan keterampilan berekspresi reguler saya. Terima kasih atas tantangannya. :) Saya akan mencoba dan mempersingkat lebih banyak jika saya bisa.
sumber
len(d)>0
==d>[]
Tcl 414 Bytes
implementasi ungolfed, dapat dibaca:
sumber