Я пытаюсь преобразовать десятичное число, errmm, три штабеля с помощью следующей логики или что-то подобное, но я не могу получить строгий alogrythm:Преобразование десятичного трех стеков
1 0 0 1
2 0 1 0
3 0 1 1
4 1 0 0
5 1 0 1
6 1 1 0
7 1 1 1
8 0 0 2
9 0 2 0
10 0 2 1
11 2 0 0
12 1 0 2
13 1 1 2
14 1 2 1
15 2 0 1
16 2 1 0
17 2 1 1
18 2 1 2
Первое предложение было пользователем два внутренних цикла, один для уменьшения ввода (десятичный), а второй - для переключения между стеками.
Ужасный пол попробовать в PL-SQL (он работает в обратном направлении):
declare
type arr_type is table of varchar(32) index by binary_integer;
arr arr_type;
i number := 12;
z number := 0;
x number := 0;
c number := 0;
gg number;
begin
arr(1) := 'z';
arr(2) := 'x';
arr(3) := 'c';
gg := 0; -- array position
i := i + 1; --
loop
i := i - 1;
gg := gg + 1;
if arr(gg) = 'z'
then
z := z + 1;
--if c > 0 then c := c - 1; end if;
elsif arr(gg) = 'x'
then
x := x + 1;
--if z > 0 then z := z - 1; end if;
elsif arr(gg) = 'c'
then
c := c + 1;
--if x > 0 then x := x - 1; end if;
end if;
--
if gg = 3 then gg := 0;
end if;
if i = 1 then exit; end if;
dbms_output.put_line(z || ' ' || x || ' ' || c);
end loop;
end;
Thankyou.
Какова логика разделения числа на три части? Он начинает выглядеть очень много, как бинарный, но затем мы набираем 8, что идет (0,0,2). Почему это не (1,1,2)? Что представляют собой три столбца? – Boneist
выглядит ужасно, потому что у меня нет четвертого и последующих рангов, поэтому мне нужно разделить три части. на самом деле это может быть (1,1,2) для 8, но он сломает последовательность. –
Хорошо, но какова логика, почему это (0, 0, 2)? Подразумеваем ли мы, что у вас есть три столбца и выберем из них соответствующее десятичное значение? – Boneist