Задача проста: определить тип ввода и вывести идентификатор, сообщающий, какой это тип.
- "Интерфейс", Целое число без знака:
0
,1
,34
,111111111111111111111111111111111111111111
- "SI", Целое число:
+0
,+1
,+42
,-1
,-3
,-111111111111111111111111111111111111111111
- "UD", без знака десятичного:
0.0
,1.23
,1234.1234
- "SD", десятичные:
-0.0
,+0.0
,-1.235
- "LE", Письмо:
a
-z
иA
-Z
- «SY», символ: ASCII кодовые точки:
[32-47, 58-64, 91-96, 123-126]
(т.е. все символы, кроме цифр и букв) - «ST», строка: два или более символа, которые не могут быть проанализированы ни в одном из вышеуказанных числовых форматов
Правила:
- Ввод будет 1-99 символов
- Ввод будет содержать только печатные символы ASCII, кодовые точки: 32-126.
- На выходе должны быть две буквы идентификатора, как определено выше (UI, SI ...)
- Применяются стандартные правила ввода / вывода
Примеры:
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
быть более одного персонажа?111111111111111111111111111111111111111111
это целочисленным типом.uint8
илиint64
, но это определенно целое число .Ответы:
Pyth - 47 байт
Вы можете сыграть в гольф на несколько байтов с некоторыми хитростями.
Тестовый пакет .
источник
JavaScript (ES6), 99
Тестовое задание
источник
(\+|-)
но байты не сохраненыКод машины Тьюринга, 1544 байта
Попробуйте онлайн!
источник
Retina,
9897 байтХороший способ практиковать мои навыки регулярных выражений.
Попробуйте онлайн!
источник
^[a-zA-Z]$
чтобыi`^[a-z]$
сохранить один байтЛуа, 157 байт
Попробуйте онлайн!
Golfed:
Ungolfed:
источник
JavaScript (ES6),
125120 байтАльтернативная версия, также 120 байт:
источник
eval(`/regex/`)
конструктора регулярных выражений + шаблонные строкиJava, 192 байта
источник
return (v.length()==1?"SY":"ST");
может бытьreturn v.length()<2?"SY":"ST";
(-3 байта) или может быть таким: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 байт ). Кроме того, вы можете перейтиString t(String v)
кv->
использованию лямбды Java 8.Javascript (ES6), 138 байт
Я пытался использовать
replace
чтобы быть более «модным».Это создает анонимную функцию, которая возвращает строку типа.
Любые советы по улучшению этого будут полностью приветствоваться.
источник
1.
должно бытьST
, нетUD
. Измените\d*
на\d+
1.0
.1.
вместо1
), НО это не мой выбор или мой: есть тестыPython 3,5 -
241240 байт:( Сохранено 1 байт благодаря @CatsAreFluffy )
Это может быть немного долго, но делает работу в значительной степени отлично. Это был действительно хороший способ улучшить мои навыки регулярного выражения. Спасибо за вызов. :) Я постараюсь сократить его больше, если смогу.
источник
len(d)>0
==d>[]
Tcl 414 байта
Нежелательная реализация, читаемая:
источник