Comments 22
UFO just landed and posted this here
Центр окружности имеет координаты 0,0?
0
На ассемблере лениво писать.
Но вариант решения есть.
Построить конечный автомат:
Пусть даны координаты.
Используем только логические переменные (битовые)
x1 = знак абсциссы (1 если больше нуля, 0 — если меньше)
x2 = знак ординаты (1 если больше нуля, 0 — если меньше)
f1, f2 — номер квадратнта, в виде 1 и второго разрада его двоичного предстваления -1 (1 = 00; 2 = 01; 3=10; 4=11)
x1 x2 f1 f2
1 1 0 0
0 1 0 1
0 0 1 0
1 0 1 1
Ну а дальше СНДФ:
f1 = (not(x1) and not(x2)) or (x1 and not(x2))
f2 = (not(x1) and x2) or (x1 and not(x2))
Результат А=f1*2+f2+1 (это и будет номер квадратнта).
Джампов вроде недолжно быть.
Но вариант решения есть.
Построить конечный автомат:
Пусть даны координаты.
Используем только логические переменные (битовые)
x1 = знак абсциссы (1 если больше нуля, 0 — если меньше)
x2 = знак ординаты (1 если больше нуля, 0 — если меньше)
f1, f2 — номер квадратнта, в виде 1 и второго разрада его двоичного предстваления -1 (1 = 00; 2 = 01; 3=10; 4=11)
x1 x2 f1 f2
1 1 0 0
0 1 0 1
0 0 1 0
1 0 1 1
Ну а дальше СНДФ:
f1 = (not(x1) and not(x2)) or (x1 and not(x2))
f2 = (not(x1) and x2) or (x1 and not(x2))
Результат А=f1*2+f2+1 (это и будет номер квадратнта).
Джампов вроде недолжно быть.
+1
СНДФ==СДНФ== совершенно дизъюнктивная нормальная форма.
Очепятался немного.
Очепятался немного.
0
Тут еще можно упростить (или просто догадатся по табличке)
f1 = x1 xor x2
f2 = not(x2)
f1 = x1 xor x2
f2 = not(x2)
0
Ваше решение мне нравится, ибо на мой взгляд правильное. Но я решил примерно как Хабрачелоевек под ником SSE4. (чуть ниже)
+1
Отучился пять лет в ВУЗе и не знаю что такое «квадрант окружности». Стыдно за себя :(
0
UFO just landed and posted this here
У вас получилось:) Приз уходит в карму )
0
У кого-то, по-моему, неправильное представление о квадранте.
Подставьте точку (1; -1) в текст выше и прикиньте, сильно ли промахнулись.
Подставьте точку (1; -1) в текст выше и прикиньте, сильно ли промахнулись.
+1
Да, действительно необходимо ответы писать в последовательности
1,2,4,3
Но главное, что у человека идея правильная.
1,2,4,3
Но главное, что у человека идея правильная.
0
Отличная логика.
Не возмущайтесь потом, если кто-то вдруг напишет книгу, которую нужно будет читать задом наперед. Идея-то классная! :)
Не возмущайтесь потом, если кто-то вдруг напишет книгу, которую нужно будет читать задом наперед. Идея-то классная! :)
+1
UFO just landed and posted this here
__asm {
mov ebx, y;
and ebx, -1;
shr ebx, 31;
mov eax, x;
and eax, -1;
shr eax, 31;
xor eax, ebx;
shl ebx, 1;
add eax, ebx;
inc eax;
mov q, eax;
}
+1
Итак мое решение
Для начала немного теории:
Для всех числел в двоичном виде последний бит (первый слва) отвечает за знак
(бит знака)
Теперь решение:
Допустим, у нас есть два числа X и Y
Теперь запишем завиимость номера квадрантов(N) от его двоичного представления(Bn) и
от бита флагов X и Y (Bs):
N Bn Bs
1 00 00
2 01 10
3 10 11
4 11 01
Ура-есть четкая (биективная) зависимость N от Bs. Идея в том, что бы использовать
биты знака как адрес с ответом.
Реализацию программы можно делать разными способами, лично я сделал так
A = <[1,2,4,3]>
X = <ввод X>
Y = <ввод Y>
X = <сдвиг вправо до бита знака>
Y = <сдвиг вправо до бита знака>
Y = <сдвиг влево на бит>
X = <X+Y>
<Вывод элемента X из массива A>
Для начала немного теории:
Для всех числел в двоичном виде последний бит (первый слва) отвечает за знак
(бит знака)
Теперь решение:
Допустим, у нас есть два числа X и Y
Теперь запишем завиимость номера квадрантов(N) от его двоичного представления(Bn) и
от бита флагов X и Y (Bs):
N Bn Bs
1 00 00
2 01 10
3 10 11
4 11 01
Ура-есть четкая (биективная) зависимость N от Bs. Идея в том, что бы использовать
биты знака как адрес с ответом.
Реализацию программы можно делать разными способами, лично я сделал так
A = <[1,2,4,3]>
X = <ввод X>
Y = <ввод Y>
X = <сдвиг вправо до бита знака>
Y = <сдвиг вправо до бита знака>
Y = <сдвиг влево на бит>
X = <X+Y>
<Вывод элемента X из массива A>
+1
Sign up to leave a comment.
Articles
Change theme settings
Немного попрограммируем…