Описание :
Получив строку в качестве входных данных, проверьте, является ли она действительным порядковым номером на английском языке или нет. Если это верно, верните истинное значение, в противном случае верните ложное значение. (Предложено @Arnauld. Спасибо. Также @JoKing)
Для пользователей, которые хотят знать о порядковых номерах, перейдите сюда:
https://www.mathsisfun.com/numbers/cardinal-ordinal-chart.html (Предложение: qwr)
Возможные входы:
21st ---> true
12nd ---> false
1nd ---> false
....
Это соревнование по коду для гольфа, поэтому победителем будет самый короткий код на каждом языке.
Примеры :
console.log('12th' , true) // This evaluates to true
console.log('1st' , true) // also evaluates to true
console.log('21nd' , false) // returns false
console.log('11st' , false) // returns false
console.log('111199231923819238198231923213123909808th' , true) // true
Поскольку многие люди задавали вопрос относительно того, будут ли входные данные только допустимыми строками или нет:
Все входные данные всегда будут действительными. то есть они будут в форме строки и состоят из цифры (или числа цифр) вместе с одним из четырех суффиксов:
st
, nd
, rd
,th
источник
1st
, отрицательные порядковые не существует - english.stackexchange.com/questions/309713/...Ответы:
Утилиты Bash + GNU , 54
Сопоставление с регулярным выражением кажется простым способом. Я уверен, что это выражение может быть сокращено больше:
Ввод из STDIN. Выведите в виде кода возврата оболочки - 0 верно, а 1 неверно.
Попробуйте онлайн!
источник
1st
и1th
.egrep
способен к тестированию сложения и простоты (в унарном виде), поэтому я думаю, что вы можете сделать это ответом egrep.egrep
бы они выполнялись отдельно для каждого ввода, чтобы получить соответствующий код выхода для каждого: попробуйте онлайн! ,это в предположении, что вход является допустимым порядковым шаблоном. если это не так, необходимо внести изменения
JavaScript (Node.js) ,
979278 байтПопробуйте онлайн!
объяснение
_____________________________________________________________________
порт @Herman Lauenstein
JavaScript (Node.js) , 48 байт
Попробуйте онлайн!
источник
***.
1sta
пройдите тест reg; если предполагается,/1.th|(^|[^1])(1s|2n|3r|[^1-3]t)/
работаPython ,
5653 байта-3 благодаря (используйте включение уникальных букв вместо предпоследнего равенства символов)
Безымянная функция.
Попробуйте онлайн!
Как?
Так как все входные данные (здесь
v
) гарантированно иметь форму ,\d*[st|nd|rd|th]
мы можем просто проверить , существует ли персонаж ,v
который мы ожидаем , чтобы быть там , если бы это было правильно (s
,n
,r
, илиh
, соответственно) - то есть<getExpectedLetter>in v
.Последняя цифра обычно определяет это:
... за исключением случаев, когда предпоследняя цифра является a
1
, когда все должно заканчиватьсяth
и, следовательно, наш ожидаемый символ должен бытьh
; чтобы оценить это, мы можем взять фрагмент (чтобы избежать ошибки индекса, возникающей для входных данных без -4- го символа)v[-4:-3]
. Поскольку0
отображениеh
уже выполнено, мы можем достичь желаемого эффекта, используя умножение до индексации в'hsnrhhhhhh'
.источник
Java 8,
5451 байтОбъяснение:
Попробуйте онлайн.
Java String # соответствует неявно добавляет
^...$
.Regex объяснение:
источник
Pyth,
4960 байтов SBCSТестирование
SE съел некоторые непечатные в коде (и в объяснении ниже), но они присутствуют в ссылке.
Объяснение: Перевод Python 3:источник
Python 2,
92827468 байт-8 благодаря Часу Брауну
-6 благодаря Кевину Круйссену
Строит большую строку
th
с,st
с,nd
с, иrd
S для окончаний00
в99
. Затем проверяет, соответствует ли оно.источник
Retina ,
3531 байт-4 байта благодаря @Asone Tuhid
Спасибо @Leo за поиск ошибки
Выходы
1
для истинного и0
ложного. Это предполагает , что вход находится в порядковом формате с действительным суффиксом (концы сst
,nd
,rd
илиth
).Попробуйте онлайн!
источник
Perl 5
-n
, 57 байтПопробуйте онлайн!
источник
Haskell , 100 байт
Попробуйте онлайн!
источник
Желе ,
2522 байта-3 байта благодаря наблюдению, сделанному в комментарии к моей записи Python.
Монадическая ссылка.
Попробуйте онлайн! Или посмотрите набор тестов .
Как?
источник
Python 2 ,
9482777370 байтПопробуйте онлайн!
источник
05AB1E , 24 байта
Попробуйте онлайн! или как тестовый набор
объяснение
источник
Рубин ,
4239 байтLambda:
Попробуйте онлайн!
Пользовательский ввод:
Попробуйте онлайн!
Спички:
1(anything)(anything)h
-12th
(not 1)1s
- (1st
)(not 1)2n
- (2nd
)(not 1)3r
- (3rd
)Поскольку
[^1]
(not 1
) не соответствует началу строки, ввод дублируется, чтобы убедиться, что перед последним есть символ.Рубин
-n
, 35 байтПопробуйте онлайн!
Та же идея, что и выше, но вместо дублирования строки это также соответствует началу строки (
^
).источник
Excel, 63 байта
(MOD(A1-11,100)>2)
возвращается,FALSE
когдаA1
заканчивается11
-13
2*RIGHT(A1)*(MOD(A1-11,100)>2)+1
возвращается ,1
если это в11
-13
и3
,5
,7
и т.д.. в противном случаеMIN(9,~)
меняет все возвращения выше9
INTO ,9
чтобы вытащитьth
из строкиMID("thstndrdth",MIN(~),2)
извлекает первоеth
для входных данных, оканчивающихся на11
-13
,st
для1
,nd
для2
,rd
для3
, и последнийth
для всего, что выше.=A1&MID(~)
добавляет оригинальный номер к порядковому номеру.Публикация как вики, так как я не являюсь автором этого. ( Источник )
источник
Wolfram Language (Mathematica) , 122 байта
В отличие от большинства других ответов здесь, на самом деле это будет возвращать false, когда ввод не является «допустимым порядковым шаблоном», поэтому он будет правильно возвращать false при вводе, например «3a23rd», «monkey» или «+§ +!». Поэтому я думаю, что это работает для всего набора возможных входных строк.
Попробуйте онлайн!
источник
Wolfram Language (Mathematica) ,
6559 байтПопробуйте онлайн!
Конечно, Mathematica имеет встроенный (хотя и недокументированный) способ преобразования в порядковый номер. Источник .
(для 65-байтовой версии: в соответствии с этим кажется, что v9 и более ранние версии не нуждаются в вызове,
Speak
поэтому возможно сохранить еще несколько байтов)Также проверьте ответ KellyLowder для не встроенной версии.
источник
PHP, 60 байт
скучно: regexp еще раз самое короткое решение
пустой вывод для фальши,
1
для правды.Запустите как трубу с
-nF
или попробуйте онлайн . (TiO обернут как функция для удобства)источник
машинный код x86, 65 байт
Монтаж:
Попробуйте онлайн!
источник
Perl-совместимое регулярное выражение, 29 байт
Мы принимаем
th
после любого "подросткового" номера или после любой цифры, кроме 1..3. Для 1..3 мы используем отрицательное ' назад , чтобы принятьst
,nd
илиrd
только тогда , когда не предшествует1
.Тестовая программа
Результаты
источник