Попробую порассуждать.
Цитата:
uint i;
…
if (i.ToString().Length == 1)
{
...
}
Проверка i < 10. Алгоритм достаточно прост: выполняется преобразование i в строку, после чего вычисляется ее длина. Если число больше 9, то его десятичная запись содержит больше одного символа. Отрицательные числа переменная типа uint содержать не может. Проверку проходят лишь числа от 0 до 9.
Сразу бросается в глаза - с переменной типа uint обращаются так, будто это объект - через точку вызывают метод. Я, конечно, дико извиняюсь, но мне это кажется оксюмороном - какой, нафик, метод (!) у базового типа uint.
Ладно. Допустим, прорвался к нам индус, который владеет только операцией проверки на тождество. Ему придётся освоить обращение к модулю Strings, дабы преобразовать в строчку. Импортировать этот модуль. Завести ещё одну переменную, строковую - для хранения результата. Ознакомиться с функцией LEN(). Ознакомиться с функцией Strings.IntToString (и после этого вы будете утверждать, что он не владеет "<"? Хе-хе.). Но даже если он таки оформит такое, то у него получится примерно так:
Цитата:
PROCEDURE Hindi;
VAR i: INTEGER; s: ARRAY 10 OF CHAR;
BEGIN
Strings.IntToString(i, s);
IF LEN(s) = 1 THEN END;
END Hindi;
Смотрите.
Переменная i выделена в отдельный артефакт, границы которого легко распознаются даже самым затуманенным мозгом. Никаких хитровышлепанных операций над этим артефактом не сделать, ибо назвался груздём - полезай в кузов.
Символьный массив тоже выделен в отдельный артефакт - операции над ним не выходят за рамки сущности "массив".
Ну, конечно, тождество описывается издревле понятным даже индусам знаком "=", а не чОртовым ероглифом "==".
Это я к чему. Индусы ж наивные, как дети
У них что Кришна, что Вишну - всё воедино. А тут и язык, как раз, позволяет одну сущность увидеть так, как будто это совсем другое. Майя, понимаете ли, иллюзия. Им это нормально. Они так мыслят.
Дайте индусу чёткие сущности, и он сразу отбросит пелену майи.