ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2
Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей. Здесь обсуждаются безопасность, программирование, технологии и многое другое. Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
Вернуться   Форум АНТИЧАТ > Программирование > С/С++, C#, Delphi, .NET, Asm
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

Задачка на логику
  #1  
Старый 02.10.2008, 02:10
LynXzp
Участник форума
Регистрация: 21.10.2007
Сообщений: 147
Провел на форуме:
388646

Репутация: 31
По умолчанию Задачка на логику

Задание:
Цитата:
Переменная I представляет собой полное слово с фиксированной точкой. I принимает значения 1 либо 2. Если I оказалось равным 1, замените его на 2 и наоборот.
Решил обойтись совсем без дополнительных переменных и констант.
Сходу написал
I:=i--?i++:i++,i++
но на мое удивление этот код назаработал... а только вот это заработало:
I=--i?i++:i+=2;
без "+=" не смог обойтись - хотелось использовать как можно меньше переменных, но через 45 минут сдался.. и решил написать.

Подскажите как правильно?
 
Ответить с цитированием

  #2  
Старый 02.10.2008, 18:14
0verbreaK
Постоянный
Регистрация: 30.04.2008
Сообщений: 323
Провел на форуме:
379101

Репутация: 136
По умолчанию

Это че вобще за язык и каракули какиета?
 
Ответить с цитированием

  #3  
Старый 02.10.2008, 18:43
VERte][
Moderator - Level 7
Регистрация: 17.05.2007
Сообщений: 220
Провел на форуме:
3013539

Репутация: 441
По умолчанию

без переменных только битовые операции, по идее будет ппц быстрой, на С)
I=(I>>1)+((I^2)&2);

edit
Даже так можно
I=(I>>1)|((I^2)&2); //чтоб уж точно только битовые операции были

Последний раз редактировалось VERte][; 02.10.2008 в 19:22..
 
Ответить с цитированием

  #4  
Старый 04.10.2008, 10:20
Dian
Участник форума
Регистрация: 02.09.2008
Сообщений: 101
Провел на форуме:
196792

Репутация: 37
По умолчанию

Цитата:
Подскажите как правильно?
Думаю самый правильный вариант - это самый простой вариант:
l ^= 3;
 
Ответить с цитированием

  #5  
Старый 04.10.2008, 18:17
da_ff
Участник форума
Регистрация: 11.07.2006
Сообщений: 125
Провел на форуме:
413927

Репутация: 71
Отправить сообщение для da_ff с помощью ICQ
По умолчанию

еще вариант без условия - это вычесть 2, взять модуль, увеличить на 1
 
Ответить с цитированием

  #6  
Старый 06.10.2008, 10:34
Dian
Участник форума
Регистрация: 02.09.2008
Сообщений: 101
Провел на форуме:
196792

Репутация: 37
По умолчанию

Цитата:
еще вариант без условия - это вычесть 2, взять модуль, увеличить на 1
Тогда лучше уж просто из 3 вычесть
l = 3 - l
 
Ответить с цитированием

  #7  
Старый 06.10.2008, 14:36
da_ff
Участник форума
Регистрация: 11.07.2006
Сообщений: 125
Провел на форуме:
413927

Репутация: 71
Отправить сообщение для da_ff с помощью ICQ
По умолчанию

тогда становится похоже на предыдущий вариант =)

еще вариант: i = (int)i%2+1;
или i = 4 >> i;

Последний раз редактировалось da_ff; 31.10.2008 в 18:57..
 
Ответить с цитированием

  #8  
Старый 06.10.2008, 19:31
UnPazz
Участник форума
Регистрация: 30.08.2008
Сообщений: 128
Провел на форуме:
668329

Репутация: 106
По умолчанию

Цитата:
ТС, где логика, что за язык?
это не язык, а мат.логика - развивает логику. только не понятно, как это все записывать нужно.
через рекурсивность должно решаться.
 
Ответить с цитированием

  #9  
Старый 26.10.2008, 22:05
LynXzp
Участник форума
Регистрация: 21.10.2007
Сообщений: 147
Провел на форуме:
388646

Репутация: 31
По умолчанию

Супер! Гениально (особенно смотря на оригинальные убогие по сравнению с этими решения)
Цитата:
ответ, плз, выложи.
Ответа нет, т.к. это небольшая модификация:
Цитата:
Источник: Datamation, march, 1977
Norman Grabowsky "What kind of programmer are you?"

Этот тест расскажет о вашем программировании больше, чем вы сами
хотели бы знать.

Переменная I представляет собой полное слово с фиксированной
точкой. I принимает значения 1 либо 2. Если I оказалось равным 1,
замените его на 2 и наоборот.
Сравните ваше решение с десятью предложенными. Найдите одно или
несколько наиболее похожих на ваше и прочитайте в разделе "категории"
краткую характеристику. Вы можете кодировать на любом языке, но для
сравнения предпочтительнее всего использовать PL/1.

Р е ш е н и я.

1. IF I='2' THEN I=1;
ELSE I=2;

2. IF I=2 THEN I=1;
IF I=1 THEN I=2;

3. IF I=1 THEN GOTO SKIP;
I=1;
GOTO DONE;
SKIP: I=2;
DONE:

4. J=2;
IF I=2 THEN J=1;
I=J;

5. DECLARE SWITCH LABEL;
. . .
IF I=1 THEN SWITCH=ONE;
IF I=2 THEN SWITCH=TWO;
GOTO SWITCH;
ONE: I=2;
GOTO DONE;
TWO: I=1;
DONE:

6. DECLARE ONETWO(2) FIXED BIN(31) INIT (2,1);
. . .
I=ONETWO(I);

7. I=3-I;

8. I=I-(I/2*2)+1;

9. IF I=2
THEN DO;
I=1;
END;
ELSE DO;
I=2;
END;

10. IF I=1 THEN I=2;
IF I^=2 THEN DO;
PUT LIST('ПЛOXOE I - ЗAMEHEHO HA 1');
I=1;
END;

1. Недавний выпускник школы IBM.
Не более одного из десяти окончивших эту школу знают разницу между
2 и "2". Удивительно, как можно вообще программировать без знания столь
фундаментальной концепции.

2. Преподаватель программирования.
Это решение хуже предыдущего. Много ли, однако, обучающих
программированию сами написали и отладили хотя бы одну программу?

3. Программист на FORTRAN'е, только что окончивший курс PL/1.
Да, старую собаку не научишь новым штукам! Это решение дает верный
результат, но это все, что можно про него сказать.

4. Программист на ассемблере, прошедший тот же курс.
Это решение не является ни прямым ни эффективным. Возможно, это
результат обучения языку PL/1. В нем есть та прелесть, что оно не
содержит самомодифицирующих кодов, но это лишь результат возврата на
землю после изучения языка высокого уровня.

5. Системный аналитик.
Прекрасная иллюстрация для тех, кто думает, что обязанность
системного аналитика - такая разработка алгоритма, в которой окажется
некомпетентен даже хороший и опытный программист.

6. Сomputer Scientist.
Наверное, это самое умное решение. Однако такие "сальто-мортали"
без комментариев оказываются весьма непонятными. Искусство требует
жертв, а жертвой будет тот, кто разбирается в этой программе - может
быть, сам автор через три месяца.

7. Математик.
Очень похоже на предыдущее, столь же элегантно, но опять-таки
встает проблема: как же в нем разобраться?

8. Программист, заботящийся о секретности своей программы.
Вот работа настоящего композитора, и конечно, никаких комментариев.
"Я могла бы придумать и более запутанный способ, как это сделать, - с
гордостью сказала белая королева".

9. Структурный программист.
Каждому ясно, что сие произведение - структурная программа. Иногда
заботятся только о том, сколько колонок надо отступить от края листа.
Настоящее структурное программирование - это прежде всего техника, и
применять ее надо с умом.

10. Хороший программист.
Заметьте, что ни одно из решений 1-9 не проверяло диапазон значений
I, а это весьма опасно. К несчастью, вас не спасут ни структурность, ни
фантастические алгоритмы, ни элегантность решения, если вдруг окажется,
что I первоначально не было равно ни единице ни двойке.
Взял не помню от куда, но это разошлось и можно найти много копий.

Тут нет конечно вариантов 11, 12, 13.. они забыли про НАС

Последний раз редактировалось LynXzp; 26.10.2008 в 22:10..
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Срочно!!! Задачка по мамбе. Оплата 50wmz. Помогите!!! Magicman О Работе 1 13.09.2008 00:13
Задачка на ПАСКАЛЕ нужно срочно решить! prizrakus Болталка 0 20.06.2008 11:15
задачка , помогите решить( grishka Болталка 2 12.12.2007 22:29
Что можно сделать из 2 строчек - задачка sposobny АнтиАдмин 0 21.01.2005 00:48



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ