| Задача о клавиатуре, еще одно продолжение |
|
|
Sunday, 02 April 2006 | Д-р Евгений Канель для раздела Ученье – свет Мы делаем еще один шаг на пути к окончательному варианту задачи о «несчастной магинистке». На этот раз мы снова заполняем массив «клавиатура» маленькими английскими буквами случайным образом – но вариант, который сегодня предлагает д-р Евгений Канель, содержит два способа; как всегда – мой и его, выполненный по заметно иному методу. А это – всегда интересно, верно?Позвольте только напомнить суть задачи.
Напиши программу, которая будет заполнять массив, моделирующий «минимальную клавиатуру», то есть такую, которая содержит только маленькие буквы английского алфавита. Но при этом заполнить массив, «пронумерованный нормально» (то есть в порядкe от ‘a’ до’ z’), следует заполнить случайным образом – как будто «соединения» клавиш были перепутаны. Для проверки программа должна принимать строковое значение и распечатывать получившуюся при «попытке набора» соответствующую «белиберду».
import java.util.*;
class klava2{
public static void fill(char[] kbd){
String nabor="qwertyuiopasdfghjklzxcvbnm";
int how=nabor.length();
int n=25;
char j='a';
while (how>0){
int i=(int)(n*Math.random());
n--;
char letter=nabor.charAt(i);
kbd[j]=letter;
// IO.writeln(letter+"="+"kbd["+j+"]="+kbd[j]);
nabor=""+nabor.substring(0,i)+nabor.substring(i+1);
j++;
how=nabor.length();
}
}
public static boolean found(char[] kbd, char letter){
for(int i=0;i if(kbd[i]==letter)return true;
return false;
}
public static void fill_1(char[] kbd){
char first='a';
char last='z';
char letter;
Random ran=new Random();
for(char i=first;i<=last;){
letter=(char)(first+ran.nextInt(last-first+1));
if(!found(kbd,letter)){kbd[i]=letter;i++;}
}
}
public static void view(char[] kbd){
for (char i='a';i<='z';i++){
IO.writeln("kbd["+i+"]="+kbd[i]);
}
}
public static void go(char kbd[], String slovo){
String novoslovo="";
int how=slovo.length();
for (int i=0;i
char letter=slovo.charAt(i);
novoslovo=novoslovo+kbd[letter];
}
IO.writeln(novoslovo+"------");
}
public static void main (String args[]){
char kbd[]=new char[255];
char kbd_1[]=new char[255];
fill(kbd);
view(kbd);
fill_1(kbd_1);
view(kbd_1);
String slovo=IO.readString();
go(kbd,slovo);
go(kbd_1,slovo);
}
}
|