Имя: Пароль:
1C
 
Пятницотест. XOR на языке 1С 8
,
0 В тылу врага
 
26.04.13
13:53
Реализуйте на языке 1С 8 наиболее элегантно ЛОГИЧЕСКУЮ функуцию XOR(A,Б)
A,Б - гарантированно логические значения (тип булево).
1 Rie
 
26.04.13
13:55
(0) Поставь задачу корректно.
2 В тылу врага
 
26.04.13
13:56
(1)

Функция XOR(A,Б)
 //требуется написать тело функции
КонецФункции
3 Wobland
 
26.04.13
13:56
(1) он просит (не а и б) или (а и не Б) покороче
4 shuhard
 
26.04.13
13:57
(0) дорого стоить будет
5 Rie
 
26.04.13
13:57
(2) Типы параметров?
6 zak555
 
26.04.13
13:57
0 или 0 = 0
0 --- 1 = 1
1 --- 0 = 1
1 --- 1 = 1

=> xor = (НЕ ИЛИ)

0 xor 0 = 1
0 --- 1 = 0
1 --- 0 = 0
1 --- 1 = 0
7 В тылу врага
 
26.04.13
13:57
(5) внимательно читай (0)
8 zak555
 
26.04.13
13:58
Функция XOR(A,Б)
 Возврат НЕ (А или Б)
КонецФункции
9 GANR
 
26.04.13
13:58
ГДЕ
   ВЫБОР
       КОГДА A
           ТОГДА 1
       ИНАЧЕ 0
   КОНЕЦ + ВЫБОР
       КОГДА B
           ТОГДА 1
       ИНАЧЕ 0
   КОНЕЦ + ВЫБОР
       КОГДА C
           ТОГДА 1
       ИНАЧЕ 0
   КОНЕЦ +
   ...
   + ВЫБОР
       КОГДА Z
           ТОГДА 1
       ИНАЧЕ 0
   КОНЕЦ = 1
10 Rie
 
26.04.13
13:58
Не, я тащусь... Это ж 1Сик. Со всеми его выгибонами. И тут - задачи на как бы если выгибонов нет. Или есть?
11 zak555
 
26.04.13
13:58
попутал =(

1 --- 1 = 1

=)))
12 В тылу врага
 
26.04.13
13:58
(8) неправильно
13 exwill
 
26.04.13
13:59
Функция XOR(A,Б)
 Возврат А<>Б
КонецФункции
14 Wobland
 
26.04.13
13:59
(8) НЕ (ложь ИЛИ ложь)=истина, ксор(ложь, ложь)=ложь
15 Rie
 
26.04.13
13:59
(8) +1000000000
А теперь, если В тылу врага не согласен - пусть опровергает.
16 В тылу врага
 
26.04.13
13:59
(13) красавчик, ты выиграл
17 zak555
 
26.04.13
14:00
(14) да я забыл ксор, теперь понял ошибку
18 Rie
 
26.04.13
14:01
(15)
Да-да-да, ошибки...
Ну тогда
Функция XOR(А,Б)
  Возврат А<>Б;
КонецФункции
19 andreymongol82
 
26.04.13
14:01
(13) Блин, опередил!
20 andreymongol82
 
26.04.13
14:01
(15) +100500
21 Rie
 
26.04.13
14:01
(17) Несущественно. Хочется понять, что имел в виду ТС.
22 В тылу врага
 
26.04.13
14:01
(18) опоздун
23 zak555
 
26.04.13
14:02
(16) это из серии ?

Функция AND(A,Б)
 Возврат А * Б
КонецФункции

Функция OR(A,Б)
 Возврат А + Б
КонецФункции
24 andreymongol82
 
26.04.13
14:03
(23) Матлогика рулит. :)
25 zak555
 
26.04.13
14:06
хотя (23) должно будет преобразовать в результат в число
26 andreymongol82
 
26.04.13
14:09
(25) Булево как бы и есть число 0 или 1. по крайне мере, при
а=истина;
Сообщить(а=1); выводит "Да"
27 olegves
 
26.04.13
14:10
(0)
А%Б
28 NS
 
26.04.13
14:10
(0) Может гарантированно числовые значения?
29 В тылу врага
 
26.04.13
14:28
(28) не, логические, логический XOR
30 НЕА123
 
26.04.13
14:28
(А+Б)%2
31 Asmody
 
26.04.13
14:28
вспоминая мат.логику, строим элементарную ДНФ:

Функция XOR(а, б)
  Возврат (а И НЕ б) ИЛИ (НЕ а И б);
КонецФункции
32 exwill
 
26.04.13
14:29
(31) а<>б короче
33 Asmody
 
26.04.13
14:30
(32) зато (31) математически верно
34 В тылу врага
 
26.04.13
14:31
(33) типа (13) не верно математически ))
35 exwill
 
26.04.13
14:31
(33) а (32), значит по-твоему, неверно?
36 Rie
 
26.04.13
14:34
(33) Так и (33) - математически верно.
37 НЕА123
 
26.04.13
14:34
НЕ Найти(А,Б)
38 НЕА123
 
26.04.13
14:43
ЛОЖЬ ИЛИ (А - Б)
39 В тылу врага
 
26.04.13
14:44
(38) выражение (ЛОЖЬ ИЛИ Х) эквивалентно просто Х
40 exwill
 
26.04.13
14:45
(39) Вот не даешь ты человеку развернуться ))))
41 В тылу врага
 
26.04.13
14:46
(40) больше не буду, прошу извиниь
42 Jaffar
 
26.04.13
14:49
только я вижу ошибку в (6)?
43 НЕА123
 
26.04.13
14:53
(39)
да.
"ЛОЖЬ ИЛИ" добавлено только приведения типа. Ложь или (-1)= Истина
44 Волшебник
 
26.04.13
15:01
Функция XOR(А, Б)
 
  Скрипт = Новый COMObject("MSScriptControl.ScriptControl");
  Скрипт.language = "vbscript";
  Возврат Скрипт.Eval("" + Число(А) + " xor " + Число(Б));
   
КонецФункции
45 В тылу врага
 
26.04.13
15:05
(44) ресурсоемко
46 Волшебник
 
26.04.13
15:05
(45) Работает!
47 НЕА123
 
26.04.13
15:07
(45) зато по-честному.
48 В тылу врага
 
26.04.13
15:08
(46) ну с этим я спорить не буду
49 Asmody
 
26.04.13
15:09
(44) по хорошему, надо бы веб-сервис на java написать…
50 vde69
 
26.04.13
15:14
Функция XOR(А, Б)
  Возврат А+Б=1;
КонецФункции
51 Reaper_1c
 
26.04.13
15:16
Перепись отучившихся у Гилева чтоли?
52 Волшебник
 
26.04.13
15:17
Функция XOR(А, Б)
   
   тз = Новый ТаблицаЗначений;
   тз.Колонки.Добавить("Значение");
   стр = тз.Добавить(); стр.Значение = А;
   стр = тз.Добавить(); стр.Значение = Б;
   тз.Свернуть("Значение");
   Возврат тз.Количество()-1;
   
КонецФункции
53 vde69
 
26.04.13
15:17
точнее:

Функция XOR(А, Б)
  Возврат (0+А+Б)=1;
КонецФункции
54 Волшебник
 
26.04.13
15:19
Функция XOR(А, Б)
   
   аб = Новый Соответствие;
   аб[А]=Б;
   аб[Б]=А;

   Возврат аб.Количество()-1;
   
КонецФункции
55 vde69
 
26.04.13
15:22
другой вариант

Функция XOR(А, Б)
  Возврат Мин(А,Б) <> Макс(А,Б);
КонецФункции
56 Волшебник
 
26.04.13
15:26
Функция XOR(А, Б)
   
   Возврат НЕ (0+А-Б=0);
   
КонецФункции
57 vde69
 
26.04.13
15:30
(56) плагиат!!! караул мою нетленку стырили! я может над ней 3 года работал!!!
58 Волшебник
 
26.04.13
15:31
(57) Ладно, можешь стырить мою.

Функция XOR(А, Б)
   
   Попытка
       о = 1/(А-Б);
       Возврат Истина;
   Исключение
       Возврат Ложь;
   КонецПопытки;
   
КонецФункции
59 ssh2006
 
26.04.13
15:37
?(А, НЕ Б, Б)
60 НЕА123
 
26.04.13
15:41
СтрДлина(""+ А + Б) = 5
61 vde69
 
26.04.13
15:43
(60) не будет работать при локализации например на английсуий
62 НЕА123
 
26.04.13
15:44
(61)
да. вот так можно, но тоже на грани фола
СтрДлина(""+ А + Б) = СтрДлина(""+Истина + Ложь)
63 NS
 
26.04.13
15:46
Разве единственный правильный ответ не дан уже в (13)?
64 Волшебник
 
26.04.13
15:47
Функция XOR(А, Б)
   о = sin(А) + sin(Б);
   Возврат о > 0.8 И о < 0.9;
КонецФункции
65 НЕА123
 
26.04.13
15:47
СтрДлина("" +Формат( А,"БЛ=Нет; БИ=Да")+Формат(Б,"БЛ=Нет; БИ=Да"))
66 НЕА123
 
26.04.13
15:49
(63) сегодня нет. пятница.
67 YHVVH
 
26.04.13
15:50
я так и не понял что надо
68 YHVVH
 
26.04.13
15:50
что такое XOR
69 НЕА123
 
26.04.13
15:52
сам я пользуюсь (30)
70 NS
 
26.04.13
15:53
"XOR", он же "<>" - это строгая дизъюнкция.
71 Jaffar
 
26.04.13
15:55
(68) исключающее ИЛИ.
единица, если операнды не равны.
ноль, если операнды равны.
72 Classic
 
26.04.13
15:58
A<>B
73 Asmody
 
26.04.13
16:05
например, в javascript и других языках с неявным приведением типов, номер с <> не прокатит.
74 Jaffar
 
26.04.13
16:12
(73) ну автор какбэ ограничил в (0) языком 1С 8 :-)
75 Волшебник
 
26.04.13
16:18
Настоящая интеллектуальная программа должна найти метод решения в интернете, доработать его под конкретную задачу и выдать ответ. Посему вот вам Реально Интеллектуальное Эвристическое Решение:

ВНИМАНИЕ! Работает не всегда и не везде, как и положено интеллектуальным эвристическим решениям.

Функция XOR(А,Б)
   
   путь = "c:\temp\file.txt";
   КопироватьФайл("http://www.forum.mista.ru/topic.php?id=663017&format=pda&page=1",путь);
   Файл = Новый ТекстовыйДокумент();
   Файл.Прочитать(путь);
   ветка = Файл.ПолучитьТекст();
   поз = Найти(ветка, "[13 - 26-04-2013 13:59]");
   программа = Сред(ветка,поз+65,10);
   программа = СтрЗаменить(программа,"&lt;","<");
   программа = СтрЗаменить(программа,"&gt;",">");
   
   Возврат Вычислить(программа);
   
КонецФункции
76 Jaffar
 
26.04.13
16:24
(75) кхе, выделение синтаксиса не видит закрывающие кавычки в пути :-)
77 Волшебник
 
26.04.13
16:26
(76) Программа-разукрашка обладает низким уровня интеллекта, поэтому она не может осознать глубину элегантности Реально Интеллектуального Эвристического Решения.
78 Волшебник
 
26.04.13
16:31
(0) За прекрасную пятничную ветку я разбанил ник Ненавижу 1С
79 Ненавижу 1С
 
гуру
26.04.13
17:03
(78) благодарю
80 Torquader
 
27.04.13
01:12
Я, когда писал sha1 на 1С использовал XOR в таком виде (A+B)%2, где A и B - числа (0 или 1).
81 Torquader
 
27.04.13
01:13
(80)+ Собственно, и перенос в старшие разряды рассматривался также: (A-A%2)/2
82 Steel_Wheel
 
27.04.13
01:20
(0) На, держи
Функция XOR(A, B)

   Возврат ?(А=B, 0, 1)

КонецФункции
83 Steel_Wheel
 
27.04.13
01:21
Блин, в 13 уже было
84 RayCon
 
27.04.13
01:57
(0) Спрашивал бы сразу про XIRR, а то какую-то тривиальную XOR. Да ещё и "функуцию". Насколько "куцию"? :)
85 zladenuw
 
27.04.13
02:12
а вот первый раз. ажиотажа небыло
Побитовый XOR на языке 1С
86 zladenuw
 
27.04.13
02:14
а таки было бы интересней.
http://1csoft.com/node/142
87 zladenuw
 
27.04.13
02:39
жаль что доступа нету :(
http://nashe1c.ru/materials-view.jsp?id=195
88 Живой Ископаемый
 
27.04.13
11:17
Запросом?
89 cw014
 
27.04.13
11:50
?((Не А и НЕ Б) или (А и Б),Истина,А Или Б)
90 cw014
 
27.04.13
11:52
Запросом:
ВЫБОР КОГДА (НЕ А И НЕ Б) ИЛИ (А И Б) ТОГДА ЛОЖЬ ИНАЧЕ А ИЛИ Б КОНЕЦ
91 cw014
 
27.04.13
11:52
+(89) там вместо ИСТИНА должно быть ЛОЖЬ
92 cw014
 
27.04.13
11:53
А хотя можно так (исключающее же):
НЕ (А ИЛИ Б)
93 Живой Ископаемый
 
27.04.13
11:57
неправильно
94 cw014
 
27.04.13
12:04
(93) Докажи
95 cw014
 
27.04.13
12:04
++(84) Докажи программисту, который написал интерпритатор
96 Steel_Wheel
 
27.04.13
12:07
(95) програмист, который написал интерпретатор, не может не знать таблицу истинности оператора XOR.
97 cw014
 
27.04.13
12:09
А, да, ошибся... При НЕ А И НЕ Б получается истина, а при А И Б - ложь
98 Rie
 
27.04.13
12:09
(96) Написавший интерпретатор - знает. А вот написавший "интерпритатор" (с) (95)
99 cw014
 
27.04.13
12:09
Прошу прощения, на пиве сижу... Наркоманнненннн ))))
100 cw014
 
27.04.13
12:09
(98) Пива, пива...)))))
101 cw014
 
27.04.13
12:10
Ладно, чо, хайте, лоханулся, так лоханулся... С кем не бывает
102 cw014
 
27.04.13
12:10
Но как идею взять можно
103 cw014
 
27.04.13
12:12
И кста, я сотый, стопервый, и стовторой, а этим постом еще и стопицотый
104 Rie
 
модератор
27.04.13
12:13
(103) Отдохни часок, протрезвей, успокойся.
105 Живой Ископаемый
 
27.04.13
15:30
(94) Консоль доажет, попробуй выполнить свое
ВЫБОР КОГДА (НЕ А И НЕ Б) ИЛИ (А И Б) ТОГДА ЛОЖЬ ИНАЧЕ А ИЛИ Б КОНЕЦ

ужеб писал так

ВЫБОР КОГДА (НЕ &А И НЕ &Б) ИЛИ (&А И &Б) ТОГДА ЛОЖЬ ИНАЧЕ &А ИЛИ &Б КОНЕЦ
106 cw014
 
27.04.13
15:47
(105) А и Б могут быть полями запроса
107 Живой Ископаемый
 
27.04.13
15:48
окей, тогда правильно
108 cw014
 
27.04.13
16:03
(107) Воооооооооот, а меня забанили тут на час зачем то
109 Steel_Wheel
 
27.04.13
16:14
это типа вытрезвусика было xD
110 фобка
 
27.04.13
16:38
было?
Возврат не (а = б) и (а или б);
111 фобка
 
27.04.13
16:42
+110 мда, похоже на (13)
112 Живой Ископаемый
 
27.04.13
16:43
2(108) это не я, я спал.