АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

Перемешивание букв. Эффект Кембриджского университета

Читайте также:
  1. II раздел. Расчет эффективности производственно-финансовой деятельности
  2. II. Оценка эффективности инвестиционного менеджмента.
  3. IV.Оценка эффективности деятельности структурного подразделения организации
  4. V1: Понятие и показатели экономической эффективности коммерческих организаций
  5. Адекватность понимания связи свойств нервной системы с эффективностью деятельности
  6. Анализ причин низкого общественного эффекта от достигнутых темпов экономического роста в Украине
  7. АНАЛИЗ УРОВНЯ И ЭФФЕКТИВНОСТИ ПРОИЗВОДСТВА И РЕАЛИЗАЦИИ ПРОДУКЦИИ В ОАО «ГАСТЕЛЛОВСКОЕ»
  8. Анализ эффективности инвестиционного проекта
  9. Анализ эффективности капиталовложений
  10. Анализ эффективности операций банка с использованием платежных карточек.
  11. Анализ эффективности операций банка, связанных с наличным денежным обращением.
  12. Анализ эффективности рекламных расходов

Эффект Кембриджского университета



По рзелульаттам илссеовадний одонго анлигйсокго унвиертисета, не иеемт занчнеия, в кокам пряокде рсапожолены бкувы в солве. Галвоне, чотбы преавя и пслоендяя бквуы блыи на мсете. Осатьлыне бкувы мгоут селдовтаь в плоонм бсепордяке, все-рвано ткест чтаитсея без побрелм. Пичрионй эгото ялвятеся то, что мы чиатем не кдаужю бкуву по отдльенотси, а все солво цликеом.
Тема очень старая и гуляет по интернетам давно, но везде приводится как пример один и тот же текст, мне было интересно попробовать данный эффект на собственных текстах, в результате чего и родилась эта программа.

Пример работы программы:

Можно загружать либо вводить текст вручную, перемешивать и сохранять. Исходный код прилагается, если есть замечания по оптимизации перемешивания буду рад выслушать.

Пока заметил что текст с научными терминами, например с википедии, читается труднее художественного, что впрочем логично, наиболее часто употребляемые слова распознаются сразу без усилий.

Исходного кода совсем немного, функция преобразования текста:

string eng_rus_alphavit = "АаБбВвГгДдЕеЁёЖжЗзИиЙйКкЛлМмНнОоПпРрСсТтУуФфХхЦцЧчШшЩщЪъЫыЬьЭэЮюЯяAaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz"; Random rnd = new Random((int)DateTime.Now.Ticks); /// <summary> /// Перемешивание букв в слове за исключением первого и последнего символа /// </summary> public string RndSym(string word) { if (word.Length > 2) { string ret = ""; //Построим массив случайно перемешанных индексов кроме первого и последнего int[] index = new int[word.Length]; for (int i = 0; i < word.Length; i++) index[i] = -1; index[0] = 0; index[word.Length - 1] = word.Length - 1; int v = rnd.Next(1, word.Length - 1); for (int i = 1; i < word.Length - 1; i++) { while (index[v]!= -1) v = rnd.Next(1, word.Length - 1); index[v] = i; } //Соберем слово используя массив индексов for (int i = 0; i < word.Length; i++) { ret += word[index[i]]; } return ret; } return word; } /// <summary> /// Преобразование текста /// </summary> private string TransformText(string text) { int begin; string nword; char[] array = text.ToCharArray(); for (int i = 0; i < array.Length; i++) { if (eng_rus_alphavit.Contains(array[i].ToString())) { begin = i; while (eng_rus_alphavit.Contains(array[i].ToString()) && (++i < array.Length)); nword = RndSym(text.Substring(begin, i - begin)); //Замена исходного слова на перемешанное for (int j = begin; j < i; j++) { array[j] = nword[j - begin]; } } } string ret = ""; foreach (char c in array) ret += c; return ret; }

 

Релиз(Win x86/x64) и исходники(C#, VS2010) можно скачать здесь.

Практической пользы программа не несет, разве что прокачать навыки чтения и подгрузить мозг.

 


Поиск по сайту:



Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.003 сек.)