утешен
Найдено: 1 запись
humour →
            Фокусы с клавиатурой
        
                
  	Сегодня во второй половине дня, мечтая дожить до выходных и перечитывая bash.org.ru, наткнулся на цитату:
Сразу же заинтересовался, а сколько вообще таких последовательностей клавиш, которые будучи нажаты в английской и русской раскладке будут давать существующие слова?
Разумеется, как программист я не мог себе отказать в удовольствии написать такую программу, которая бы нашла все такие слова. В первую очередь потребовались словари со всеми словоформами. Всё, что душе угодно, нашлось на http://wiki.services.openoffice.org/wiki…
Далее код:
Если кратко, этот код читает содержимое en и ru словарей openoffice и для каждого английского слова пытается найти похожее русское, которое было бы напечатано простой сменой раскладки клавиатуры.
И вот самые интересные результаты:
 
  	 	
  	        
        
        Знаете ли вы, что всякий набравший английское слово entity (сущность) по ошибке в русской раскладке, будет немедленно утешен? :-)Сразу же заинтересовался, а сколько вообще таких последовательностей клавиш, которые будучи нажаты в английской и русской раскладке будут давать существующие слова?
Разумеется, как программист я не мог себе отказать в удовольствии написать такую программу, которая бы нашла все такие слова. В первую очередь потребовались словари со всеми словоформами. Всё, что душе угодно, нашлось на http://wiki.services.openoffice.org/wiki…
Далее код:
import org.apache.commons.io.FileUtils;
import java.io.File;
import java.io.IOException;
import java.util.List;
import java.util.TreeSet;
public class EqualTypedWords {
    final static String RU = "абвгдежзийклмнопрстуфхцчшщъыьэюя";
    final static String EN = "f,dult;pbqrkvyjghcnea[wxio]sm'.z";
    private static final int WORD_SIZE = 3;
    static TreeSet readFile(String fname) throws IOException {
        TreeSet result = new TreeSet();
        List lines = FileUtils.readLines(new File(fname), "KOI8-R");
        for (String s : lines) {
            result.add(s.split("/")[0].toLowerCase());
        }
        return result;
    }
    public static void main(String[] args) throws IOException {
        TreeSet ruset = readFile("data/ru_RU_ie.dic");
        TreeSet enset = readFile("data/en_GB.dic");
        for (String en : enset) {
            StringBuilder sb = new StringBuilder();
            for (int i = 0; i < en.length(); i++) {
                int ind = EN.indexOf(en.charAt(i));
                if (ind != -1) {
                    sb.append(RU.charAt(ind));
                }
            }
            String newWord = sb.toString();
            String c = ruset.ceiling(newWord);
            String f = ruset.floor(newWord);
            if (ruset.contains(newWord) && fit(newWord)) {
                System.out.println("en: " + en + "; ru: " + newWord);
                continue;
            }
            if (!fit(c) || !fit(f) || !fit(newWord)) continue;
            if (newWord.startsWith(f)) {
                System.out.println("en: " + en + "; ru: " + f + "; retyped: " + newWord);
            }
            if (c.startsWith(newWord)) {
                System.out.println("en: " + en + "; ru: " + c + "; retyped: " + newWord);
            }
        }
    }
    private static boolean fit(String c) {
        return (c != null && c.length() > WORD_SIZE);
    }
}
Если кратко, этот код читает содержимое en и ru словарей openoffice и для каждого английского слова пытается найти похожее русское, которое было бы напечатано простой сменой раскладки клавиатуры.
И вот самые интересные результаты:
en: ababa; ru: фифи; retyped: фифиф
en: belt; ru: иудее; retyped: иуде
en: blench; ru: идут; retyped: идутср
en: blend; ru: идут; retyped: идутв
en: celsius; ru: суды; retyped: судышгы
en: derby; ru: вуки; retyped: вукин
en: eire; ru: ушкуев; retyped: ушку
en: entity; ru: утешен
en: entrench; ru: утекут; retyped: утекутср
en: exec; ru: учусь; retyped: учус
en: hdtv; ru: рвем
en: herb; ru: руки
en: herbage; ru: руки; retyped: рукифпу
en: herbal; ru: руки; retyped: рукифд
en: herbert; ru: руки; retyped: рукиуке
en: inert; ru: штуке
en: kbps; ru: лизы
en: kerb; ru: луки
en: lens; ru: дутыш; retyped: дуты
en: next; ru: тучегонители; retyped: туче
en: verb; ru: муки
    
      28.06.2008 00:44+0400
    
        
            
            
            
        