Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Программирование Новый топик    Ответить
Топик располагается на нескольких страницах: Ctrl  назад   1 [2]      все
 Re: Сколько строк в .NET  [new]
mayton
Member

Откуда: loopback
Сообщений: 41902
Я думаю что максимальный размер строки как был так и остался равен 2 гигабайтам.
Но автор ищет логический смысл. Тоесть смысл в символах класса кодовая точка.
А этот класс мы не можем точно посчитать. Только оценить. Типа верхняя граница.
Если 100% символов строки будут из кодовых точек. И наоборот.

Или некая средняя оценка где мы просто берем пропорцию. Если я правильно его понял.
15 авг 19, 16:23    [21950286]     Ответить | Цитировать Сообщить модератору
 Re: Сколько строк в .NET  [new]
Leonid Kudryavtsev
Member

Откуда:
Сообщений: 7834
исходный вопрос автора "строка в .NET"

Подозреваю, что ".NET", как и 99 % остальных языков программирования, никак корректность строк не проверяют. Некоректная Unicode строка это тоже вполне себе "строка в .NET"

Т.ч. все подробности про Unicode - в топку.
15 авг 19, 16:45    [21950308]     Ответить | Цитировать Сообщить модератору
 Re: Сколько строк в .NET  [new]
Dima T
Member

Откуда:
Сообщений: 13936
Dima T
Получается если все символы 2 байта, то 634881 073 741 823 комбинаций
Если один 4-байтный, то 634881 073 741 821 * 1 112 0641
два 4-байтных - 634881 073 741 819 * 1 112 0642
и т.д. до 634881 * 1 112 064536 870 911

Т.е. каждое последующее произведение получается делением на 634882 и умножением на 1 073 741 823. Или по другому это геометрическая прогрессия. Дальше посчитать по формуле суммы N элементов геометрической прогрессии.

Напутал немного, точнее не учел что 4-хбайтовые разряды могут быть в любом месте, т.е. каждое из слагаемых это только сколько значений могут принять все разряды, надо каждый умножить на количество комбинаций как могут быть расположены 2х и 4хбайтовые символы.

Например для двух 4-байтных - 634881 073 741 819 * 1 112 0642 * (1 073 741 819 + 2)! / (1 073 741 819! * 2!)

Геометрическая прогрессия отменяется, но т.к. тут факториалы добавились, то есть такое подозрение что самый большой элемент будет в середине последовательности, когда 2х и 4байтныйх поровну, и будет центр на много порядков выше краев, т.е. достаточно посчитать 10-100 средних элементов чтобы получить итого с высокой точностью.

PS Боюсь для записи итого в виде 10^X потребуется очень много циферок для записи X.
15 авг 19, 17:27    [21950371]     Ответить | Цитировать Сообщить модератору
 Re: Сколько строк в .NET  [new]
Dima T
Member

Откуда:
Сообщений: 13936
mayton
Я думаю что максимальный размер строки как был так и остался равен 2 гигабайтам.
Но автор ищет логический смысл. Тоесть смысл в символах класса кодовая точка.
А этот класс мы не можем точно посчитать. Только оценить. Типа верхняя граница.
Если 100% символов строки будут из кодовых точек. И наоборот.

Или некая средняя оценка где мы просто берем пропорцию. Если я правильно его понял.

Я так понял что надо вычислить сколько может быть уникальных строк в кодировке UTF-16 размером до 1 073 741 823 * 2 байт.
15 авг 19, 17:30    [21950376]     Ответить | Цитировать Сообщить модератору
 Re: Сколько строк в .NET  [new]
ЕвгенийВ
Member

Откуда: Москва
Сообщений: 4794
Dima T
mayton
Я думаю что максимальный размер строки как был так и остался равен 2 гигабайтам.
Но автор ищет логический смысл. Тоесть смысл в символах класса кодовая точка.
А этот класс мы не можем точно посчитать. Только оценить. Типа верхняя граница.
Если 100% символов строки будут из кодовых точек. И наоборот.

Или некая средняя оценка где мы просто берем пропорцию. Если я правильно его понял.

Я так понял что надо вычислить сколько может быть уникальных строк в кодировке UTF-16 размером до 1 073 741 823 * 2 байт.

В общем и целом, но важней как считать, методика.
Для 10 байт = 5 char
‭1 031 490 117 213 424 000 759 808‬ +
‭ 268 333 472 997 988 892 672‬ * 2 +
‭ 69 805 794 224 242 688‬ * 2 +

А вообщем?
15 авг 19, 17:46    [21950392]     Ответить | Цитировать Сообщить модератору
 Re: Сколько строк в .NET  [new]
mayton
Member

Откуда: loopback
Сообщений: 41902
Укладка рюкзака.

Чьорт. Это задача уже поздаколебала.
15 авг 19, 17:52    [21950402]     Ответить | Цитировать Сообщить модератору
 Re: Сколько строк в .NET  [new]
Leonid Kudryavtsev
Member

Откуда:
Сообщений: 7834
ЕвгенийВ
...А вообщем?

Где-то в 4-5 классе школы была такая задача на мат. кружке

но давно это было, т.ч. ответ я уже не помню, искать в википедии тоже лениво
15 авг 19, 18:27    [21950429]     Ответить | Цитировать Сообщить модератору
 Re: Сколько строк в .NET  [new]
Leonid Kudryavtsev
Member

Откуда:
Сообщений: 7834
https://ru.wikipedia.org/wiki/Комбинаторика

если я правильно понимаю, это будет
https://ru.wikipedia.org/wiki/Размещение
15 авг 19, 18:29    [21950430]     Ответить | Цитировать Сообщить модератору
 Re: Сколько строк в .NET  [new]
Leonid Kudryavtsev
Member

Откуда:
Сообщений: 7834
1 + n + n**2 + n**3 +... n**m

дофига
15 авг 19, 18:33    [21950432]     Ответить | Цитировать Сообщить модератору
 Re: Сколько строк в .NET  [new]
Dima T
Member

Откуда:
Сообщений: 13936
mayton
Укладка рюкзака.

Чьорт. Это задача уже поздаколебала.

Не, тут рюкзак бесконечен, т.е. тут задача определить подходящий размер рюкзака.
15 авг 19, 19:21    [21950454]     Ответить | Цитировать Сообщить модератору
 Re: Сколько строк в .NET  [new]
Dima T
Member

Откуда:
Сообщений: 13936
Leonid Kudryavtsev
1 + n + n**2 + n**3 +... n**m

дофига

Я так и сказал в начале 21948910, но оказалось намного порядков больше 21950371
15 авг 19, 19:23    [21950455]     Ответить | Цитировать Сообщить модератору
 Re: Сколько строк в .NET  [new]
ЕвгенийВ
Member

Откуда: Москва
Сообщений: 4794
Leonid Kudryavtsev
1 + n + n**2 + n**3 +... n**m

дофига

Не забудь прибавить String.Empty!
15 авг 19, 20:21    [21950486]     Ответить | Цитировать Сообщить модератору
 Re: Сколько строк в .NET  [new]
hVostt
Member

Откуда:
Сообщений: 15852
Leonid Kudryavtsev
Подозреваю, что ".NET", как и 99 % остальных языков программирования, никак корректность строк не проверяют.


В .NET у строк есть метод Normalize, которые в том числе проверяет корректность строки.

Если 99% любых остальных языков будут проверять корректность всех строк всегда, производительность ПО встанет раком.

И что там за таинственный 1%, можно поинтересоваться? :)
29 авг 19, 21:31    [21960151]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 [2]      все
Все форумы / Программирование Ответить