Le défi est simple: déterminer le type d'une entrée et produire un identifiant indiquant de quel type il s'agit.
- "UI", Entier non signé:
0
,1
,34
,111111111111111111111111111111111111111111
- "SI", Signé entier:
+0
,+1
,+42
,-1
,-3
,-111111111111111111111111111111111111111111
- "UD", décimal non signé:
0.0
,1.23
,1234.1234
- "SD", décimal signé:
-0.0
,+0.0
,-1.235
- "LE", Lettre:
a
-z
etA
-Z
- "SY", symbole: points de code ASCII:
[32-47, 58-64, 91-96, 123-126]
(c'est-à-dire tous les caractères sauf les chiffres et les lettres) - "ST", chaîne: deux caractères ou plus qui ne peuvent pas être analysés comme l'un des formats numériques ci-dessus
Règles:
- L'entrée comportera de 1 à 99 caractères
- L'entrée ne contiendra que des caractères ASCII imprimables, points de code: 32-126.
- La sortie doit être les deux lettres identifiantes telles que définies ci-dessus (UI, SI ...)
- Les règles d'E / S standard s'appliquent
Exemples:
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
être plus d'un personnage?111111111111111111111111111111111111111111
pas être de type entier.uint8
ouint64
, mais c'est certainement un entier .Réponses:
Pyth - 47 octets
Peut prolonger le golf de quelques octets avec quelques astuces de découpage.
Suite de tests .
la source
JavaScript (ES6), 99
Tester
la source
(\+|-)
mais aucun octet n'a été enregistréCode de la machine de Turing, 1544 octets
Essayez-le en ligne!
la source
Rétine,
9897 octetsUne belle façon de pratiquer mes compétences d'expression rationnelle en effet.
Essayez-le en ligne!
la source
^[a-zA-Z]$
pouri`^[a-z]$
enregistrer un octetLua, 157 octets
Essayez-le en ligne!
Golfé:
Non golfé:
la source
JavaScript (ES6),
125120 bytesVersion alternative, également 120 octets:
la source
eval(`/regex/`)
constructeur de regex + des chaînes de modèleJava, 192 octets
la source
return (v.length()==1?"SY":"ST");
peut êtrereturn v.length()<2?"SY":"ST";
(-3 octets) Ou il peut être ceci: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 octets ) Et en plus vous pouvez changerString t(String v)
àv->
lorsque vous utilisez un lambda Java 8.Javascript (ES6), 138 octets
J'ai essayé d'utiliser un
replace
pour être plus "chic".Cela crée une fonction anonyme qui renvoie la chaîne du type.
Tous les conseils pour améliorer cela seront les bienvenus.
la source
1.
devrait êtreST
, nonUD
. Changez\d*
pour\d+
1.0
.1.
place de1
) MAIS Ce n'est pas votre choix ou le mien: il y a les cas de testPython 3.5 -
241240octets:( Enregistré 1 octet grâce à @CatsAreFluffy )
Cela peut être un peu long, mais fait parfaitement le travail. C'était un très bon moyen d'améliorer mes compétences d'expression régulière. Merci pour le défi. :) Je vais essayer de raccourcir davantage si je peux.
la source
len(d)>0
==d>[]
Tcl 414 octets
implémentation non gérée, lisible:
la source