Попробую порассуждать.

> -- Цитата:
> 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 выделена в отдельный артефакт, границы которого легко распознаются даже самым затуманенным мозгом. Никаких хитровышлепанных операций над этим артефактом не сделать, ибо назвался груздём - полезай в кузов.
Символьный массив тоже выделен в отдельный артефакт - операции над ним не выходят за рамки сущности "массив".
Ну, конечно, тождество описывается издревле понятным даже индусам знаком "=", а не чОртовым ероглифом "==".

Это я к чему. Индусы ж наивные, как детиУ них что Кришна, что Вишну - всё воедино. А тут и язык, как раз, позволяет одну сущность увидеть так, как будто это совсем другое. Майя, понимаете ли, иллюзия. Им это нормально. Они так мыслят.

Дайте индусу чёткие сущности, и он сразу отбросит пелену майи.