<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
	<channel>
		<title>Форум QUIK [тема: Очередь+Массив]</title>
		<link>http://forum.quik.ru</link>
		<description>Новое в теме Очередь+Массив форума  на сайте Форум QUIK [forum.quik.ru]</description>
		<language>ru</language>
		<docs>http://backend.userland.com/rss2</docs>
		<pubDate>Sat, 18 Apr 2026 07:22:09 +0300</pubDate>
		<item>
			<title>Очередь+Массив</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message266/topic59/">Очередь+Массив</a></b> <i>Объединение свойств очереди и массива.</i> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Добрый день,<br />Нарисовал библиотеку на чистом луа для работы с очередями без использования каких либо модулей.<br />Полагаю должна работать с QLUA без проблем. <br />------------------------------<br />Отличается от написанной выше Владимиром следующим:<br />1) Вариант Владимира может работать лишь при условии что длина истории очереди не выходит за точность чисел в формате double.<br />2) В моем варианте функция push работает в 3 раза быстрее<br />3) добавил функцию full - для обнаружения заполненной очереди.<br />--------------------------------------<br />Особо сильно не тестировал, поэтому сообщения об ошибках приветствуются.<br />--------------------------------<br />модуль можно взять тут <noindex><a href="http://www.kamynin.ru" target="_blank" rel="nofollow">http://www.kamynin.ru</a></noindex> <br />
			<i>02.02.2015 19:48:31, Николай  Камынин.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message266/topic59/</link>
			<guid>http://forum.quik.ru/messages/forum10/message266/topic59/</guid>
			<pubDate>Mon, 02 Feb 2015 19:48:31 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Очередь+Массив</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message240/topic59/">Очередь+Массив</a></b> <i>Объединение свойств очереди и массива.</i> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Владимир,<br />Я вот немного ваши программы переписал в таком виде:<br />--------------------------------------------<br />local function _new(q_size) <br />	return { first = 1, last =0, max_size = q_size } <br />end <br /><br />local function _delq(q)<br />	local m=q.first<br />	local x = q&#91;m&#93; <br />	q&#91;m&#93; = nil <br />	q.first = m + 1 <br />	return x<br />end <br /><br />local function _push( q, value ) <br />	q.last = q.last + 1 <br />	q&#91;q.last&#93; = value <br />	if q.last &gt;q.max_size then return _delq(q) end <br />end <br /><br />local function _pop( q) <br />	if q.last&gt;=q.first then return _delq(q); end <br />end <br /><br />local function _get(q,pos) <br />	local x=q.first+pos<br />	if q.last&gt;=x then &nbsp;return q&#91;x&#93; end<br />end <br />-- если очередь пустая &nbsp;то get(q,0)=nil <br />
			<i>02.02.2015 13:53:22, Николай  Камынин.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message240/topic59/</link>
			<guid>http://forum.quik.ru/messages/forum10/message240/topic59/</guid>
			<pubDate>Mon, 02 Feb 2015 13:53:22 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Очередь+Массив</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message200/topic59/">Очередь+Массив</a></b> <i>Объединение свойств очереди и массива.</i> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Добрый день,Владимир,<br />1) Из своего опыта замечу, <br />что самый эффективный алгоритм и его реализацию подобного класса задач<br /> можно сделать с использованием <br />операций над битами и языка уровня СИ. <br />
			<i>02.02.2015 09:22:19, Николай Камынин.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message200/topic59/</link>
			<guid>http://forum.quik.ru/messages/forum10/message200/topic59/</guid>
			<pubDate>Mon, 02 Feb 2015 09:22:19 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Очередь+Массив</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message170/topic59/">Очередь+Массив</a></b> <i>Объединение свойств очереди и массива.</i> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_onoggALL" href="/user/62/" bx-tooltip-user-id="62">Николай Камынин</a> пишет: <br />Добрый день,<br />А такой вариант устроит ?<br /><br /><br />=============<br />Этот вариант будет работать только внутри одного потока исполнения. <br />
			<i>01.02.2015 22:58:25, s_mike@rambler.ru.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message170/topic59/</link>
			<guid>http://forum.quik.ru/messages/forum10/message170/topic59/</guid>
			<pubDate>Sun, 01 Feb 2015 22:58:25 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Очередь+Массив</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message169/topic59/">Очередь+Массив</a></b> <i>Объединение свойств очереди и массива.</i> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Добрый вечер,<br />Я в луа не силен, поэтому додумываю существующие варианты. Нашел очередь, ее и додумывал &nbsp;:) . В очереди - при добавлении нового элемента - предыдущие элементы сдвигаются на шаг. Будет ли реализовываться это в вашем варианте - не знаю в силу недостаточности знаний луа.<br />За пример кода - спасибо! <br />
			<i>01.02.2015 22:37:11, Владимир Б****ов.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message169/topic59/</link>
			<guid>http://forum.quik.ru/messages/forum10/message169/topic59/</guid>
			<pubDate>Sun, 01 Feb 2015 22:37:11 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Очередь+Массив</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message165/topic59/">Очередь+Массив</a></b> <i>Объединение свойств очереди и массива.</i> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Добрый день,<br />А такой вариант устроит ?<br /><br />---- &nbsp; &nbsp;создать новый массив, максимальная длина N<br />new=function(N) local t={}; t.len=N; return t; end &nbsp;<br /><br />---- &nbsp; &nbsp; вытолкнуть первый элемент <br />pop=function(t) if #t&gt;0 then return table.remove(t,1); end end &nbsp; <br /><br />---- &nbsp; &nbsp; поставить в очередь , если очередь &gt;N -вытолкнуть первый<br />push=function(t,x) t&#91;#t+1&#93;=x; if #t&gt;t.len then return table.remove(t,1) end; end<br /><br /><br />--------------- доступ к любому элементу как к элементу таблицы квадратными скобками <br />
			<i>01.02.2015 20:46:10, Николай Камынин.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message165/topic59/</link>
			<guid>http://forum.quik.ru/messages/forum10/message165/topic59/</guid>
			<pubDate>Sun, 01 Feb 2015 20:46:10 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Очередь+Массив</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message149/topic59/">Очередь+Массив</a></b> <i>Объединение свойств очереди и массива.</i> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Добрый день<br />В прошлой версии форума я задавал вопрос про массивы и очереди,<br />так вот - разобрался!!! Выкладываю код, может кому понадобится<br />*********************************<br />Queue = {}<br /> <br />function Queue.new(q_size)<br /> &nbsp; &nbsp;return { first = 0, last = -1, max_size = q_size }<br />end<br /> <br />function Queue.push( queue, value )<br /> &nbsp; &nbsp;queue.last = queue.last + 1<br /> &nbsp; &nbsp;queue&#91;queue.last&#93; = value<br /> &nbsp; &nbsp;<br /> &nbsp; &nbsp;if queue.last &gt;= queue.max_size then<br />	local val = queue&#91;queue.first&#93;<br />	queue&#91;queue.first&#93; = nil<br />	queue.first = queue.first + 1<br /> &nbsp; &nbsp;end<br />end<br /> <br />function Queue.pop( queue )<br /> &nbsp; &nbsp;if queue.first &gt; queue.last then<br />	 &nbsp;return nil<br /> &nbsp; &nbsp;end<br /> <br /> &nbsp; &nbsp;local val = queue&#91;queue.first&#93;<br /> &nbsp; &nbsp;queue&#91;queue.first&#93; = nil<br /> &nbsp; &nbsp;queue.first = queue.first + 1<br /> &nbsp; &nbsp;return val<br />end<br /> <br />function Queue.empty( queue )<br /> &nbsp; &nbsp;return queue.first &gt; queue.last<br />end<br /><br />function Queue.get( queue, pos)<br /> &nbsp; &nbsp;if queue.first &gt; queue.last then<br />	 &nbsp;return nil<br /> &nbsp; &nbsp;end<br /> &nbsp; &nbsp;if pos &gt; queue.last then<br />	 &nbsp;return nil<br /> &nbsp; &nbsp;end<br /><br /> &nbsp; &nbsp;local val = queue&#91;queue.first + pos&#93;<br /> &nbsp; &nbsp;return val<br />end<br />*********************************<br />Использование:<br />q = Queue.new(5) -&gt; Создаем очередь фиксированной длины, в данном случае - 5 элементов. По мере добавления новых элементов, лишние(свыше 5) удаляются<br />qq = Queue.new() -&gt; Создаем очередь бесконечной длины<br />v1 = Queue.get(q,0) -&gt; Доступ к элементу<br />v2 = Queue.get(q,1) -&gt; Доступ к элементу<br />v3 = Queue.get(q,2) -&gt; Доступ к элементу<br />v4 = Queue.get(q,3) -&gt; Доступ к элементу<br />v5 = Queue.get(q,4) -&gt; Доступ к элементу<br />v6 = Queue.get(q,5) -&gt; Доступ к элементу<br /><br /><br />Если ГУРУ заметят ошибки в коде - прошу высказать!!! <br />
			<i>01.02.2015 10:41:13, Владимир Б****ов.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message149/topic59/</link>
			<guid>http://forum.quik.ru/messages/forum10/message149/topic59/</guid>
			<pubDate>Sun, 01 Feb 2015 10:41:13 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
	</channel>
</rss>
