25.05.2009, 00:02
|
|
|
|
Регистрация: 27.12.2008
Сообщений: 4,201
|
|
не знаю, но в любом случае я не вижу как может теория автоматов помочь мне в решении этой задачи
например, в педивикии написано, что "практически, теория автоматов применяется при разработке лексеров и парсеров для языков программирования, а также при построении компиляторов и разработке самих языков программирования"
|
|
25.05.2009, 00:30
|
|
Матрос
|
|
Регистрация: 04.04.2008
Сообщений: 6,246
|
|
вы бы еще написали регулярку простейшую, и сказали бы что для решения этой задачи не нужно знания регулярок, подразумевая знание сложных регулярок.
вы описали кончный автомат.
в нем есть флаг состояния(предыдущий символ пробел или нет), и он анализирует строку символ за символ, и на основании обоих этих данных строит суждение о количестве слов.
все сходится с теорией конечного автомата.
то, что вы додумались до этого решения, не зная о конечных автоматах, не означает что они тут не были использованы.
|
|
25.05.2009, 01:07
|
|
|
|
Регистрация: 27.12.2008
Сообщений: 4,201
|
|
я не говорил, что я описал не конечный автомат. Я говорил, что не вижу как мне это знание может помочь. Эту задачу сложно решить без знания теории автоматов?
аналогия с регулярными выражениями неудачна, имхо
p.s. вроде на ты до этого говорили
|
|
25.05.2009, 01:35
|
|
Матрос
|
|
Регистрация: 04.04.2008
Сообщений: 6,246
|
|
Сообщение от x-yuri
|
Я говорил, что не вижу как мне это знание может помочь
|
ну, ты можеш составить алгоритм, без знания лишних теорий.
потому что стиль мышления такой. и у меня такой же.
а вот, человек не смог. вот я и направил его учить теорию
тебе знание этой теории не нужно для такой простой задачи
а ему может быть поможет. надеюсь что так.
Сообщение от x-yuri
|
p.s. вроде на ты до этого говорили
|
Проблема, в том, что для меня стиль общения на "Вы" является естественным в интернете.
в особенности на форуме.
по сути безусловный рефлекс я бы даже сказал
для того чтобы общатся на ты, мне надо либо начать общатся лично с человеком, например в аське, либо знать его в реале
так что не обращай внимание на ВЫкание
|
|
25.05.2009, 01:41
|
|
|
|
Регистрация: 27.12.2008
Сообщений: 4,201
|
|
Цитата:
|
а ему может быть поможет. надеюсь что так.
|
ну если поможет - хорошо
|
|
10.08.2009, 19:17
|
Интересующийся
|
|
Регистрация: 05.05.2009
Сообщений: 19
|
|
Конечно, несколько поздновато, но всё же..
Нафига тут конечные автоматы?
/*
* Функция подсчета количества символов и слов в тексте
* obj - id текстового поля, в которое вводится текст
* obj_word - id поля, куда выводится количество слов
* obj_char - id поля, куда выводится количество символов
*/
function count(obj, obj_word, obj_char) {
var text = document.getElementById(obj).value;
var char_cnt = text.length;
while (text.indexOf(' ') != -1)
text = text.replace(' ', ' ');
if (char_cnt > 0) {
var arWord = text.split(' ');
var word_cnt = arWord.length;
}
else
var word_cnt = 0;
if(text.charAt(text.length - 1) == ' ')
word_cnt--;
document.getElementById(obj_word).value = word_cnt;
document.getElementById(obj_char).value = char_cnt;
}
|
|
11.08.2009, 01:27
|
|
|
|
Регистрация: 27.12.2008
Сообщений: 4,201
|
|
ну я бы тогда начал с (хотя условие подразумевает проход по строке)
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html lang="en">
<head>
<title>title</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<script>
function count( s, word, char ) {
var text = document.getElementById(s).value;
document.getElementById(char).value = text.length;
document.getElementById(word).value = text.replace(/^\s+/, '')
.replace(/\s+$/, '')
.split(/\s+/).length;
}
</script>
</head>
<body>
<input id="s" type="text">
<input id="word" type="text">
<input id="char" type="text">
<input type="button" onclick="count('s', 'word', 'char');">
</body>
</html>
|
|
11.08.2009, 02:11
|
Интересующийся
|
|
Регистрация: 05.05.2009
Сообщений: 19
|
|
Понятно, что с регулярками проще, но по заданию надо использовать indexOf() и charAt().
И, кстати, нигде в условии задачи я не увидел обязательного прохода по строке.
З.Ы. А вот про пробелы в начале строки я и не подумал..
Последний раз редактировалось Photon, 11.08.2009 в 02:14.
|
|
11.08.2009, 04:08
|
|
|
|
Регистрация: 27.12.2008
Сообщений: 4,201
|
|
Сообщение от Photon
|
И, кстати, нигде в условии задачи я не увидел обязательного прохода по строке.
|
я думаю, надо было ограничиться указанными методами/свойствами:
function count( s, word, char ) {
var text = document.getElementById(s).value;
document.getElementById(char).value = text.length;
var i = 0, wordCnt = 0;
while( i >= 0 ) {
while( text.charAt(i) == ' ' )
i++;
if( i < text.length )
wordCnt++;
i = text.indexOf(' ', i);
}
document.getElementById(word).value = wordCnt;
}
|
|
11.08.2009, 04:21
|
|
|
|
Регистрация: 27.12.2008
Сообщений: 4,201
|
|
решение с конечными автоматами (это же оно?). Получилось неожиданно (для меня) симпатично. Gvozd, я их недооценивал Хоть и с регэкспами читабельнее
function count( s, word, char ) {
var text = document.getElementById(s).value;
document.getElementById(char).value = text.length;
var prv = ' ', wordCnt = 0;
for( var i=0; i<text.length; i++ ) {
if( text.charAt(i) != ' ' && prv == ' ' )
wordCnt++;
prv = text.charAt(i);
}
document.getElementById(word).value = wordCnt;
}
UPD: похоже это все-таки не конечные автоматы
Последний раз редактировалось x-yuri, 14.08.2009 в 06:42.
|
|
|
|