nedoPC.org

Electronics hobbyists community established in 2002
Atom Feed | View unanswered posts | View active topics It is currently 15 Apr 2024 23:59



This topic is locked, you cannot edit posts or make further replies.  [ 12 posts ] 
Игра в кубики 
Author Message
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22517
Location: Silicon Valley
Напомню то что я озвучил на своем форуме 28 ноября 2004 года:

Quote:
Вот и готова спецификация первой (если считать RW1, то второй) абстрактной системы (пока только на бумаге). Рабочее название "Игра Кубики" или английский вариант "Cubic Game" - пока на плоскости, но 3D вариант в-принципе возможен. Имеется некоторое поле с клетками M x N. Поведение каждой клетки определяется некоторой функциональностью. В общем случае клетка может быть пустой, несущей в себе символ (движущийся или стоящий), или функциональной клеткой. Некоторые клетки по краям поля могут нести смысл входных или выходных (принимающих потоки символов или отправляющие их). Требуется с помощью редактора-отладчика реализовать разнообразные задачи. Более детальная информация появится позже. Да - и еще, простота реализации позволяет написать редактор-отладчик полностью на RW1, что дает возможность портировать его на разнообразные микро-системы.


Просто иногда, листая свою позапрошлогоднюю тетрадку, натыкаюсь на описание этих самых кубиков и испытываю желание побыстрее это реализовать, т.к. интересно. Еще кому-нибудь интересно?

_________________
:dj: https://mastodon.social/@Shaos


Last edited by Shaos on 19 Oct 2007 21:14, edited 3 times in total.



18 Mar 2006 21:00
Profile WWW
Retired

Joined: 03 Aug 2003 22:37
Posts: 1474
Location: Moscow
Shaos wrote:
Просто иногда, листая свою позапрошлогоднюю тетрадку, натыкаюсь на описание этих самых кубиков и испытываю желание побыстрее это реализовать, т.к. интересно. Еще кому-нибудь интересно?

Достаточно интересная вещь. В особенности если будет дальнейшее развитие в видел RW3 - троичная ;)

_________________
Extreme Entertainment


19 Mar 2006 00:22
Profile
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22517
Location: Silicon Valley
Post 
Вот чего я придумал 27 ноября 2004 года и перерисовал на компьютере из своей тетрадки только сегодня:

Image

А вот как из таких кубиков можно собрать схему, принимающую на входе последовательность символов и сравнивающую с указанным словом (в данном случае "WORD"):

Image

_________________
:dj: https://mastodon.social/@Shaos


19 Mar 2006 12:57
Profile WWW
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22517
Location: Silicon Valley
Post 
Shaos wrote:
Вот чего я придумал 27 ноября 2004 года и перерисовал на компьютере из своей тетрадки только сегодня:

Image


Итак, имеем потоки символов, которые могут перемещаться по незанятым клеткам. За один такт символ переставляется в соседнюю клетку, если соседняя клетка занята функиональным кубиком, то в этом такте происходят соответствующие вычисления:

connectors - коннекторы бывают двух типов - входные и выходные (соответственно принимающие потоки символы извне и отправляющие потоки символов наружу);

mirrors - зеркала берут символ с одной стороны и в следующем такте переставляют с другой, поворачивая поток символов на 90 градусов;

translucent mirrors - полупрозрачные зеркала кроме создания ответвленного потока символов, пропускают основной поток сквозь себя;

transmitters - передатчики могут генерировать поток символов из рядом стоящего или мимо проходящего символа (символы вылетают в направлении стрелки);

accelerators - ускорители применяются для мгновенного пропускания сквозь себя потока символов без задержки на один такт в каждой клетке, в случае использования ряда ускорителей символ также за один такт преодолевает всю цепочку (символы вылетают в направлении стрелки, залетая с противоположной стороны);

duplicator - предполагалось что дупликаторы будут удваивать каждый символ в потоке, но это противоречит концепции равномерной и постоянной скорости распортранения потоков символов по пустым клеткам, поэтому я скорее всего уберу их из спецификации;

terminators - съедают потоки символов, пришедших с любой стороны;

arithmetic operators - арифметические операторы, входы сверху и снизу, а выход справа;

comparisions - сравнивающие кубики (==, !=, >, >=, <, <=), аргументы сверху и снизу, а логический выход справа (два возможных значения - T и F);

logic operators - логические операторы над потоками символов T и F;

selectors - переключатели потоков, управляющий логический вход толстая линия, переключаемые каналы - тонкие, с той стороны где выдающийся пиксел по середине - канал включаемый по T на логическом входе (второй канал соответственно включается по F, отключая первый).

_________________
:dj: https://mastodon.social/@Shaos


19 Mar 2006 15:45
Profile WWW
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22517
Location: Silicon Valley
Post 
По идее все вышеприведенное можно считать сложным клеточным автоматом, соответственно это можно назвать как-нибудь типа Data Driven Cellular Machine (DDCM)

_________________
:dj: https://mastodon.social/@Shaos


19 Mar 2006 18:52
Profile WWW
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22517
Location: Silicon Valley
Post 
Shaos wrote:
По идее все вышеприведенное можно считать сложным клеточным автоматом, соответственно это можно назвать как-нибудь типа Data Driven Cellular Machine (DDCM)


сложным клеточным автоматом это можно назвать из-за того, что состояние каждой клетки описывается не только ее непосредственными геометрическими соседями, но и достаточно отдаленными клетками - подцепленными цепочками акселераторов, зеркал и др

_________________
:dj: https://mastodon.social/@Shaos


19 Mar 2006 19:04
Profile WWW
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22517
Location: Silicon Valley
Post 
Shaos wrote:
Вот чего я придумал 27 ноября 2004 года


А началось всё с того, что я решил поразмышлять над проблемой создания графического языка программирования для написания программ на плоскости (а в будущем можно поразмышлять и над программированием в пространстве).

_________________
:dj: https://mastodon.social/@Shaos


19 Mar 2006 21:07
Profile WWW
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22517
Location: Silicon Valley
Post 
Shaos wrote:
А вот как из таких кубиков можно собрать схему, принимающую на входе последовательность символов и сравнивающую с указанным словом (в данном случае "WORD"):

Image


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

_________________
:dj: https://mastodon.social/@Shaos


19 Mar 2006 21:23
Profile WWW
Retired

Joined: 03 Aug 2003 22:37
Posts: 1474
Location: Moscow
Post 
Дело оказалось значительно интереснее чем я предполагал раньше! Идею стоит развивать и реализовывать по мере развития :) Предлагаю нарисовать большие изображения кубиков, чтобы потом можно было на их основе рисовать уменьшенные и использовать в устройствах с ограниченной разрешаюшей способностью экрана.

_________________
Extreme Entertainment


19 Mar 2006 23:50
Profile
God

Joined: 02 Jan 2006 02:28
Posts: 1390
Location: Abakan
Post 
Замечательная идея!
А если отлаженый сценарий определить как отдельный "макро кубик", и вставлять его в другие сценарии, то получим многомерную структуру.

Если развить мысль дальше, и объединить несколько "макро кубиков" в класс, то вставлять нужно будет "кубики-объекты", т.е. копии этого класса, которые будет взаимодействовать с "макро кубиками" этого класса, но будут иметь разные переменные состояния...


20 Mar 2006 00:25
Profile
Retired

Joined: 03 Aug 2003 22:37
Posts: 1474
Location: Moscow
Post 
jdigreze wrote:
Если развить мысль дальше, и объединить несколько "макро кубиков" в класс, то вставлять нужно будет "кубики-объекты", т.е. копии этого класса, которые будет взаимодействовать с "макро кубиками" этого класса, но будут иметь разные переменные состояния...

В общем можно при переходе к следующему уровню повышать масштаб и в нем оперировать уже не единичными клетками, а целыми последовательностями.

_________________
Extreme Entertainment


20 Mar 2006 04:12
Profile
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22517
Location: Silicon Valley
Post 
Всё ломал голову как же это назвать - предполагал charbricks и data-driven cellular automat, но пока остановился на названии bricksputer.

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

Image

input connectors - входные коннекторы, принимающие потоки символы из внешнего мира;

output connectors - выходные коннекторы, отправляющие потоки символов во внешний мир;

mirrors - зеркала берут символ с одной стороны и в следующем такте переставляют с другой, поворачивая поток символов на 90 градусов;

translucent mirrors - полупрозрачные зеркала кроме создания ответвленного потока символов, пропускают основной поток сквозь себя;

transmitters - передатчики могут генерировать поток символов из рядом стоящего или мимо проходящего символа (символы вылетают в направлении стрелки);

accelerators - ускорители применяются для мгновенного пропускания сквозь себя потока символов без задержки на один такт в каждой клетке, в случае использования ряда ускорителей символ также за один такт преодолевает всю цепочку (символы вылетают в направлении стрелки, залетая с противоположной стороны);

terminator - терминаторы съедают потоки символов, пришедших с любой стороны;

bridge - мост служит для безболезнного разделения пересекающихся потоков символов (ставится в точку пересечения потоков);

exception - блок используется для передачи на верхний уровень информации об ошибочной ситуации в схеме, срабатывает при попадании в него любого символа;

equ blocks - сравнивающие блоки, принимающие два потока и выдающие символ, если он встретился в обоих потоках в этом такте - в противном случае ничего не выдается;

max blocks - блоки выдают максимальный символ из двух входных;

min blocks - блоки выдают минимальный символ из двух входных;

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

Другие блоки более высокого уровня (реализующие булевые функции, десятичную или троичную арифметику) можно составить из вышеприведенных блоков, например вот так будут описываться блоки "равно" и "больше":

Image

P.S. Продолжение темы в другом топике: http://www.nedopc.org/forum/viewtopic.php?t=8852

_________________
:dj: https://mastodon.social/@Shaos


22 Mar 2006 20:22
Profile WWW
Display posts from previous:  Sort by  
This topic is locked, you cannot edit posts or make further replies.   [ 12 posts ] 

Who is online

Users browsing this forum: Google [Bot] and 7 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
Powered by phpBB® Forum Software © phpBB Group
Designed by ST Software.