|
|
|||||
Регистрация: Apr 2008
Сообщений: 4
|
Хорошее дело или машина Тьюринга
Уважаемые Господа flash-программисты.
Меня зовут Женя Лакштанов, я математик и занимаюсь с младшеклассниками математикой и, в частности, алгоритмикой. Недавно мне удалось найти неплохую реализацию машины Тьюринга: http://www.danilova.ru/phpbb/viewtop...2619&start=180 (в конце страницы, под заголовком "Несколько задач для веселого грузовичка") Там же есть примеры задач, которые мои дети писали "на бумажке". Ясно, что неплохо бы иметь под это дело интерпретатор. Я детально могу описать, как он может выглядеть, но я очень много лет не программировал, и у меня это займет много времени. Хотя, видимо для человека в форме, это дело 1часа. Буду рад, если кто-нибудь возьмется сделать это. Спасибо за внимание. |
|
|||||
.grin! wuz here
|
к сожалению вы попали на форум флэшеров, а не альтруистов. сомневаюсь что у кого-то найдется время и желание.
__________________
Breakcore them all! |
|
|||||
[+1 21.01.08]
Регистрация: Jul 2007
Сообщений: 126
|
Колега
Могу помочь. Пиши в личку. что нужно сделать. За 1 час не обещаю, но до понедельника управлюсь . Хотя раздел для поста конечно ты выбрал не совсем верный. Это скорее для вакансий подходит. |
|
|||||
[+1 21.01.08]
Регистрация: Jul 2007
Сообщений: 126
|
Цитата:
|
|
|||||
.grin! wuz here
|
Цитата:
__________________
Breakcore them all! |
|
|||||
Modus ponens
|
я вот бездельничаю на работе... мог бы и сделать %)
Ток вот не понял, нужно чтобы программа сама прокладывала маршрут исходя из условий, или юзер сам определяет маршрут, а программа просто показывает, что будет сделано при таких условиях? (Второе можно сделать и меньше чем за час, а первое - муторно... конец рабочей недели, думать не хочется %) /** * ... * @author wvxvw * @version 0.1 */ package { public class PathXML { public static const LINE:String = 'line'; public static const STATION:String = 'station'; public static const CARGO:String = 'cargo'; public static const TRUCK:String = 'truck'; public static const BOX:String = 'box'; public static const DIR:String = 'dir'; public static const IN:String = 'in'; public static const OUT:String = 'out'; public static const LOADED:String = 'loaded'; public static const EMPTY:String = 'empty'; public static const LOAD:String = 'load'; public static const UNLOAD:String = 'unload'; public static const STOP:String = 'stop'; public static const LEFT:String = 'left'; public static const RIGHT:String = 'right'; public static const LT:String = '<'; public static const GT:String = '>'; public static const SLASH:String = '/'; private var _xml:XML; public function PathXML(xml:XML = null, i:int = 0) { super(); _xml = new XML(LT + LINE + SLASH + GT); for (var j:int = 0; j < i; j++ ) { addStation(); } } public function addStation():void { var xn:XML = new XML(LT + STATION + SLASH + GT); var xin:XML = new XML(LT + IN + SLASH + GT); var xout:XML = new XML(LT + OUT + SLASH + GT); xn.appendChild(xin); xn.appendChild(xout); _xml.appendChild(xn); } public function setTruck(i:int, b:Boolean):void { var tx:XML = new XML(LT + TRUCK + SLASH + GT); tx.@[CARGO] = b ? LOADED : EMPTY; _xml[STATION][i].appendChild(tx); } public function setBoxes(i:int, b:int):void { var bx:XML = new XML(LT + BOX + SLASH + GT); for (var j:int = 0; j < i; j++ ) { _xml[STATION][b].appendChild(bx); } } public function setStationIN(i:int, b:Boolean):void { _xml[STATION][i][IN].@[DIR] = b ? LOAD : UNLOAD; } public function setStationOUT(i:int, b:String):void { switch(b) { case LEFT: _xml[STATION][i][OUT].@[DIR] = LEFT; break; case RIGHT: _xml[STATION][i][OUT].@[DIR] = RIGHT; break; default: _xml[STATION][i][OUT].@[DIR] = STOP; break; } } public function moveTruck():void { var tx:XML = getXMLItem(TRUCK)[0]; var bx:XML = new XML(LT + BOX + SLASH + GT); var ttx:XML; var tp:int; if (tx.@[CARGO] == LOADED) { if (tx.parent()[IN].@[DIR] == UNLOAD) { tx.@[CARGO] = EMPTY; tx.parent().appendChild(bx); } } else { if (tx.parent()[BOX].length()) { if (tx.parent()[IN].@[DIR] == LOAD) { tx.@[CARGO] = LOADED; delete tx.parent()[BOX][0]; } } else { // all boxes removed from the station } } trace(tx.parent()[OUT].@[DIR]); if (tx.parent()[OUT].@[DIR] == LEFT) { for (var i:int = 0; i < _xml[STATION].length(); i++ ) { if (_xml[STATION][i][TRUCK].length()) { ttx = _xml[STATION][i][TRUCK][0].copy(); tp = i; break; } } delete _xml[STATION][tp][TRUCK][0]; _xml[STATION][tp - 1].appendChild(ttx); } else if(tx.parent()[OUT].@[DIR] == RIGHT) { for (var j:int = 0; j < _xml[STATION].length(); j++ ) { if (_xml[STATION][j][TRUCK].length()) { ttx = _xml[STATION][j][TRUCK][0].copy(); tp = j; break; } } delete _xml[STATION][tp][TRUCK][0]; _xml[STATION][tp + 1].appendChild(ttx); } } public function toString():String { return _xml.toXMLString(); } public function getXMLItem(s:String):XMLList { return _xml.descendants(s); } } } import PathXML; var tf:TextField = new TextField(); tf.border = true; tf.width = 600; tf.height = 400; addChild(tf); var tm:Timer = new Timer(500); var px:PathXML = new PathXML(null, 8); tm.addEventListener(TimerEvent.TIMER,renderPosition) px.setTruck(2,true); px.setBoxes(5,5); for (var i:int = 0; i < px.getXMLItem(PathXML.STATION).length() - 1; i++){ px.setStationIN(i, true); px.setStationOUT(i, PathXML.RIGHT); } px.setStationIN(i, true); px.setStationOUT(i, PathXML.STOP); //trace(px); function renderPosition(tevt:TimerEvent):void { px.moveTruck(); tf.text = px.toString(); } tm.start();
__________________
Hell is the possibility of sanity Последний раз редактировалось wvxvw; 03.04.2008 в 18:23. |
|
|||||
[+1 21.01.08]
Регистрация: Jul 2007
Сообщений: 126
|
Второе. Вообщем стандартный способ обучения програмированию - исполнитель(грузовик) и набор возможных команд и условий. а ученик пишет програму, запускает её (построчно или сразу) и видит результат.
|
|
|||||
loading 50%
|
Кстати, читал: ученые после сложнейших вычислений и экспериментов пришли к выводу, что счастье можно купить - для этого нужно всего лишь делать подарки окружающим.
|
|
|||||
Modus ponens
|
Млин, забыл добавить опцию остановить грузовик, ну ничего, вернусь домой - добавлю... ну и наверное нуна будет какой-нть более "дружественный ЮАЙ" приделать %)
ЗЫ. Пофиксил стопы
__________________
Hell is the possibility of sanity Последний раз редактировалось wvxvw; 03.04.2008 в 18:21. |
|
|||||
Регистрация: Apr 2008
Сообщений: 4
|
Спасибо всем за поддержку. Коллега Zurmansor уже изъявил желание помочь, поэтому вопросы по реализации можно, при желании, обсуждать с ним.
Я в восторге от комментария WVXVW по поводу программы, которая сама построит алгоритм для машины Тьюринга. Ведь, как известно, машина Тьюринга может реализовать любой алгоритм http://ru.wikipedia.org/wiki/%D0%9F%...BD%D0%B3%D1%83 Вряд ли такую программу можно написать за конечное время... хотя, может быть я ошибаюсь. я не специалист |
Часовой пояс GMT +4, время: 23:54. |
|
« Предыдущая тема | Следующая тема » |
|
|