Die Herausforderung ist einfach: Bestimmen Sie den Typ einer Eingabe und geben Sie einen Bezeichner aus, aus dem hervorgeht, um welchen Typ es sich handelt.
- "UI" unsigned integer:
0
,1
,34
,111111111111111111111111111111111111111111
- "SI", Signed integer:
+0
,+1
,+42
,-1
,-3
,-111111111111111111111111111111111111111111
- "UD", Unsigned dezimal:
0.0
,1.23
,1234.1234
- "SD", Signed dezimal:
-0.0
,+0.0
,-1.235
- "LE", Buchstabe:
a
-z
undA
-Z
- "SY", Symbol: ASCII-Codepunkte:
[32-47, 58-64, 91-96, 123-126]
(dh alle Zeichen außer Ziffern und Buchstaben) - "ST", String: Zwei oder mehr Zeichen, die mit keinem der oben genannten Zahlenformate analysiert werden können
Regeln:
- Die Eingabe wird 1-99 Zeichen lang sein
- Die Eingabe enthält nur druckbare ASCII-Zeichen, Codepunkte: 32-126.
- Die Ausgabe sollte aus den beiden oben definierten Kennbuchstaben (UI, SI ...) bestehen.
- Es gelten die Standard-E / A-Regeln
Beispiele:
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
mehr als ein Zeichen sein?111111111111111111111111111111111111111111
, vom Typ Integer zu sein.uint8
oderint64
, aber es ist definitiv eine ganze Zahl .Antworten:
Pyth - 47 Bytes
Kann ein paar Bytes mit ein paar Tricks abschneiden.
Test Suite .
quelle
JavaScript (ES6), 99
Prüfung
quelle
(\+|-)
aber keine Bytes gespeichert werdenTuring Machine Code, 1544 Bytes
Probieren Sie es online!
quelle
Retina,
98 bis97 BytesEine schöne Art, meine Regex-Fähigkeiten zu üben.
Probieren Sie es online!
quelle
^[a-zA-Z]$
,i`^[a-z]$
um ein Byte zu speichernLua, 157 Bytes
Probieren Sie es online!
Golf gespielt:
Ungolfed:
quelle
JavaScript (ES6),
125 -120 ByteAlternative Version, auch 120 Bytes:
quelle
eval(`/regex/`)
Konstruktor + Template-Strings gespielt werdenJava, 192 Bytes
quelle
return (v.length()==1?"SY":"ST");
kann seinreturn v.length()<2?"SY":"ST";
(-3 Bytes) Oder es kann sein: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 ) Und zusätzlich könnten Sie ändernString t(String v)
,v->
wenn Sie ein Java 8 Lambda verwenden.Javascript (ES6), 138 Byte
Ich habe versucht, einen
replace
zu verwenden, um "ausgefallener" zu sein.Dadurch wird eine anonyme Funktion erstellt, die die Zeichenfolge des Typs zurückgibt.
Tipps zur Verbesserung dieses Verhaltens sind jederzeit willkommen.
quelle
1.
sollteST
nicht seinUD
. Ändern Sie Ihre\d*
zu\d+
1.0
.1.
stattdessen1
), ABER es ist nicht deine Wahl oder meine: Es gibt die TestfällePython 3.5 -
241240 Bytes:( 1 Byte dank @CatsAreFluffy gespeichert )
Es kann ein bisschen lang sein, aber macht den Job ziemlich perfekt. Dies war eine wirklich gute Möglichkeit, meine Fähigkeiten im Umgang mit regulären Ausdrücken zu verbessern. Danke für die Herausforderung. :) Ich werde versuchen, es weiter zu verkürzen, wenn ich kann.
quelle
len(d)>0
==d>[]
Tcl 414 Bytes
ungolfed implementierung, lesbar:
quelle