- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
/// Checks if the token is number or not
bool is_number(char* test_val)
{
const char* ROW = "0123456789\0";
for (int i = 0; i < strlen(test_val); i++) {
for (int j = 0; j < strlen(ROW); j++) {
if (test_val[i] == ROW[j]) {
goto next;
}
}
return false;
next:
}
return true;
}
oaoaoammm 02.09.2020 16:31 # 0
bormand 02.09.2020 16:33 # +2
oaoaoammm 02.09.2020 17:29 # 0
Можно было бы по карте Карно попытаться сократить, но вряд ли что-то из этого выйдет
bormand 02.09.2020 17:31 # +1
defecate-plusplus 02.09.2020 16:36 # 0
даже на сишке это может выглядеть лучше
defecate-plusplus 02.09.2020 17:19 # +1
мамкин хакир может while переписать на for
а борманд и 3.1415 могут поделить строку на uint64_t и въебать на ксорах, битмасках и лсд спец олимпиадное решение без сравнений
а программист должен взять std::isdigit(std::locale), потому что в японском цифры бывают вообще не те!
https://ideone.com/3tyvcw
gost 02.09.2020 17:20 # 0
defecate-plusplus 02.09.2020 17:22 # 0
gost 02.09.2020 17:38 # +2
https://wandbox.org/permlink/8pHFVfgWmKDwO05s
Поддержка плюса, шестнадцатеричных чисел и локали планируется в следующих версиях.
bormand 02.09.2020 17:41 # 0
gost 02.09.2020 17:43 # 0
Правда, в этом случае он для задачи подходит так себе (отрицательные числа не обрабатывает, переполнения тоже), а уж когда понадобится проверять плавающих питухов — тупой фор превратится в адовую портянку.
bormand 02.09.2020 17:44 # +1
ec - тоже очень говорящее поле. Почему не error_code?
gost 02.09.2020 22:19 # 0
Из «Буста», быть может? Там, ЕМНИП, «ec» распространено.
bormand 02.09.2020 22:38 # 0
Чего стоят ate (at end) и showmanyc (stream how many characters).
defecate-plusplus 02.09.2020 17:44 # 0
gost 02.09.2020 17:45 # 0
defecate-plusplus 02.09.2020 17:48 # 0
хорошо что я больше не настоящая крестоблядь!
bormand 02.09.2020 17:49 # 0
defecate-plusplus 02.09.2020 17:54 # 0
а также буст.лексикал-каст, который это вполне эксплойтил в дефолт шаблоне
а для больших фоннатов пирформанса был буст спирит, который реально пыщ пыщ здорово разбирал поток на токены
я и говорю - всё больше какой-то хуйни изобретают
самое главное - исходно никто не просил проверять, что значение влезет в какой-то дефолтный числовой тип
bormand 02.09.2020 18:03 # +1
Всё новое - это хорошо забытое старое. Они же тупо старый добрый сишный strtoll в итераторы завернули, ничего нового придумать не сумели. Даже вон сишный код ошибки возвращают.
gost 02.09.2020 17:46 # +1
Теперь можно явно задавать тип/размер проверяемого числа. Даже плавающих питухов поддерживает!
GDMaster 02.09.2020 17:49 # 0
https://wandbox.org/permlink/v38nFlIvEvyM3nNN
j123123 02.09.2020 16:53 # 0
gost 02.09.2020 17:15 # 0
bormand 02.09.2020 17:17 # +2
gost 02.09.2020 17:19 # 0
Это число.
bormand 02.09.2020 17:33 # +1
Desktop 02.09.2020 17:49 # 0
Ты умеешь переводить рандомные символы?
bormand 02.09.2020 17:52 # 0
gost 02.09.2020 17:52 # 0
Desktop 02.09.2020 17:54 # 0
bormand 02.09.2020 17:56 # 0
З.Ы. А ну да, собачка на 0x40.
defecate-plusplus 02.09.2020 17:58 # +1
но '0' and '9' охуенно наглядно, бесплатно и эквивалентно каким-то хакирным кодам символов
MAPTbIwKA 02.09.2020 17:57 # 0
bormand 02.09.2020 18:01 # 0
Обижаешь, у него там кубическая сложность из-за strlen().
MAPTbIwKA 02.09.2020 18:03 # 0
j123123 03.09.2020 04:40 # 0
Desktop 02.09.2020 18:03 # 0
bormand 02.09.2020 18:06 # 0
bormand 02.09.2020 18:09 # +2
bormand 02.09.2020 18:12 # 0
Desktop 02.09.2020 18:13 # 0
А зачем здесь писать что-то в память?
bormand 02.09.2020 18:15 # +2
gost 02.09.2020 18:04 # 0
https://wandbox.org/permlink/OjZAbDNnsZmxeYKz
UPD: Сделал конец более хакирным.
MAPTbIwKA 02.09.2020 18:05 # 0
ну вот, вместо одной строки стало четыре. Вечно вы всё усложняете...
ладно, минус я профукал, признаю
gost 02.09.2020 18:14 # 0
gost 02.09.2020 18:16 # 0
А ещё NULL и "". Но если игнорировать (как ТС-код и делает, кстати), то можно вот так загольфить:
https://wandbox.org/permlink/lahbG8Yhe6WPk87V
MAPTbIwKA 02.09.2020 18:18 # +1
Но знаешь, мой код оптимизирован на перформанса, так что маргинальными случаями можно и пренеберечь. Я в доке напишу, что NULL, минус, пробел, разделитель разрядов и пустая строка в бесплатной версии не поддерживаются
gost 02.09.2020 18:22 # +1
Кстати, вореант с вычитанием выглядит быстрее:
Сравнение в цикле только одно, джамп тоже один.
https://gcc.godbolt.org/z/r7o3nP
guest8 02.09.2020 18:28 # −999
bormand 02.09.2020 18:30 # 0
gost 02.09.2020 18:33 # 0
bormand 02.09.2020 18:36 # 0
bormand 02.09.2020 18:39 # +1
guest8 02.09.2020 18:39 # −999
defecatinho 02.09.2020 18:42 # 0
MAPTbIwKA 02.09.2020 18:43 # +1
bormand 02.09.2020 18:22 # +1
!"#$%&
А, ты же не зря там u написал. Хитро.
Desktop 02.09.2020 18:09 # 0
gost 02.09.2020 20:03 # 0
Desktop 08.09.2020 15:19 # +1
https://www.cs.tufts.edu/~nr/cs257/archive/florian-loitsch/printf.pdf
http://kurtstephens.com/files/p372-steele.pdf
Naf-Naf 08.09.2020 15:24 # +1
Desktop 08.09.2020 15:26 # 0
Кстати
https://www.cs.sjsu.edu/~mak/CS185C/KnuthStructuredProgrammingGoTo.pdf
defecate-plusplus 02.09.2020 18:09 # +2
gost 02.09.2020 20:08 # +1
Ну да, вот именно поэтому я за «from_chars» (хотя с хвостовыми пробелами моя версия соснёт, кажется).
> ну и в зависимости от локали разрешать ещё разделители тысяч, опять же поддерживать японские цифры
А вот именно поэтому я за «Python»:
guest8 11.09.2020 06:05 # −999
guest8 11.09.2020 06:05 # −999
guest8 11.09.2020 06:05 # −999
guest8 11.09.2020 06:05 # −999
guest8 11.09.2020 06:06 # −999